Lo que no entiendo es por ejemplo cómo podría cambiar un emoticón del foro. No existe la opción de hacerlo, e incluso si yo creara una orden de hacerlo, no tengo forma de hacerlo llegar, porque no existe un formulario digamos con el cual me vayan a hacer caso. Otra cosa es cargar la página y editarla, yo vería algo distinto, pero la realidad seguiría siendo otra.
La web no funciona mágicamente. Tu navegador habla con un PC diciéndole: GET foro.elhacker.net
Entonces el PC del foro(servidor) ejecuta un código PHP que genera un código HTML. Este código te lo manda al navegador. El navegador utiliza un parser y genera lo que ves en base al código.
Cómo podrías remplazar un icono del foro hackeándolo para todo el mundo viese el cambio?
Por ejemplo este icono:
está alohado en la url
https://foro.elhacker.net/Smileys/fantasmas/tongue.gif podrías cambiarlo por cualquier imagen, por ejemplo esta
que está en la siguiente url
https://google.com/favicon.icoExisten muchos ataques que te pueden permitir hacer este cambio:
Inyección de HTML:
Imagínate que este texto que lees se intepretase en tu navegador como código HTML en lugar de como texto. Podrías llegar a comentar el link original inyectándole comentarios:
<!--
<img src="https://foro.elhacker.net/Smileys/fantasmas/tongue.gif">
-->
Una vez comentado, no se vería el elemento comentado y podrías añadir el tuyo antes o después del comentario para que tu icono ocupe el lugar:
<!--
<img src="https://foro.elhacker.net/Smileys/fantasmas/tongue.gif">
-->
<img src="https://google.com/favicon.ico">
Inyección de javascript:
Si este texto fuese interpretado por tu navegador como código javascript, podría obtener el elemento html y remplazarle el atributo src actual (el link al fantasma con la lengua) por el link al icono de google:
<script>document.querySelectorAll("img[src='https://foro.elhacker.net/Smileys/fantasmas/tongue.gif']")[0].src="https://google.com/favicon.ico"</script>
Manipulación de cabeceras:
Cuando tu navegador y el PC del foro establecen una comunicación, utilizan el protocolo HTTP (míratelo en wikipedia). El protocolo HTTP permite compartir información a través de cabeceras, por ejemplo el servidor te indica la fecha con:
date: Sun, 20 Sep 2020 07:24:02 GMT
* Puedes verlas con burp suite o con el comando curl -I
https://foro.elhacker.netTanto tu navegador como el PC del foro se envían cabecerss, pero también lo haces con otros PCs que te indique el código del foro o las propias cabeceras. Por ejemplo para ver mi perfil en el foro estás haciendo una petición con cabeceras a youtube.com para ver la imagen de del video que puse de Queen.
A parte, el foro para optimizarse y protegerse no expone su PC directamente a ti, si no que tu hablas con cloudflare, y es él quien habla con el PC del foro. Podría ser que cloudflare tenga 3 Pcs distintos a los que envia la información y este último al foro. De esta forma para obtener la web están transmitiendo lo que tu mandaste entre varios equipos. Esto posibilita desincronizaciones entre ellos, sobre todo si el PC del foro estuviese mal configurado.
Existen 2 cabeceras distintas que pueden indicar donde empiezan las cabeceras. Si 2 de estos Pcs interpretaran el mismo mensaje de forma distinta, es decir, uno toma una cabecera como indicador, y otro toma la otra, esto te posibilitaría a engañar a los Pcs para que piensen que se acabó tu comunicación y empezó otra. Entonces, cuando otro usuario del foro pida la página, se van a juntar en el mismo Pc un trozo de tu petición (tus cabeceras) y la petición de otro usuario.
El resultado es similar al ejemplo del comentario de HTML.
Subida de archivos + Path traversal:
Si el foro te dejase subir archivos y crease un espacio para ti tal que:
https://foro.elhacker.net/Tachikomaia/nombreDeTuArchivoSi no filtrase caracteres en los nombres de usuario, podrías crear una cuenta con el nombre ../
Si subieses un archivo llamado index.html el archivo estaría en:
https://foro.elhacker.net/../index.htmlLo mismo pasa con el propio nombre del archivo, de una carpeta, de una sección del foro...
Asique otra vez más podrías remplazar el icono subiendo un nuevo index.html
Muchos defaces antiguos se producían así.
Inyección de php:
Si puedes subir imágenes o archivos con doble extensiones, por ejemplo miCodigo.php.jpg puedes engañar a filtros cutres y conseguir que se ejecute el código, por lo que tranquilamente puedes cambiar el icono por ejemplo metiendo otra vez javascript.
Inyección en la base de datos:
Si el código php está haciendo una consulta a la base de datos para obetener los enlaces de los fantasmas o esta es accesible de alguna forma (por ejemplo ssrf a la red interna) y no filtra bien las consultas, puedes modificar el enlace guardado y apuntarlo al icono de google.
MITM:
Se puede realizar de diversas formas. La más común es alguien en el wi-fi o un exploit del router. Si sabes que yo tengo un router vulnerable y el foro no tuviese las medidas de seguridad disponibles, tu podrías enviarme un link para cambiarme la IP del servidor DNS de mi router por la IPnde tu servidor DNS. Cuando yo intente entrar al foro, tu servidor DNS me enviaría a un servidor web imitando el del foro o al servidor real del foro. Esto te permitiría modificar el icono.
A parte de estas formas, hay muchísimas otras.
Si quieres aprender haz páginas de retos de hacking, lee libros, programa apps vulnerables, exploits, fixes...
PD: El formulario puedes crearlo tú en un .html o desde la consola (F12) y enviarlo al foro. Para ello debes revisar los parámetros que acepta el servidor mirando el código y las peticiones con el Burp Suite. Si estás en Android también puedes modificar la web actual a través de la barra de direcciones con el pseudoprotocolo.
El pseudoprotocolo es de lo que más uso yo para hacking web.