Jump to content
Wubi

Securitatea Joomla si scanarea vulnerabilitatilor

Recommended Posts

Posted (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 Joomla

Scanarea 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 OWASP

Groosman, 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 Joomla

Poate descoperii vulnerabilitatile cunoscute pentru Joomla

Poate detecta un firewall sau barierele anti-scanning s.a.m.d

Tool-ul il puteti gasi pe BackTrack 5 R2 in Applications>BackTrack>Vulnerability Assessment>Web Application Assessment>CMS Vulnerability Identification>joomscan

screenshotfa.png

sau

root@bt: cd /pentest/web/joomscan

screenshot1lq.png

Un scurt exemplu de scanare ar fi ceva de genul:

screenshotaej.png

Vulnerabilities Discovered
==========================

# 1
Info -> Generic: htaccess.txt has not been renamed.
Versions Affected: Any
Check: /htaccess.txt
Exploit: Generic defenses implemented in .htaccess are not available, so exploiting is more likely to succeed.
Vulnerable? Yes

# 2
Info -> Generic: Unprotected Administrator directory
Versions Affected: Any
Check: /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.pdf
Vulnerable? N/A

# 3
Info -> Core: Multiple XSS/CSRF Vulnerability
Versions Affected: 1.5.9 <=
Check: /?1.5.9-x
Exploit: 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

# 4
Info -> 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

# 5
Info -> Core: Frontend XSS Vulnerability
Versions effected: 1.5.10 <=
Check: /?1.5.10-x
Exploit: 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

# 6
Info -> Core: Frontend XSS - HTTP_REFERER not properly filtered Vulnerability
Versions effected: 1.5.11 <=
Check: /?1.5.11-x-http_ref
Exploit: 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

# 7
Info -> Core: Frontend XSS - PHP_SELF not properly filtered Vulnerability
Versions effected: 1.5.11 <=
Check: /?1.5.11-x-php-s3lf
Exploit: An attacker can inject JavaScript code in a URL that will be executed in the context of targeted user browser.
Vulnerable? N/A

# 8
Info -> Core: Authentication Bypass Vulnerability
Versions effected: Joomla! 1.5.3 <=
Check: /administrator/
Exploit: Backend accepts any password for custom Super Administrator when LDAP enabled
Vulnerable? N/A

# 9
Info -> Core: Path Disclosure Vulnerability
Versions effected: Joomla! 1.5.3 <=
Check: /?1.5.3-path-disclose
Exploit: Crafted URL can disclose absolute path
Vulnerable? N/A

# 10
Info -> Core: User redirected Spamming Vulnerability
Versions effected: Joomla! 1.5.3 <=
Check: /?1.5.3-spam
Exploit: User redirect spam
Vulnerable? N/A


# 11
Info -> 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

# 12
Info -> CoreLibrary: phpmailer Remote Code Execution Vulnerability
Versions effected: Joomla! 1.5.0 Beta/Stable
Check: /libraries/phpmailer/phpmailer.php
Exploit: N/A
Vulnerable? N/A

# 13
Info -> 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

# 14
Info -> 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)%3B
Vulnerable? No

# 15
Info -> CoreComponent: MailTo SQL Injection Vulnerability
Versions effected: N/A
Check: /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=1
Vulnerable? No

# 16
Info -> CoreComponent: com_content Blind SQL Injection Vulnerability
Versions effected: Joomla! 1.5.0 RC3
Check: /components/com_content/
Exploit: /index.php?option=com_content&view=%' +'a'='a&id=25&Itemid=28
Vulnerable? No

# 17
Info -> 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

# 18
Info -> 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

# 19
Info -> 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

# 20
Info -> CoreComponent: com_content view=archive SQL Injection Vulnerability
Versions effected: Joomla! 1.5.0 Beta1/Beta2/RC1
Check: /components/com_content/
Exploit: Unfiltered POST vars - filter, month, year to /index.php?option=com_content&view=archive
Vulnerable? No

# 21
Info -> 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

# 22
Info -> 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

# 23
Info -> CoreComponent: com_installer CSRF Vulnerability
Versions effected: Joomla! 1.5.0 Beta
Check: /administrator/components/com_installer/
Exploit: N/A
Vulnerable? N/A

# 24
Info -> CoreComponent: com_search Memory Comsumption DoS Vulnerability
Versions effected: Joomla! 1.5.0 Beta
Check: /components/com_search/
Exploit: N/A
Vulnerable? No

# 25
Info -> CoreComponent: com_banners Blind SQL Injection Vulnerability
Versions effected: N/A
Check: /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'='2
Vulnerable? No

# 26
Info -> 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/A

Nu 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.net

CMS Explorer

CMS 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-explorer

Pentru a incepe o scanare simpla,

screenshot1fl.png

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 -osvdb

Reusiti sa interpretati si singuri rezultatul.

Instalarea in siguranta

Primul 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,allow
allow from 92.55.65.43
deny from all

Nota: 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 -Indexes

O 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 Off

Un 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,deny
deny 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,deny
Deny 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.php

Intra 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. :)

Concluzia

Chiar 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 Resources

BackTrack-Linux

OWASP

OVSDB

Edited by Wubi

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...