Mardi 25 décembre 2007

Un essai datant de 2004 d'un forgeur de requétes HTTP pour tester la sécu d'un Serveur Web.
Un proto réalisé à l'époque en RapidQ.
Il marche pas trop mal, pour des tests manuels, en mode Snooze.
Voila le source:
' [SYD] HTTP Lab Tool
' 2004 fenryrlab
' Not for distribution.
' Thx to BlogSploits
$APPTYPE GUI
$TYPECHECK ON
$INCLUDE "RAPIDQ.INC"
DIM Socket AS QSOCKET
DIM Sock AS INTEGER
DIM PortNum AS INTEGER
DIM HttpMethod AS STRING
DIM ERROR404 AS STRING
DIM SUCCESS200 AS STRING
DIM FORBIDDEN403 AS STRING
DIM NEEDAUTH401 AS STRING
DIM INTERNAL500 AS STRING
DIM UNKMETHOD501 AS STRING
ERROR404="HTTP/1.1 404"
SUCCESS200="HTTP/1.1 200"
FORBIDDEN403="HTTP/1.1 403"
NEEDAUTH401="HTTP/1.1 200"
INTERNAL500="HTTP/1.1 500"
UNKMETHOD501="HTTP/1.1 501"
DECLARE SUB GrabberClick
CREATE Form AS QFORM
Caption = "Syd:Lost Highway to Hell -=FenryrLab Internal Proto - Not for Distribution=-"
Width = 640
Height = 480
Center
CREATE AdresseLabel AS QLABEL
Caption = "Adress"
Left = 82
Top = 27
Width = 72
Height = 21
Alignment = 2
END CREATE
CREATE AdressEdit AS QEDIT
Text = "127.0.0.1"
Left = 159
Top = 28
END CREATE
CREATE PathComboBox AS QCOMBOBOX
AddItems "/", _
"/index.html", _
"/index.asp", _
"/index.php", _
"/default.asp", _
[On place ici les Tests que l'on veut...]
"/cgi-bin/bb-hist.sh?HISTFILE=/home/*", _
"/cgi-bin/mrtg.cgi?cfg=../../../../../../../../etc/hosts", _
"/cgi-bin/syd.pl"
Text = "/"
Left = 393
Top = 24
TabOrder = 4
END CREATE
CREATE MethodComboBox AS QCOMBOBOX
AddItems "GET", _
"HEAD", _
"POST", _
"PUT", _
"OPTIONS", _
"TRACE", _
"TRACK", _
"CONNECT", _
"LOCK", _
"MKCOL", _
"PROPFIND", _
"PROPPATCH", _
"SEARCH", _
"SUBSCRIBE", _
"UNLOCK", _
"INDEX", _
"LIST", _
"get", _
"", _
"SYD"
Text = "GET"
Left = 393
Top = 55
TabOrder = 4
END CREATE
CREATE PortComboBox AS QCOMBOBOX
AddItems "80", _
"8080", _
"8081", _
"8088", _
"8888", _
"8090", _
"8100", _
"1080", _
"3128", _
"4711", _
"7001", _
"7777", _
"4000", _
"2301", _
"81", _
"82", _
"83", _
"84", _
"49152"
Text = "80"
Left = 393
Top = 86
TabOrder = 5
END CREATE
CREATE TerminatorComboBox AS QCOMBOBOX
AddItems " HTTP/1.0", _
" HTTP/1.1", _
" HTTP/0.9", _
" HTTP/2.0", _
" HTTP/0.0", _
" HTTP/", _
" HTTP/1.0%00", _
" HTTP/%00", _
" HTTP/1.0 Cookie: =", _
" HTTP/1.0 Translate: f", _
"", _
" www.yahoo.com:80 HTTP/1.0", _
" SYD/1.0"
Text = " HTTP/1.0"
Left = 393
Top = 117
TabOrder = 5
END CREATE
CREATE GrabButton AS QBUTTON
Caption = "Grab"
Left = 307
Top = 27
TabOrder = 2
OnClick = GrabberClick
END CREATE
CREATE ResultWindow AS QRICHEDIT
Left = 79
Top = 58
Width = 305
Height = 273
TabOrder = 3
END CREATE
END CREATE
Form.ShowModal
SUB GrabberClick
DIM Content AS STRING
DIM BytesRead AS LONG
DIM HTTPid AS STRING
DIM Server AS STRING, PathToFile AS STRING
DIM I AS INTEGER
PathToFile = ""
Server = AdressEdit.Text
PathTofile = PathComboBox.Text
PortNum = VAL(PortComboBox.Text)
HttpMethod = MethodComboBox.Text
HTTPid = TerminatorComboBox.Text
Sock = Socket.Connect(Server, PortNum)
IF Sock < 0 THEN
ShowMessage "Socket ERROR"
EXIT SUB
END IF
'-- Send request, end with a blank line.
Socket.WriteLine(Sock, HttpMethod+" "+PathToFile+HTTPid)
''-- This is Bowling, not Viet-Nam: They are rules.
Socket.WriteLine(Sock, "HOST "+Server+":"+STR$(PortNum))
Socket.WriteLine(Sock, "")
Content = ""
BytesRead = 0
DO
Content = Content + Socket.Read(Sock, 32000) '' 32000 bytes... whatever they give us
BytesRead = BytesRead + Socket.Transferred
LOOP UNTIL Socket.Transferred = 0
ResultWindow.Clear
IF INSTR(Content,ERROR404)THEN
ResultWindow.Text = "NOT FOUND"
ELSE
ResultWindow.Text = Content
END IF
Socket.Close
END SUB
par Franck Balmer
publié dans :
Bidouille Grenouille
ajouter un commentaire commentaires (0) créer un trackback recommander
ajouter un commentaire commentaires (0) créer un trackback recommander






















Commentaires