Escolar Documentos
Profissional Documentos
Cultura Documentos
_ _ _ _
(_)_ __ (_) ___ ___| |_(_) ___ _ __
| | '_ \ | |/ _ \/ __| __| |/ _ \| '_ \
| | | | || | __/ (__| |_| | (_) | | | |
|_|_| |_|/ |\___|\___|\__|_|\___/|_| |_|
|__/
Laboratorio
1, Configuracion de escenario
-PHP5
-Apache2
-Configuracion
directorio-----/etc/apache2/httpd.conf
/etc/init.d/apache2 restart
#Descargar Add-on
https://addons.mozilla.org/en-US/firefox/addon/3829/
2, Explicacion
Codigo Vulnerable para hacer XSS por medio de inyeccion por Headers, Este
script lo que hace es pedir una solicitud de direccion ip
($_SERVER['REMOTE_ADDR']) , y otra solicitud al identificacion al navegador
que es llamado user Agent ($_SERVER['HTTP_USER_AGENT']), despues de ello lo
que hace es imprimir datos en pantalla.
#Codigo
<?PHP
/*Obtener IP y mostrarla*/
$ip = $_SERVER['REMOTE_ADDR'];
$host = $_SERVER['HTTP_USER_AGENT'];
?>
Vulnerablidad:
Cuando el scrip recibe el user agent del navegador, lo que hace es asignarlo
como variable llamada $host y luego imprimirla. Cuando hacemos una peticion
GET a la web donde esta este script seria algo asi
Peticion
http://127.0.0.1/ip.php
----------------------------------------------------------------------------------
Respuesta
HTTP/1.1 200 OK
Date: Thu, 27 May 2010 08:17:22 GMT
Server: Apache/2.2.15 (Debian)
X-Powered-By: PHP/5.3.2-1
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 160
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
Content-Type: text/html
3, Practica
2. Hacer una peticion GET al host (una peticion GET es equivalente a ingresar
por el navegador y darle enter, el GET lo que hace es leer los recursos de la
pagina que le definamos.
4. aquí es donde viene la modificacion del User Agent para colocarle el script
o la etiqueta html para poder explotar el fallo, entonces en la ventana que
sale alli podremos modificar la peticion completa si queremos pero solo vamos
a modificar el User Agent.
Modificacion
y le damos repitir y quedara asi..... Antes
y Despues
Como vemos donde esta la variable $host en el ip.php contenia antes el user
Agent Original, pero despues que modificamos ya no esta el valor que antes
tenia.
Host: 127.0.0.1
User-Agent: <h1><img
src=http://images3.wikia.nocookie.net/__cb20070225072817/uncyclopedia/images/8
/81/PWNED!.jpg><h1><h1>XSS Progresive Death </h1>
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=baln5g2nca6e2cecopuml75ts5; logged=1
3. Comentarios
Bueno este Bug es algo viejo el fin de este lab es poder aprender el
funcionamiento del HTTP por debajo para poder analizar y realizar este tipo
metodos, el Inyection HTTP headers no esta totalmente obsolto, todavia sirve para
muchas cosas mas, solo es cuestion de tener imaginacion.
4. Links de interes
http://en.wikipedia.org/wiki/HTTP
</Progresive Death>
</charsecurity.blogspot.com>