{"id":237,"date":"2025-08-23T19:04:00","date_gmt":"2025-08-23T19:04:00","guid":{"rendered":"https:\/\/thecyberstaff.com\/?p=237"},"modified":"2025-12-28T19:12:27","modified_gmt":"2025-12-28T19:12:27","slug":"soccer-hackthebox-lab","status":"publish","type":"post","link":"https:\/\/thecyberstaff.com\/?p=237","title":{"rendered":"Soccer- Hackthebox lab"},"content":{"rendered":"\n<p>I began the engagement by performing a full TCP and UDP port scan with&nbsp;<strong>Nmap<\/strong>&nbsp;to identify open services running on the target. A SYN scan was used on all TCP ports for speed and stealth, while service detection and version enumeration were enabled to gather more detailed information. In parallel, a UDP scan was run against the most common ports to check for services that might not be visible over TCP.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"766\" height=\"404\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image.png\" alt=\"\" class=\"wp-image-359\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image.png 766w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-300x158.png 300w\" sizes=\"auto, (max-width: 766px) 100vw, 766px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"712\" height=\"79\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-1.png\" alt=\"\" class=\"wp-image-360\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-1.png 712w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-1-300x33.png 300w\" sizes=\"auto, (max-width: 712px) 100vw, 712px\" \/><\/figure>\n\n\n\n<p>From the Nmap results, I identified a web service running on port&nbsp;<strong>80<\/strong>. Since HackTheBox machines often rely on virtual hosts, I added the domain name&nbsp;<code>soccer.htb<\/code>&nbsp;to my local&nbsp;<code>\/etc\/hosts<\/code>&nbsp;file so I could properly resolve the webpage in a browser.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"694\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-2-1024x694.png\" alt=\"\" class=\"wp-image-361\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-2-1024x694.png 1024w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-2-300x203.png 300w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-2-768x520.png 768w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-2.png 1306w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>With the main page loaded, I moved on to content discovery in case there were hidden paths or admin panels not linked directly on the site. I used&nbsp;<strong>Gobuster<\/strong>&nbsp;with a common wordlist (<code>directory-list-2.3-medium.txt<\/code>) to enumerate directories. The scan revealed an interesting directory: \/tiny<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"834\" height=\"294\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-4.png\" alt=\"\" class=\"wp-image-363\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-4.png 834w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-4-300x106.png 300w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-4-768x271.png 768w\" sizes=\"auto, (max-width: 834px) 100vw, 834px\" \/><\/figure>\n\n\n\n<p>The&nbsp;<code>\/tiny<\/code>&nbsp;directory revealed a&nbsp;<strong>TinyFileManager<\/strong>&nbsp;instance, a lightweight PHP-based file manager. Since these types of applications often ship with weak or publicly known default credentials, I checked the project\u2019s GitHub repository.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"908\" height=\"529\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-5.png\" alt=\"\" class=\"wp-image-364\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-5.png 908w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-5-300x175.png 300w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-5-768x447.png 768w\" sizes=\"auto, (max-width: 908px) 100vw, 908px\" \/><\/figure>\n\n\n\n<p>I found that the default login credentials are often: admin:admin@123<\/p>\n\n\n\n<p>Using these, I successfully authenticated to the file manager interface. Once inside, I explored the available directories and discovered I had permission to upload files.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Reverse Shell Upload<\/h4>\n\n\n\n<p>To gain remote code execution, I generated a&nbsp;<strong>PHP reverse shell<\/strong>&nbsp;payload (using&nbsp;<code>pentestmonkey\/php-reverse-shell.php<\/code>&nbsp;as a template) and uploaded it via the TinyFileManager interface.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"926\" height=\"584\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-6.png\" alt=\"\" class=\"wp-image-365\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-6.png 926w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-6-300x189.png 300w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-6-768x484.png 768w\" sizes=\"auto, (max-width: 926px) 100vw, 926px\" \/><\/figure>\n\n\n\n<p>After pointing the shell\u2019s IP and port to my attacking machine, I set up a listener:&nbsp;<code>nc -lvnp 4444<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"876\" height=\"220\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-7.png\" alt=\"\" class=\"wp-image-366\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-7.png 876w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-7-300x75.png 300w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-7-768x193.png 768w\" sizes=\"auto, (max-width: 876px) 100vw, 876px\" \/><\/figure>\n\n\n\n<p>Once I had a foothold on the system, I enumerated configuration files to uncover additional entry points. While reviewing the&nbsp;<strong>Nginx configuration<\/strong>&nbsp;in&nbsp;<code>\/etc\/nginx\/sites-enabled\/<\/code>, I discovered a second virtual host: soc-player.soccer.htb<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"838\" height=\"488\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-8.png\" alt=\"\" class=\"wp-image-368\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-8.png 838w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-8-300x175.png 300w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-8-768x447.png 768w\" sizes=\"auto, (max-width: 838px) 100vw, 838px\" \/><\/figure>\n\n\n\n<p>I added this new hostname to my&nbsp;<code>\/etc\/hosts<\/code>&nbsp;file. Visiting this endpoint in the browser revealed a custom application that used&nbsp;<strong>WebSockets<\/strong>&nbsp;for client\u2013server communication.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"652\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-9-1024x652.png\" alt=\"\" class=\"wp-image-369\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-9-1024x652.png 1024w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-9-300x191.png 300w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-9-768x489.png 768w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-9.png 1289w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"525\" height=\"324\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-11.png\" alt=\"\" class=\"wp-image-371\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-11.png 525w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-11-300x185.png 300w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">SQL Injection via WebSocket<\/h3>\n\n\n\n<p>During testing, I noticed user input was being sent through WebSocket requests to the backend. By intercepting the traffic (using&nbsp;<strong>Burp Suite<\/strong>), I confirmed that the WebSocket messages were not properly sanitized. Crafting malicious payloads allowed me to test for&nbsp;<strong>SQL Injection<\/strong>. Simple injection tests such as: \u2018 OR 1=1\u2013 revealed abnormal responses from the application, confirming that the backend database queries were injectable.<\/p>\n\n\n\n<p>This vulnerability provided a path to enumerate the underlying database and extract sensitive information through the WebSocket channel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Automating Blind SQL Injection over WebSockets<\/h3>\n\n\n\n<p>I came across a blog post by Rayhan0x01 that exactly addresses the challenge of exploiting blind SQL injection through WebSockets using&nbsp;<strong>SQLMap<\/strong>, by creating a middleware HTTP server to relay payloads. This method is ideal when traditional tools like SQLMap can\u2019t natively support the WebSocket protocol&nbsp;<a href=\"https:\/\/rayhan0x01.github.io\/ctf\/2021\/04\/02\/blind-sqli-over-websocket-automation.html?source=post_page-----7a901281f7bf---------------------------------------&amp;utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">Rayhan0x01\u2019s Blog Post<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Reading the Approach<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Middleware Server Concept<\/strong><br>The idea is to stand up a simple HTTP server (e.g., in Python) that:\n<ul class=\"wp-block-list\">\n<li>Receives SQLMap payloads via an HTTP GET parameter.<\/li>\n\n\n\n<li>Formats those payloads into the JSON expected by the WebSocket endpoint.<\/li>\n\n\n\n<li>Sends the payload over a WebSocket connection to the target application.<\/li>\n\n\n\n<li>Relays the response back to SQLMap through HTTP.<br>This essentially \u201cbridges\u201d SQLMap to the WebSocket-based injection point.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"982\" height=\"502\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-12.png\" alt=\"\" class=\"wp-image-372\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-12.png 982w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-12-300x153.png 300w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-12-768x393.png 768w\" sizes=\"auto, (max-width: 982px) 100vw, 982px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Database Enumeration with SQLMap<\/h3>\n\n\n\n<p>With the WebSocket-to-HTTP relay server in place, I began enumerating the backend database using&nbsp;<strong>SQLMap<\/strong>. To keep the process fully automated, I ran with the&nbsp;<code>--batch<\/code>&nbsp;flag.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-14.png\" alt=\"\" class=\"wp-image-374\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-14.png 640w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-14-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>First, I enumerated the available databases:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"226\" height=\"104\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-15.png\" alt=\"\" class=\"wp-image-375\"\/><\/figure>\n\n\n\n<p>Next, I targeted the identified and dumped the database to extract its contents. SQLMap dumped several tables.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-16.png\" alt=\"\" class=\"wp-image-376\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-16.png 640w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-16-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>Among them, a&nbsp;<strong>users<\/strong>&nbsp;table contained plaintext credentials. One set of credentials stood out, belonging to a&nbsp;<strong>player<\/strong>&nbsp;account:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"507\" height=\"132\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-18.png\" alt=\"\" class=\"wp-image-378\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-18.png 507w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-18-300x78.png 300w\" sizes=\"auto, (max-width: 507px) 100vw, 507px\" \/><\/figure>\n\n\n\n<p>With the credentials for the&nbsp;<strong>player<\/strong>&nbsp;account recovered from the&nbsp;<code>soccer_db<\/code>&nbsp;dump, I tested them against common remote access services on the target. Since Nmap had earlier confirmed that port&nbsp;<strong>22 (SSH)<\/strong>&nbsp;was open, I attempted to authenticate over SSH.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"654\" height=\"570\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-19.png\" alt=\"\" class=\"wp-image-379\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-19.png 654w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-19-300x261.png 300w\" sizes=\"auto, (max-width: 654px) 100vw, 654px\" \/><\/figure>\n\n\n\n<p>Once I had a foothold as the&nbsp;<strong>player<\/strong>&nbsp;user, I began enumerating privilege escalation paths. Alongside the usual checks (<code>sudo -l<\/code>, kernel exploits, cron jobs, SUID binaries, etc.), I ran linpeas and found a vulnerability in the system configuration for&nbsp;<strong>doas<\/strong>, a minimal alternative to&nbsp;<code>sudo<\/code>&nbsp;often used on BSD-style systems but occasionally present on Linux.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"716\" height=\"215\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-22.png\" alt=\"\" class=\"wp-image-382\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-22.png 716w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-22-300x90.png 300w\" sizes=\"auto, (max-width: 716px) 100vw, 716px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Privilege Escalation \u2013 Abusing doas with dstat<\/h3>\n\n\n\n<p>Unlike&nbsp;<code>sudo<\/code>, doas is a simpler privilege management tool that can allow users to execute commands as other accounts. Checking its configuration revealed that the&nbsp;<code>player<\/code>&nbsp;user could run&nbsp;<code>\/usr\/bin\/dstat<\/code>&nbsp;as root.<\/p>\n\n\n\n<p><code>dstat<\/code>&nbsp;supports loading custom&nbsp;<strong>Python plugins<\/strong>&nbsp;from&nbsp;<code>\/usr\/local\/share\/dstat\/<\/code>. This presented a clear opportunity to execute arbitrary code as root by creating a malicious plugin.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"164\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-23-1024x164.png\" alt=\"\" class=\"wp-image-383\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-23-1024x164.png 1024w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-23-300x48.png 300w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-23-768x123.png 768w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-23.png 1463w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Crafting a Malicious dstat Plugin<\/h4>\n\n\n\n<p>From the&nbsp;<code>player<\/code>&nbsp;account, I created a Python plugin file (<code>dstat_test2.py<\/code>) that modified permissions on&nbsp;<code>\/bin\/bash<\/code>&nbsp;to set the SUID bit. Although the plugin threw a warning about a missing definition, it executed successfully and set the SUID bit on&nbsp;<code>\/bin\/bash<\/code>. With&nbsp;<code>\/bin\/bash<\/code>&nbsp;now running as root due to the SUID bit, I simply executed: \/bin\/bash -p<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"160\" src=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-24-1024x160.png\" alt=\"\" class=\"wp-image-384\" srcset=\"https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-24-1024x160.png 1024w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-24-300x47.png 300w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-24-768x120.png 768w, https:\/\/thecyberstaff.com\/wp-content\/uploads\/2025\/08\/image-24.png 1181w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The command dropped me into a root shell fully compromising the box.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Exploitation Path<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enumeration of web service<\/li>\n\n\n\n<li>Exploiting TinyFileManager<\/li>\n\n\n\n<li>Pivot to&nbsp;<code>soc-player.soccer.htb<\/code><\/li>\n\n\n\n<li>SQL injection over WebSockets \u2192 dumped&nbsp;<code>soccer_db<\/code><\/li>\n\n\n\n<li>SSH access as&nbsp;<strong>player<\/strong><\/li>\n\n\n\n<li>Privilege escalation via malicious&nbsp;<strong>dstat<\/strong>&nbsp;plugin run with&nbsp;<code>doas<\/code><\/li>\n\n\n\n<li>Root shell and full compromise<\/li>\n<\/ul>\n\n\n\n<p>This machine highlights the importance of&nbsp;<strong>defense in depth<\/strong>: disabling or hardening default credentials, sanitizing user input (especially in WebSocket applications), and limiting file upload functionality are critical to reducing exposure. Administrators should audit privilege escalation vectors such as&nbsp;<code>doas<\/code>&nbsp;or misconfigured applications like&nbsp;<code>dstat<\/code>, restrict plugin paths, and regularly monitor for binaries with SUID permissions. Enforcing the principle of least privilege, keeping web applications updated, and applying secure coding practices would have mitigated every stage of this attack chain.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I began the engagement by performing a full TCP and UDP port scan with&nbsp;Nmap&nbsp;to identify open services running on the target. A SYN scan was used on all TCP ports for speed and stealth, while service detection and version enumeration were enabled to gather more detailed information. In parallel, a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":238,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4],"tags":[],"class_list":["post-237","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cybersecurity","category-pentesting"],"brizy_media":[],"_links":{"self":[{"href":"https:\/\/thecyberstaff.com\/index.php?rest_route=\/wp\/v2\/posts\/237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecyberstaff.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecyberstaff.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecyberstaff.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thecyberstaff.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=237"}],"version-history":[{"count":2,"href":"https:\/\/thecyberstaff.com\/index.php?rest_route=\/wp\/v2\/posts\/237\/revisions"}],"predecessor-version":[{"id":385,"href":"https:\/\/thecyberstaff.com\/index.php?rest_route=\/wp\/v2\/posts\/237\/revisions\/385"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecyberstaff.com\/index.php?rest_route=\/wp\/v2\/media\/238"}],"wp:attachment":[{"href":"https:\/\/thecyberstaff.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecyberstaff.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecyberstaff.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}