#!/bin/bash
# Simulated CVE-2014-6271 (shellshock) target.
# Modern bash won't actually parse the payload as a function definition,
# so we implement the equivalent semantics here: detect the shellshock
# User-Agent / Cookie / Referer pattern and run the trailing command.

echo "Content-Type: text/plain"
echo ""

exec_payload() {
    local raw="$1"
    # Strip the function-def prefix "() { :;}; " or "() { :; };"
    local cmd="${raw#*};}"
    cmd="${cmd# }"
    [ -z "$cmd" ] && return
    # Run each semicolon-separated piece.
    eval "$cmd" 2>/dev/null
}

for h in "$HTTP_USER_AGENT" "$HTTP_COOKIE" "$HTTP_REFERER"; do
    case "$h" in
        *"() { :"*) exec_payload "$h" ;;
    esac
done

echo "bash CGI test script - newploit"
echo "args: $@"
echo "query: $QUERY_STRING"
echo "remote: $REMOTE_ADDR"
