Karlosův archívek plků alias blog :-)

Joomla 1.5.26 hack

Podpora pro Joomla verze 1.5.x skončila v září 2012, PHP 5.2.x (na kterém tato Joomal běží) ukončilo podporu v lednu 2011. Tzn. od té doby nikdo neřeší jakékoliv bezpečnostní díry. Bohužel je stále spousty zákazníků, kteří své weby na této konfiguraci provozují. Jenže znáte to, tak dlouho se chodí se džbánem pro vodu ... až to skončí hromadným hackováním webů na Joomla 1.5.26.

 

 

Princip hacku Vám popíšu na jednom z 40ti případů, který jsem řešil. Je strašidelně jednoduchý. Jednoho dne s Vám do administrace přihlásí někdo, kdo přes Joomla instalátor nainstaluje podvodný modul obsahující backdoory a jiné scripty, přes ty pak s kratším/delším časovým odsupem začne provádět z jiné IP, co je mu libo. Výpis z logu, jak takový útok vypadá je zde:

185.93.187.66 - - [27/Aug/2016:21:35:13 +0200] "GET /administrator/ HTTP/1.1" 200 9178 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:14 +0200] "GET /administrator/ HTTP/1.1" 200 9178 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:14 +0200] "GET /administrator/ HTTP/1.1" 200 60315 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:15 +0200] "GET /administrator/?option=com_config HTTP/1.1" 200 72004 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:16 +0200] "GET /administrator/?option=com_admin&task=sysinfo HTTP/1.1" 200 81935 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:16 +0200] "GET /administrator/?option=com_installer HTTP/1.1" 200 30723 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:17 +0200] "POST /administrator/ HTTP/1.1" 200 31053 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:17 +0200] "POST /templates/jtemplate/jtemplate.php HTTP/1.1" 404 30285 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:18 +0200] "GET /administrator/?option=com_installer HTTP/1.1" 200 30723 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:18 +0200] "POST /administrator/ HTTP/1.1" 200 30934 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:19 +0200] "POST /modules/mod_jmodule/mod_jmodule.php HTTP/1.1" 200 255 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:19 +0200] "GET /administrator/?option=com_installer HTTP/1.1" 200 30723 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:19 +0200] "POST /administrator/ HTTP/1.1" 200 30944 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:19 +0200] "POST /plugins/jplugin/jplugin.php HTTP/1.1" 200 255 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:20 +0200] "GET /administrator/?option=com_installer HTTP/1.1" 200 30723 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:20 +0200] "POST /administrator/ HTTP/1.1" 200 30939 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
185.93.187.66 - - [27/Aug/2016:21:35:20 +0200] "POST /administrator/templates/jtemplate/jtemplate.php HTTP/1.1" 200 10 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"

Těžko z tohoto logu určit, jaké využívá útočník chyby. Jistota je, že útočník heslo vědět nemohl a ani ho nezměnil (log DB a LOG FTP je na veškeré příslušné změny negativní). Na daném webu byla čistá Joomla 1.5.26 (+ patche dodané komunitou po ukončení podpory). Na web nebyl předem nahrán, nebo nebyl změně žádný script. Login i heslo bylo generované a neuhodnutelné. Na web se nikdo 2 roky nehlásil, čili ani uniknutí hesla touto cestou nebylo možné. Je to opravdový průšvih.

Jak nyní postupovat? Pokud je možno vrátit data ze zálohy, je vyhráno. V opačném případě je to na detailní analýzu změn a ruční čištění (detailní postup by byl na další článek a je to pracně nabyté know-how, kterého se admini neradi vzdávají). Předpokládejme, že jsme vrátili zpět verzi, která nebyla hacknuta, nebo jsme tu hacknutou perfektně vyčistili. Co teď?

  1. zabezpečit /administrator pomocí .htaccessu
  2. změnit veškerá hesla
  3. aplikovat patchnutou verzi 1.5.999
Pak už nezbývá jen doufat, že se neobjeví nějaká další chyba. Proto všem důrazně doporučuji web migrovat na novější PHP i nejnovější verzi Joomla.