Come inviare richieste GET / POST senza informazioni sull'intestazione e sull'agente

5

Voglio testare il nostro sistema di prevenzione DOS contro le richieste http che non hanno informazioni sull'intestazione e sull'agente. C'è qualche strumento che posso fare. Ho provato l'assedio con questo comando

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

Questo comando invia richieste con valori di host e agent vuoti. Quello che voglio è inviare richieste senza definire i valori di host e agent.

Grazie per qualsiasi consiglio ...

    
posta ibrahim 07.01.2014 - 14:56
fonte

3 risposte

6

Nel peggiore dei casi, è possibile utilizzare netcat .

nc example.com 80 < < http_message_file

dove example.com è l'host a cui si desidera connettersi, 80 è la porta a cui si desidera connettersi (ho scelto 80 poiché è la tipica porta del server HTTP) e http_message_file contiene l'esatta richiesta HTTP vuoi inviare, ad esempio

GET /path/to/resource HTTP/1.1
Host: example.com
    
risposta data 07.01.2014 - 22:45
fonte
14

Sono sorpreso che nessuno abbia menzionato il modo più semplice per farlo, con curl :

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

L'argomento -H può essere utilizzato per impostare intestazioni personalizzate o per rimuoverle senza impostare alcun valore su di esse.

Esempio di ciò che questo comando fa sul mio sito, con -v aggiunto per la verbosità:

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]

Come puoi vedere, mancano entrambe le intestazioni host e user-agent e il server web non mi piace molto perché utilizzo host virtuali e l'intestazione host è essenziale in quel caso.

    
risposta data 29.12.2014 - 14:13
fonte
4

Non so se questo funzionerà per te, ma perché no. Puoi facilmente usare python per inviare richieste come desideri in questo modo:

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()

Da python doc: link

Prova a fare la stessa cosa ma con user_agent e intestazioni vuote, ha funzionato nel mio piccolo test.

Ecco lo snippet che ho provato:

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()
    
risposta data 07.01.2014 - 15:33
fonte

Leggi altre domande sui tag