Cómo enviar solicitudes GET / POST sin encabezado ni información de agente

5

Quiero probar nuestro sistema de prevención de DOS contra solicitudes http que no tienen información de encabezado y agente. ¿Hay alguna herramienta que pueda hacer eso? He intentado el asedio con este comando

siege -c 3 -b -H "Host: " -A ""  http://10.0.1.2/

Este comando envía solicitudes con valores de host y agente vacíos. Lo que quiero es enviar solicitudes sin definir los valores de host y agente.

Gracias por cualquier consejo ...

    
pregunta ibrahim 07.01.2014 - 14:56
fuente

3 respuestas

6

En el peor de los casos, puede usar netcat .

nc example.com 80 < < http_message_file

donde example.com es el host al que desea conectarse, 80 es el puerto al que desea conectarse (elegí 80 porque es el puerto típico del servidor HTTP) y http_message_file contiene la solicitud HTTP exacta desea enviar, como

GET /path/to/resource HTTP/1.1
Host: example.com
    
respondido por el atk 07.01.2014 - 22:45
fuente
14

Me sorprende que nadie haya mencionado la forma más fácil de hacerlo, con curl :

curl -H "User-Agent:" -H "Host:" http://10.0.1.2/

El argumento -H se puede usar para establecer encabezados personalizados o eliminarlos al no establecer ningún valor en ellos.

Ejemplo de lo que hace ese comando en mi sitio, con -v agregado para el detalle:

andre@network ~ % curl -H "User-Agent:" -H "Host:" http://andredaniel.me -v
* Rebuilt URL to: http://andredaniel.me/
* Hostname was NOT found in DNS cache
*   Trying 2a01:7e00::f03c:91ff:fe89:63c8...
* connect to 2a01:7e00::f03c:91ff:fe89:63c8 port 80 failed: Connection refused
*   Trying 85.159.208.85...
* Connected to andredaniel.me (85.159.208.85) port 80 (#0)
> GET / HTTP/1.1
> Accept: */*
>
< HTTP/1.1 400 Bad Request
< Server: nginx/1.6.2
< Date: Mon, 29 Dec 2014 13:09:44 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 172
< Connection: close
<
[page contents truncated]

Como puede ver, faltan los encabezados del host y del agente de usuario y al servidor web no le gusta mucho porque uso hosts virtuales y el encabezado del host es esencial en ese caso.

    
respondido por el user42178 29.12.2014 - 14:13
fuente
4

No sé si esto funcionará para ti, pero ¿por qué no? Puede usar python fácilmente para enviar solicitudes cuando lo desee:

import urllib
import urllib2

url = 'http://www.someserver.com/cgi-bin/register.cgi'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'name' : 'Michael Foord',
          'location' : 'Northampton',
          'language' : 'Python' }
headers = { 'User-Agent' : user_agent }

data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()

Desde Python doc: enlace

Intenta hacer lo mismo pero con user_agent y Headers vacíos, funcionó en mi pequeña prueba.

Aquí está el fragmento que probé:

import urllib
import urllib2

url = 'http://www.someserver.com/cgi-bin/register.cgi'
user_agent = ''
values = ''
headers = { '' : '' }

data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()
    
respondido por el Boogy 07.01.2014 - 15:33
fuente

Lea otras preguntas en las etiquetas