Wubi Posted July 13, 2012 Report Posted July 13, 2012 (edited) Cu totii cred ca stiti cum sa creati un blog folosind un CMS free sau cumparat. Oricum, mentinerea securitatii pe un blog nu este treaba usoara, avand in vedere ca hackerii in general au cunostiinte mult mai vaste decat majoritatea bloggerilor sau detinatoriilor de site-uri. Securitatea unui blog este destul de importanta, deoarece reflecta calitatea afacerii tale. Un hacker iti poate ataca site-ul si apoi informatiile obtinute pot fi folosite in scopuri mai mult sau mai putin bune, lucru ce iti va sifona imaginea. Sunt o gramada de moduri folosite pentru a "sparge" un website, si OWASP (Open Web Application Security Project) a clasificat cele mai periculoase metode si vulnerabilitati. In orice caz, sunt multe metode de a preveni, pe diverse platforme, lucru pe care vreau sa`l prezint in acest topic.Joomla este un CMS open source, usor de instalat si folosit. Cum e si de asteptat, multi bloggeri si detinatori de site-uri folosesc Joomla. Poate ca ai folosit/sau nu Joomla inainte, dar acum cred ca te intrebi cum se poate securiza un website ce foloseste Joomla. In acest topic, voi prezenta scanarea vulnerabilitatilor pentru Joomla, cum sa fixezi vulnerabilitatile, si cum sa implementezi cea mai buna securitate pentru Joomla.Scanarea Vulnerabilitatilor pe JoomlaScanarea de vulnerabilitati, este primul pas ce determina cat de securizata e aplicatia web.Rezultatul, dandu`ti ceva informatii utile despre cum sta treaba in privinta securitatii pe blog-ul sau website-ul tau.Sunt tool-uri facute special pentru scanarea Joomla. Putem folosi un scanner obisnuit, dar vom creste sansele de reusita arunc un ochi si peste rezultatul unui scanner special pentru Joomla.Scannerul de vulnerabilitati Joomla de la OWASPGroosman, asa cum este numit script-ul este scris in perl, folosit pentru a scana un website Joomla, tool-ul fiind de la proiectul de securitate OWASP Joomla."OWASP Joomla! Vulnerability Scanner v..." are ceva caracteristici interesante:Scaneaza si detecteaza versiunea JoomlaPoate descoperii vulnerabilitatile cunoscute pentru JoomlaPoate detecta un firewall sau barierele anti-scanning s.a.m.dTool-ul il puteti gasi pe BackTrack 5 R2 in Applications>BackTrack>Vulnerability Assessment>Web Application Assessment>CMS Vulnerability Identification>joomscansau root@bt: cd /pentest/web/joomscanUn scurt exemplu de scanare ar fi ceva de genul:Vulnerabilities Discovered==========================# 1Info -> Generic: htaccess.txt has not been renamed. Versions Affected: AnyCheck: /htaccess.txtExploit: Generic defenses implemented in .htaccess are not available, so exploiting is more likely to succeed.Vulnerable? Yes# 2Info -> Generic: Unprotected Administrator directory Versions Affected: AnyCheck: /administrator/Exploit: The default /administrator directory is detected. Attackers can bruteforce administrator accounts. Read: http://yehg.net/lab/pr0js/view.php/MULTIPLE%20TRICKY%20WAYS%20TO%20PROTECT.pdfVulnerable? N/A# 3Info -> Core: Multiple XSS/CSRF Vulnerability Versions Affected: 1.5.9 <= Check: /?1.5.9-xExploit: A series of XSS and CSRF faults exist in the administrator application. Affected administrator components include com_admin, com_media, com_search. Both com_admin and com_search contain XSS vulnerabilities, and com_media contains 2 CSRF vulnerabilities. Vulnerable? N/A# 4Info -> Core: JSession SSL Session Disclosure Vulnerability Versions effected: Joomla! 1.5.8 <= Check: /?1.5.Exploit: When running a site under SSL (the entire site is forced to be under ssl), Joomla! does not set the SSL flag on the cookie. This can allow someone monitoring the network to find the cookie related to the session. Vulnerable? N/A# 5Info -> Core: Frontend XSS Vulnerability Versions effected: 1.5.10 <=Check: /?1.5.10-xExploit: Some values were output from the database without being properly escaped. Most strings in question were sourced from the administrator panel. Malicious normal admin can leverage it to gain access to super admin.Vulnerable? N/A# 6Info -> Core: Frontend XSS - HTTP_REFERER not properly filtered Vulnerability Versions effected: 1.5.11 <=Check: /?1.5.11-x-http_refExploit: An attacker can inject JavaScript or DHTML code that will be executed in the context of targeted user browser, allowing the attacker to steal cookies. HTTP_REFERER variable is not properly parsed.Vulnerable? N/A# 7Info -> Core: Frontend XSS - PHP_SELF not properly filtered Vulnerability Versions effected: 1.5.11 <=Check: /?1.5.11-x-php-s3lfExploit: An attacker can inject JavaScript code in a URL that will be executed in the context of targeted user browser. Vulnerable? N/A# 8Info -> Core: Authentication Bypass Vulnerability Versions effected: Joomla! 1.5.3 <=Check: /administrator/Exploit: Backend accepts any password for custom Super Administrator when LDAP enabledVulnerable? N/A# 9Info -> Core: Path Disclosure Vulnerability Versions effected: Joomla! 1.5.3 <=Check: /?1.5.3-path-discloseExploit: Crafted URL can disclose absolute pathVulnerable? N/A# 10Info -> Core: User redirected Spamming Vulnerability Versions effected: Joomla! 1.5.3 <=Check: /?1.5.3-spamExploit: User redirect spamVulnerable? N/A# 11Info -> Core: Admin Backend Cross Site Request Forgery Vulnerability Versions effected: 1.0.13 <=Check: /administrator/Exploit: It requires an administrator to be logged in and to be tricked into a specially crafted webpage.Vulnerable? N/A# 12Info -> CoreLibrary: phpmailer Remote Code Execution Vulnerability Versions effected: Joomla! 1.5.0 Beta/StableCheck: /libraries/phpmailer/phpmailer.phpExploit: N/AVulnerable? N/A# 13Info -> CoreComponent: com_content SQL Injection Vulnerability Version Affected: Joomla! 1.0.0 <= Check: /components/com_content/Exploit: /index.php?option=com_content&task=blogcategory&id=60&Itemid=99999+UNION+SELECT+1,concat(0x1e,username,0x3a,password,0x1e,0x3a,usertype,0x1e),3,4,5+FROM+jos_users+where+usertype=0x53757065722041646d696e6973747261746f72--Vulnerable? No# 14Info -> CoreComponent: com_search Remote Code Execution Vulnerability Version Affected: Joomla! 1.5.0 beta 2 <= Check: /components/com_search/Exploit: /index.php?option=com_search&Itemid=1&searchword=%22%3Becho%20md5(911)%3BVulnerable? No# 15Info -> CoreComponent: MailTo SQL Injection Vulnerability Versions effected: N/ACheck: /components/com_mailto/Exploit: /index.php?option=com_mailto&tmpl=mailto&article=550513+and+1=2+union+select+concat(username,char(58),password)+from+jos_users+where+usertype=0x53757065722041646d696e6973747261746f72--&Itemid=1Vulnerable? No# 16Info -> CoreComponent: com_content Blind SQL Injection Vulnerability Versions effected: Joomla! 1.5.0 RC3Check: /components/com_content/Exploit: /index.php?option=com_content&view=%' +'a'='a&id=25&Itemid=28Vulnerable? No# 17Info -> CoreComponent: com_content XSS Vulnerability Version Affected: Joomla! 1.5.7 <= Check: /components/com_content/Exploit: The defaults on com_content article submission allow entry of dangerous HTML tags (script, etc). This only affects users with access level Author or higher, and only if you have not set filtering options in com_content configuration. Vulnerable? N/A# 18Info -> CoreComponent: com_weblinks XSS Vulnerability Version Affected: Joomla! 1.5.7 <= Check: /components/com_weblinks/Exploit: [Requires valid user account] com_weblinks allows raw HTML into the title and description tags for weblink submissions (from both the administrator and site submission forms). Vulnerable? N/A# 19Info -> CoreComponent: com_mailto Email Spam Vulnerability Version Affected: Joomla! 1.5.6 <= Check: /components/com_mailto/Exploit: The mailto component does not verify validity of the URL prior to sending.Vulnerable? N/A# 20Info -> CoreComponent: com_content view=archive SQL Injection Vulnerability Versions effected: Joomla! 1.5.0 Beta1/Beta2/RC1Check: /components/com_content/Exploit: Unfiltered POST vars - filter, month, year to /index.php?option=com_content&view=archiveVulnerable? No# 21Info -> CoreComponent: com_content XSS Vulnerability Version Affected: Joomla! 1.5.9 <=Check: /components/com_content/Exploit: A XSS vulnerability exists in the category view of com_content. Vulnerable? N/A# 22Info -> CoreComponent: com_users XSS Vulnerability Version Affected: Joomla! 1.5.10 <=Check: /components/com_users/Exploit: A XSS vulnerability exists in the user view of com_users in the administrator panel.Vulnerable? N/A# 23Info -> CoreComponent: com_installer CSRF Vulnerability Versions effected: Joomla! 1.5.0 BetaCheck: /administrator/components/com_installer/Exploit: N/AVulnerable? N/A# 24Info -> CoreComponent: com_search Memory Comsumption DoS Vulnerability Versions effected: Joomla! 1.5.0 BetaCheck: /components/com_search/Exploit: N/AVulnerable? No# 25Info -> CoreComponent: com_banners Blind SQL Injection Vulnerability Versions effected: N/ACheck: /components/com_banners/Exploit: /index.php?option=com_banners&task=archivesection&id=0'+and+'1'='1::/index.php?option=com_banners&task=archivesection&id=0'+and+'1'='2Vulnerable? No# 26Info -> CoreComponent: com_mailto timeout Vulnerability Versions effected: 1.5.13 <=Check: /components/com_mailto/Exploit: [Requires a valid user account] In com_mailto, it was possible to bypass timeout protection against sending automated emails.Vulnerable? N/ANu am gasit mare lucru, ma rog, nu mi`am ales bine nici target-ul. Am facut`o pentru a va arata in mare cum arata rezultatul scanarii.La sfarsitul scanarii iti va da "verdictul",There are 1337 vulnerable points in 39 found entries!~[*] Time Taken: 56 sec~[*] Send bugs, suggestions, contributions to joomscan@yehg.netCMS ExplorerCMS Explorer a fost creat pentru a "explora" un CMS, detectandu-i modulele, pluginurile, si componentele CMS-ului. CMS Explorer poate fi folosit ca unealta pentru scananrea vulnerabilitatilor, deoarece are o optiune pentru a cauta in OSVDB (Open Source Vulnerability Database) pentru a gasi vulnerabilitati cunoscute pentru CMS. El poate scana mai multe CMS-uri, inclusiv Joomla. Tot ce ai nevoie pentru a folosi script-ul CMS Explorer este OSVDB API key.Pentru a face rost de ea:Intra pe website-ul OSVDB si fa`ti un cont.Activeaza`ti contul de pe link-ul care ti`l vor trimite pe mail(sti vrajeala) apoi te conectezi.Du`te la pagina OSVDB API sa faci rost de un API key.Afla directorul unde ai salvat CMS Explorer inainte, apoi creaza un fisier nou. Numeste`l "osvdb.key"Pune-ti API key-ul in osvdb.key si salveaza`l.CMS Explorer este acum gata sa scaneze.Pentru a intra in CMS-Explorer,root@bt: cd /pentest/enumeration/web/cms-explorerPentru a incepe o scanare simpla,Ma rog, n`am mai asteptat sa scaneze tot, cum am mai zis nu mi`am gasit target-ul azi. In orice caz, obiectivul nostru nu este sa gasim componentele, deci sa ne concentram pe vulnerabilitatile tintei noastre. Pentru a a face asta, avem nevoie de OSVDB key.Nu voi mai scana iar, pentru a face asta:root@bt:/pentest/enumeration/web/cms-explorer# ./cms-explorer.pl -url http://joomlaurl/Joomla -type joomla -osvdbReusiti sa interpretati si singuri rezultatul.Instalarea in sigurantaPrimul si cel mai important pas in a crea un website/blog securizat bazat pe Joomla, este sa alegem platforma corecta (web serverul) si sa folosim cele mai bune metode pentru instalare. Daca te tine portofelul, si vrei cu adevarat ceva mai bun pentru securitate, atunci o platforma shared-hosting nu este cea mai buna idee deoarece pe astfel de platforme website-urile impart acelasi server. Asta prezinta un risc. Deci, daca`ti permiti, ia`ti un server dedicat, sau un vps. Cand iti alegi firma de hosting, fi sigur ca ai citit parerile altor utilizatori. Iti vei face o idee despre eficienta companiei. Fi sigur ca firma de hosting foloseste software-uri la zi.Urmatorul pas este sa iei Joomla si sa il instalezi pe server. Unele dintre comapniile de web hosting si forumuri furnizeaza un script care iti permite doar din cateva click-uri sa instalezi faimosul CMS. Asta este cea mai usoara metoda de a instala Joomla. Dar din punct de vedere al securitatii nu este recomandat. Cel mai bine descarci Joomla de pe site-ul oficial(nu de pe alte site-uri , ), apoi il incarci pe web server prin FTP. Creaza o baza de date MySQL pentru instalarea Joomla si fi sigur ca alegi o parola buna pentru baza de date. NU "root,toor,db,password,pass,123,1234,parola".Apoi instalarea este destul de simpla, doar urmeaza procedura. Sa ai grija totusi in urmatoarele privinte:Niciodata nu folosesti numele de utilizator implicit, "admin".Niciodata nu folosesti prefix-ul tabelelor, care este jos_Nu uita sa stergi directorul de instalare al Joomla, dupa ce acesta a fost instalat cu succes.Intotdeauna protejeaza`ti fisierele si directoarele importante. De exemplu, admin panel-ul joomla si configuration.php ce contin informatii vitale despre baza de date.Foloseste htaccess si ceva extensii bune pentru a spori securitatea.Cum securizam Joomla folosind .htaccess.htaccess este un configuration file al web serverelor ce folosesc Apache. Acesta fiind foarte puternic, putand sa controleze serverul. htaccess este un fisier ascuns care ar trebui sa fie deja prezent in directorul root al serverului tau. Daca nu, il poti crea, dar fi sigur ca numele lui este ".htaccess"(da, incepe cu "punct"). El poate proteja zona administrativa folosind diferite tehnici. De exemplu, poti restrictiona acea zona bazandu`te pe adresa IP. (asta presupune sa creezi un fisier .htaccess in directorul "administrator"):order deny,allowallow from 92.55.65.43deny from allNota: Daca ISP-ul tau foloseste IP dynamic, nu este o idee buna sa folosesti aceasta tehnica tinand cont ca IP-ul tau se poate schimba la un momentdat. Pentru a preveni "directory listing". Poti folosi urmatorul cod mai jos in fisierul tau .htaccess prezent in root:IndexIgnore *Options -IndexesO alta metoda buna, este sa dezactivezi semnatura serverului deoarece aceasta da o idee despre software-ul web server-ului si versiunea acestuia. Pentru a face asta, in .htaccess foloseste asta:ServerSignature OffUn alt pas important este sa securizezi fisierul .htaccess pentru ca nimeni sa nu il poate citi in browser. Pentru a face asta, ai nevoie sa adaugi urmatoarele:<Files .htaccess>order allow,denydeny from all</Files>Configuration.php este un fisier foarte important deoarece contine informatii despre baza de date a unui website, si alte informatii relevante. Deci ai nevoie sa securizezi si fisierul configuration.php folosind .htaccess:<FilesMatch "configuration.php">Order allow,denyDeny from all</FilesMatch>Tinand cont ca sunt destule riscuri asociate cu fisierul configuration.php, nu este suficient ceea ce am facut mai sus. Pentru o securitate maxima, vei avea nevoie sa muti fisierul configuration.php in afara public_html.Cum?Pai, inainte de toate, asta a fost testat pe un Joomla 1.5. Primul pas este sa cream un director home (in afara public_html). Presupunem ca i`am pus numele wubi.Intra in folderul "wubi".Incarca acolo fisierul configuration.phpIntra in fisierul Joomla (includes/defines.php) si da`i replace la linia define(‘JPATH_CONFIGURATION’,JPATH_ROOT); cu: define(‘JPATH_CONFIGURATION’,JPATH_ROOT.DS.’../wubi’);. Daca Joomla este subdirector, atunci da`i replace cu: define(‘JPATH_CONFIGURATION’,JPATH_ROOT.DS.’../../’.DS.’wubi’); (ai grija la syntax).Tine minte, wubi este numele folderului creat la pasul 1. Il poti modifica cu ce nume vrei tu.Repeta acest lucru in: administrator/includes/defines.php.Acum site-ul este gata si securizat. ConcluziaChiar daca internetul nu e un loc prea sigur, ai nevoie sa iei in interes personal securitatea website-ului tau. Deci daca vei folosi sau folosesti deja platforma Jooml, fi sigur ca implementezi cele mai bune practici disponibile, daca vrei sa ramai in siguranta.Referinte:InfoSec ResourcesBackTrack-LinuxOWASPOVSDB Edited July 13, 2012 by Wubi Quote