jueves, 4 de septiembre de 2008

HTTP Headers I : Métodos HTTP

Saludos!

Bueno varios lectores del blog me han pedido que hiciera un par de publicaciones acerca de los HTTP Headers, y de técnicas de explotación, y vulnerabilidades, relacionados con ellos (han sido Seth y Em3trix quienes me lo han pedido). Voy a intentar hacer dos o tres papers acerca del tema (uno sobre métodos HTTP y otro sobre HTTP headers injections, tanto de SQL como de PHP y quizás un tercero sobre CR/LF injections).


Para evitar volver a tener que escribir una introducción hacia las cabeceras HTTP, pido la lectura de mi anterior paper sobre el tema, HTTP METHODS: Subiendo shell con PUT.


Si ya habeis leido ese paper, podemos continuar. Los métodos GET, POST y PUT, no los voy a explicar, puesto que los dos primeros no merecen la pena desde el punto de vista de realizar una auditoría, y el tercero ya lo vimos en profundiad en mi otro paper.


Empecemos viendo el método HEAD. Una cabecera que lleve ese método, tendrá una respuesta por parte del servidor como si se tratase de un GET, pero en vez de mostrar el contenido del archivo al que le hacemos "GET", loq ue mostrará será la información del servidor, incluyendo alguna información más, como por ejemplo la última vez que fue modificado el servidor.

Si leímos mi anterior paper, ya sabemos como sniffear las cabeceras y modificarlas, ahora usemos eso para poner HEAD:


HEAD / HTTP\1.1
Host:
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16
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: 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


Y obtenemos como respuesta:


HTTP/1.x 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 04 Sep 2008 13:32:36 GMT
X-Powered-By: ASP.NET
Content-Length: 35929
Content-Type: text/html
Set-Cookie: ASPSESSIONIDSCQRSQTR=JFEIDLOBPNNHMEJHJDAPLNBK; path=/
Cache-Control: private


Cuando usamos un método que no es de los habituales (GET y POST) podemos obtener varios tipos de respuestas. Si todo ha ido bien, el servidor nos responderá con un OK, cuyo código es 200, en cambio si ha habido alguna complicación por parte del cliente (acceso restringido, no existe, o el método no esta allowed) la respuesta será de erro 4xx, por ejemplo, Method not allowed tiene como código 405, acceso restringido es 403, archivo no encotnrado en el servidor 404, etc. Cuando el error es interno del servidor, el error es un 5xx.

Bien, HEAD no tiene más complicación... ahora sigamos viendo otros métodos. El método DELETE, como su propio nombre indica, es el encargado de borrar un determinado archivo que indiquemos en la cabecera... Baste decir que no siempre que esté permitido tendremos permiso para hacerlo, a veces (como bien me recordó p0lk22 en un post de #RE) tenemos que crear algún tipo de certificado. La estructura de la cabecera a construir sería:


DELETE /index.php HTTP\1.1
Host:
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16
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: 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


Donde Index.php sería el archivo que deseamos borrar.

Despues hay muuuchos más métodos (Copy, Move, Propfind...) pero realmente que nos hagan falta conocer, creo que únicamente TRACE.

El método TRACE actúa de espejo, haciendo que el servidor responda lo mismo que le hemos mandado... Normalmente tiene cierta relación con los XSS, de hecho con TRACE hay una variante de ese método, el llamado XST. Para serles sincero nunca he conseguido explotar algo usando TRACE, así que no puedo explicarles algo más de este método... Pero sí que puedo dejarles un paper muy interesante: http://www.cgisecurity.com/whitehat-mirror/WH-WhitePaper_XST_ebook.pdf
5 0verl0ad Labs: HTTP Headers I : Métodos HTTP Saludos! Bueno varios lectores del blog me han pedido que hiciera un par de publicaciones acerca de los HTTP Headers, y de técnicas de ex...

1 comentario:

Poker Casino dijo...
Este comentario ha sido eliminado por un administrador del blog.
< >