Php 5.3.10 Exploit [DIRECT]
Disclaimer: This post is for educational purposes and authorized security testing only. Exploiting systems you do not own is illegal.
Because PHP 5.3.10 did not properly filter the query string, an attacker could inject flags directly into the PHP binary. The most famous primitive in this exploit is the -s flag. The -s flag tells PHP to display the source code of the script in highlighted HTML (like show_source() ).
When PHP is run in CGI mode (using php-cgi ), the web server passes request data to the PHP binary via command-line arguments. Normally, a request to index.php translates to: php 5.3.10 exploit
POST /?-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a//input HTTP/1.1 Host: vulnerable.com Content-Type: application/x-www-form-urlencoded Content-Length: 25 <?php system('id'); ?>
/usr/bin/php-cgi -s Because there is no script specified, PHP defaults to showing the source code of the standard input (the HTTP body). By sending a request with ? and -s , the attacker effectively turns the server into a file reader. Disclaimer: This post is for educational purposes and
While this specific vector is mostly extinct in modern cloud infrastructure, it lives on in embedded systems and legacy internal networks. If you find this during a penetration test, you have effectively found a "Golden Ticket" to execute system commands.
GET /?-s HTTP/1.1 Host: vulnerable.com The server tries to execute: The most famous primitive in this exploit is the -s flag
The attacker sees the raw PHP source code of the application, including database passwords and API keys. The Grand Prize: Arbitrary Code Execution ( -d and -B ) Seeing source code is bad, but executing code is worse. The -d flag allows you to set php.ini directives on the fly. Combined with -B (Run code before processing input), we get RCE.