Dit WordPress werd blog binnendrongen in een beveiligd computersysteem voor weinig uren op 24 December (aardige aanwezige Kerstmis!) van Rusland. De hakker exploiteerde verscheidene kwetsbaarheid WordPress in administratieve manuscripten om volledige toegang tot de website (zoals toegelaten aan apachegebruiker), met inbegrip van de capaciteit te verkrijgen om manuscripten te uploaden in werking te stellen, om het even welk die dossier te schrappen door apachegebruiker wordt bezeten, het dossier en de folders enz. te bekijken. Dit is een volledige onthulling op hoe de plaats binnendrongen in een beveiligd computersysteem en hoe ik ontdekte en de houwer samen met weinig commentaren op de staat van veiligheid WordPress verwijderde. Ik voegde een WordPress toe plugin en maakte wijzigingen om zulk het binnendringen in een beveiligd computersysteem pogingen te verhinderen gebruikend voortaan WordPress. Dit is een must die voor bloggers WordPress wordt gelezen.


Hoe plaats het binnendringen in een beveiligd computersysteem werd ontdekt?

De website was normaal. Nochtans toen ik probeerde om een post te publiceren of te bewaren, toonde het eenvoudig een blanco pagina. De post werd nooit gepubliceerd of zelfs werd bewaard. Ik wist iets verkeerd was.

Mijn eerste verdachte was paar van plugins dat externe servers contacteerde nadat publiceer. Ik maakte hen onbruikbaar. Ik maakte ook de ping plaatsen onbruikbaar aangezien zij soms gekend waren om problemen te veroorzaken. Niets van geholpen dat. Ik maakte progressief alle plugins onbruikbaar. Zelfs met alle pluginsgehandicapten, zou de post niet publiceren. Ik werd verlaten met slechts één optie.

Ik besliste code te vinden WordPress om de oorzaak van fout te weten te komen. Ik begon met het dossier voor postvoorlegging - post.php. Ik vond iets opschrikkend met code WordPress die ernstig zijn veiligheid, een ontsierde ontwerpkeus maar later meer op het ondermijnt. post.php de vraag admin.php wat wp-config.php roept die beurtelings wp-montages roept wp-settings.php is een interessant dossier. Dit dossier is niet alleen over montages. Het laadt ton dossiers, laadt en voert plugins en meer uit. Het probleem was, zoals ik oorspronkelijk verdacht, in plugins maar die? De code die plugins in WordPress laadt is:


als (get_option (active_plugins)) {
	$current_plugins = get_option (active_plugins);
	als (is_array ($current_plugins)) {
		foreach ($current_plugins als $plugin) {
			als (! = file_exists $plugin && (ABSPATH. PLUGINDIR. /. $plugin))
				include_once (ABSPATH. PLUGINDIR. /. $plugin);
		}
	}
}

Actieve plugins, aangezien u kunt zien, worden geladen direct met include_once. Hoe vind ik plugin die terwijl de lading het manuscript om veroorzaakt te sterven?
Ik voegde eenvoudige syslog () verklaringen before and after plugin toe. Nochtans produceerde het overvloedige output van al verkeer.
Herinner me Ik op een zwaar handel gedreven levende plaats zuiverde. Zo toe voegde ik in post.php bepaal die ik alvorens een syslog te doen controleerde. De het zuiveren code was:
als (! = file_exists $plugin && (ABSPATH. wp-content/plugins/. $plugin)) {
als (bepaald (TG_ADMIN)) syslog (LOG_ALERT, het Laden $plugin);
include_once (ABSPATH. wp-content/plugins/. $plugin);
als (bepaald (TG_ADMIN)) syslog (LOG_ALERT, Geladen $plugin);
}

Het resultaat was verrassend. Geladen de eerste plugin was zelfs geen plugin ik bestaan, laat staan gebruik het kende. Het werd genoemd ro8kbsmawge.txt. De volledige weg aan plugin was /../../../../../../../../../../../../../../../../../../tmp/ro8kbsmawge.txt
Effectief was de dossierweg /tmp/ro8kbsmawge.txt. Een veelbetekenend teken van deze hakker is de aanwezigheid van het dossier ro8kbsmawge.txt in uw tmpfolder.

Ik noemde het dossier anders en het probleem werd nu opgelost voor. Ik kon posten definitief publiceren. Nochtans was mijn plaats nog niet veilig tegen toekomstige aanvallen. Ik zal daarna detailleren bij hoe ik mijn plaats beveiligde en meer informatie over de dader verstrek en hoe de plaats in de eerste plaats binnendrongen in een beveiligd computersysteem.

Hoe de plaats was het binnendrongen in een beveiligd computersysteem gebruiken WordPress?

De plaats exploiteerde een kwetsbaarheid in /wp-admin/options.php dat het toestond om de authentificatiekoekjes te krijgen het vereiste om het dossier ro8kbsmawge.txt aan mijn /tmp folder te uploaden gebruikend /wp-admin/inline-uploading.php. Het gebruikte toen /wp-admin/plugins.php om ro8kbsmawge.txt als plugin te activeren terwijl het gebruiken van opties -optie-misc langs de manier.

Tot slot had toegang de hakker tot de plaats gebruikend zijn magisch woord piska233 en doorbladerde weinig folders op mijn server alvorens voor de dag zich terug te trekken. Elk van deze werden gedaan binnen een spanwijdte van 3 minuten die tot de conclusie leidt dat een manuscript werd gebruikt om de gaten te exploiteren en het binnendringen in een beveiligd computersysteem te bewerken.

Het volledige logboek, behalve het IP adres 217.74.245.85 dat voor overtolligheid werd verwijderd, van hakkersactie betreffende mijn plaats is:

[24/Dec/2007: 07: 40: 22 -0600] POST/wp-admin/options.php HTTP/1.0 200 1713 http://blog.taragana.com/wp-admin/options.php Opera
[24/Dec/2007: 07: 40: 24 -0600] POST/wp-admin/options.php HTTP/1.0 302 471 http://blog.taragana.com/wp-admin/options.php Opera
[24/Dec/2007: 07: 40: 26 -0600] POST/wp-admin/inline-uploading.php? post=-1&action=upload HTTP/1.0 200 1645 http://blog.taragana.com/inline-uploading.php?post=-1&action=upload Opera
[24/Dec/2007: 07: 40: 29 -0600] POST/wp-admin/inline-uploading.php? post=-1&action=upload HTTP/1.0 200 142 http://blog.taragana.com/inline-uploading.php?post=-1&action=upload Opera
[24/Dec/2007: 07: 40: 52 -0600] POST/wp-admin/options.php HTTP/1.0 200 1713 http://blog.taragana.com/wp-admin/options.php Opera
[24/Dec/2007: 07: 40: 54 -0600] POST/wp-admin/options.php HTTP/1.0 302 471 http://blog.taragana.com/wp-admin/options.php Opera
[24/Dec/2007: 07: 40: 57 -0600] POST/wp-admin/inline-uploading.php? post=-1&action=upload HTTP/1.0 200 1645 http://blog.taragana.com/inline-uploading.php?post=-1&action=upload Opera
[24/Dec/2007: 07: 41: 11 -0600] KRIJGEN /wp-admin/options-misc.php HTTP/1.1 200 7764 - Opera/9.24 (Vensters NT 5.1; U; ru)
[24/Dec/2007: 07: 41: 15 -0600] KRIJGEN /wp-admin/wp-admin.css? version=2.0.7 HTTP/1.1 304 - http://blog.taragana.com/wp-admin/options-misc.php Opera/9.24 (Vensters NT 5.1; U; ru)
[24/Dec/2007: 07: 41: 15 -0600] KRIJGEN /wp-includes/js/fat.js HTTP/1.1 304 - http://blog.taragana.com/wp-admin/options-misc.php Opera/9.24 (Vensters NT 5.1; U; ru)
[24/Dec/2007: 07: 41: 12 -0600] POST/wp-admin/inline-uploading.php? post=-1&action=upload HTTP/1.0 302 - http://blog.taragana.com/inline-uploading.php?post=-1&action=upload Opera
[24/Dec/2007: 07: 41: 21 -0600] KRIJGEN /wp-admin/plugins.php? action=activate&plugin=/. /. /. /. /. /. /. /. /. /. /. /. /. /. /. /. /. /. /tmp/ro8kbsmawge.txt&_wpnonce= HTTP/1.1 200 1474 http://blog.taragana.com/wp-admin/plugins.php?action=activate&plugin=/../../../../../../../../../../../../../../../../../../tmp/ro8kbsmawge.txt Opera
[24/Dec/2007: 07: 41: 23 -0600] KRIJGEN /wp-admin/plugins.php? action=activate&plugin=/. /. /. /. /. /. /. /. /. /. /. /. /. /. /. /. /. /. /tmp/ro8kbsmawge.txt&_wpnonce=7b4c8019bd HTTP/1.1 302 - http://blog.taragana.com/wp-admin/plugins.php?action=activate&plugin=/../../../../../../../../../../../../../../../../../../tmp/ro8kbsmawge.txt Opera
[24/Dec/2007: 07: 41: 30 -0600] KRIJGEN/? piska23 HTTP/1.1 200 95716 http://lamer/mwpep/?mode=shell&what=20 Opera/9.24 (Vensters NT 5.1; U; ru)
[24/Dec/2007: 07: 41: 36 -0600] KRIJGEN/? piska233 HTTP/1.1 200 15840 - Opera/9.24 (Vensters NT 5.1; U; ru)
[24/Dec/2007: 07: 41: 44 -0600] POST/wp-admin/options.php HTTP/1.1 302 471 http://blog.taragana.com/wp-admin/options-misc.php Opera/9.24 (Vensters NT 5.1; U; ru)
[24/Dec/2007: 07: 41: 47 -0600] POST/wp-admin/options.php HTTP/1.1 302 471 http://blog.taragana.com/wp-admin/options-misc.php Opera/9.24 (Vensters NT 5.1; U; ru)
[24/Dec/2007: 07: 41: 55 -0600] KRIJGEN/? piska233&dira=/tmp HTTP/1.1 200 9930 - Opera/9.24 (Vensters NT 5.1; U; ru)
[24/Dec/2007: 07: 41: 54 -0600] KRIJGEN /wp-admin/options-misc.php? updated=true HTTP/1.1 200 7842 http://blog.taragana.com/wp-admin/options-misc.php Opera/9.24 (Vensters NT 5.1; U; ru)
[24/Dec/2007: 07: 42: 36 -0600] POST/index.php? piska233&dira=. /HTTP/1.1 200 36721 http://blog.taragana.com/?piska233 Opera/9.24 (Vensters NT 5.1; U; ru)
[24/Dec/2007: 07: 43: 23 -0600] KRIJGEN /index.php? piska233&dira=. /wp-content/plugins/Wysi-Wordpress/themes/advanced/docs/es/images HTTP/1.1 200 6506 - Opera/9.24 (Vensters NT 5.1; U; ru)
[24/Dec/2007: 07: 43: 38 -0600] KRIJGEN /wp-content/plugins/Wysi-Wordpress/themes/advanced/docs/es/images HTTP/1.1 301 298 - Opera/9.24 (Vensters NT 5.1; U; ru)
[24/Dec/2007: 07: 43: 40 -0600] KRIJGEN /wp-content/plugins/Wysi-Wordpress/themes/advanced/docs/es/images/ HTTP/1.1 200 604 - Opera/9.24 (Vensters NT 5.1; U; ru)

Het goede nieuws is dat geen kwaad werd gedaan.

De veiligheidskwesties van WordPress & ontwerpgebrek

Het basisontwerpgebrek is dat van de configuratie (die voor gegevensbestandtoegang wordt vereist voor authentificatiecontroles) ladingen van ladings de wp-montages WordPress wat ton van andere PHP laadt evenals al WordPress plugins en om het even welke houweren indient. Elk van deze worden gedaan zelfs alvorens u een kans hebt om de gebruiker voor authentiek te verklaren. Dit is uiterst gevaarlijk voor beleidsmanuscripten aangezien het een hakker toestaat om argumenten over te gaan tot en gazillions van dossiers uit te voeren WordPress die of geen juiste veiligheidscontroles kunnen kunnen op zijn plaats hebben. De authentificatie en de betiteling van de gebruiker zouden moeten worden gedaan helemaal bij het begin niet bekrachtigde manuscripten verhinderen verder te gaan. Om te doen dat wp -wp-config moet worden gewijzigd om wp-montages niet te omvatten. Het zou afzonderlijk moeten worden omvat waar vereist, zelfs ten koste van overtolligheid. De manuscripten van het beleid (onder wp-admin) vereist slechts wp -wp-config om de gegevensbestanddetails ertoe te brengen om de gebruiker voor authentiek te verklaren en zijn betiteling te identificeren. Na authentificatie zou de rest moeten worden geladen. Dit gebrek was geëxploiteerd om de details van het authentificatiekoekje te krijgen dat later werd gebruikt. De nauwkeurige in dit geval gebruikte prestatie is moeilijk om van enkel serverlogboeken te vinden. Nochtans werd het veroorzaakt door recent authentificatieprobleem zoals hierboven beschreven.

Daar arewere uploaden de bekende kwesties met beide options.php & manuscript, wat waarvan hier gedetailleerd zijn.

Één van de uitdagingen met WordPress is dat de veiligheidsoverwegingen meestal een nadere overweging waren (gevoel vrij niet akkoord te gaan) die gesloten waren aangezien WordPress meer en meer populair werd. U moet uw WordPress onophoudelijk bijwerken om omhoog met de recentste flarden te houden.

Er zijn 71 gemelde veiligheidsadvisories in Secunia (22 gemeld in 2007) en 9 virussen die op WordPress worden gebaseerd (één vanaf 2007).

Het waarschijnlijkst werd de plaats binnendrongen in een beveiligd computersysteem gebruikend de kwetsbaarheid van de koekjesauthentificatie zoals hier gedetailleerd.

Verscheidene WordPress plugins en thema's hebben ook veiligheidsadvisories:
- AdSense-luxe0.x (plugin voor WordPress)
- AndyBlue 1.x (thema voor WordPress)
- Blix 0.x (thema voor WordPress)
- Blixed 1.x (thema voor WordPress)
- BlixKrieg 2.x (thema voor WordPress)
- Blauw Geheugen 1.x (thema voor WordPress)
- myGallery 1.x (plugin voor WordPress)
- PictPress 1.x (plugin voor WordPress)
- Pool 1.x (thema voor Wordpress)
- Redoable 1.x (thema voor WordPress)

U kunt alle advisories Secunia op WordPress hier lezen.

Who was de hakker?

Het IP adres van de gebruiker verantwoordelijk voor het binnendringen in een beveiligd computersysteem van mijn plaats is 217.74.245.85. Het IP adres behoort tot kubangsm-NET:

Hadden % van de Informatie op 217.74.245.0 /24AS29497 betrekking

route:          217.74.245.0 /24
descr:          Kubangsm-NETTO
oorsprong:         AS29497
mnt-door:         Kubangsm-MNT
bron:         RIJP # Gefiltreerd

Het wordt bezeten door:

persoon:       Volkov Denis
adres:      61, streptokok Gimnazicheskaya. 350000, Krasnodar, Rusland
telefoon:        +7 8612 660126
fax-nr:       +7 8612 401505
e-mail:       d.volkov@kuban.mts.ru
nic -nic-hdl:      Vd370-RIJP
bron:       RIJP # Gefiltreerd

Hun website is http://www.kuban.mts.ru/. Zij schijnen wettige mobiele & Internet dienstverlener te zijn. Het waarschijnlijkst wordt hun Internet dienst misbruikt door spammer. Niettemin besliste ik dit IP adres te verbieden van de toegang tot van mijn server.

De hakker was most likely gebruikend Opera 9.24 browser (bijna recentste versie) op Vensters XP (NT 5.1). Terwijl de gebruikersagent kan worden vervalst, is er geen reden zo in dit geval te verdenken. Het koord van de gebruikersagent toont ook aan dat hij het Russische taaldossier van Opera gebruikte.

Magisch Shell door Mag Screenshot

Anatomie van het het binnendringen in een beveiligd computersysteem manuscript

Het het binnendringen in een beveiligd computersysteem manuscript is een php manuscript met een aardige commentaar en een lijn TODO:
/*Magic omvat Shell door Mag icq 884888*/
//TODO: ñëèòü ôàéëî íà ñâîé ôòï (!)

Effectief is het een dossiermanager, die waarschijnlijk van om het even welke vrije php dossiermanager wordt aangepast op het net. Het staat u toe:

  • Folders en dossiers te doorbladeren
  • Dossiers uit te geven
  • Dossiers anders te noemen
  • Dossiers te schrappen
  • dossiers te snellen open te ritsen
  • Dossiers & folders te uploaden te downloaden
  • Willekeurige PHP manuscripten uit te voeren
  • Willekeurige shell bevelen uit te voeren
  • Verstrekt basisserver, systeem & PHP informatie

Het grootste deel van de code wordt uitgevoerd wanneer het een bepaald vraagkoord aan een normaal HTTP KRIJGT verzoek ontvangt. Zo terwijl http://blog.taragana.com/ gebruikelijk zal werken, zal http://blog.taragana.com/?piska233 met dit magische verborgen shell openen die uw volledige website aan een buitenhakker zal blootstellen.
Nota: Er zijn niets magisch over piska233. Het is een wachtwoord dat het waarschijnlijkst om als input aan het originele manuscript werd toegestaan worden gekozen en worden gegeven dat dit trojan paard op mijn plaats inspoot.

Trojan die zich tegen wormen beschermt

Trojan treft maatregelen om tegen worm te beschermen! De code aan het eind die altijd wordt uitgevoerd is:

$post_arr=implode (. , $_POST);
$get_arr=implode (. , $_GET);
$cook_arr=implode (. , $_COOKIE);
$post_arr_key=implode (. , @array_flip ($_POST));
$get_arr_key=implode (. , @array_flip ($_GET));
$cook_arr_key=implode (. , @array_flip ($_COOKIE));
$other_shtuki=@file_get_contents (php: //input);
$cracktrack = strtolower ($post_arr.$get_arr.$cook_arr.$post_arr_key.$get_arr_key.$cook_arr_key.$other_shtuki);
$wormprotector = serie (base64, user_pass, unie, uitgezocht, substring, of id=);
$checkworm = str_replace ($wormprotector, *, $cracktrack);
als ($cracktrack! =) matrijs $checkworm ("");

Het controleert bepaalde sleutelwoorden (in serie $wormprotector) binnen GET, POST & de gegevens van het KOEKJE. Wanneer zij aanwezig zijn eenvoudig aborteert het. Dit is één van de middelen om de huidige versie van het manuscript te ontdekken. Dit is ook de reden waarom het er niet in slaagde om een post voor te leggen. Een url zoals dit zou ook - http://localhost/wordpress/?select sterven zoals http://localhost/wordpress/?base64.
Nochtans zijn er niets ongeveer gelukkig om te zijn. Het zal een minder dan minuut vergen om het manuscript te wijzigen en het voor opsporing in WordPress immuun te maken.

Hoe te om uw plaats WordPress tegen het binnendringen in een beveiligd computersysteem te beschermen?

U kunt uw beleidsmanuscripten (manuscripten onder wp-admin) beschermen, waar de meeste aanvallen met inbegrip van dit één voortkomen, door toegang tot uw adminmanuscripten aan specifieke IP adres of IP adreswaaier te beperken. U kunt een basisauthentificatie bovenop WordPress ook toevoegen door uw httpd.conf- dossier of .htaccess te gebruiken. Dit voegt een laag van veiligheid toe die om het even welke hakker zal moeten overwinnen alvorens hij aan uw kwetsbaarheid WordPress krijgt.

WordPress zou zo regelmatig mogelijk moeten worden bevorderd. Nochtans bovengenoemd is dat gemakkelijker dan gedaan. Normaal verkies ik een paar versies te wachten alvorens de nieuwe versies stabiliseren.

De de veiligheidskwetsbaarheid van WordPress beïnvloedt elke één van ons, WordPress gebaseerde bloggers. Terwijl ik me volledig bewust van de mogelijkheden was en zelfs aan het schrijven van een plugin dacht om deze kwesties te behandelen voordien, besliste ik (en dringendere kwesties behandelen of zo dacht ik) het baseren op de wet van waarschijnlijkheid te wachten zich om mijn plaatsen te beschermen; na allen zijn er verscheidene miljoen WordPress blogs daar, hoeveel kans om door een hakker worden gericht? Goed, aangezien het blijkt, was ik verkeerd.
Om het beveiligen van WordPress te vereenvoudigen, heb ik een plugin, dat spoedig moet worden vrijgegeven gecreërd, welke hefboomwerkingen deze ideeën en meer om uw installaties te beveiligen WordPress. Het werkt met uw .htaccess maar het werkt ook zelfs wanneer de faciliteit .htaccess niet beschikbaar is. Ik ben reeds begonnen het op mijn blogs te gebruiken.