27 Haziran 2014 Cuma

Mail.ru nasıl hacklendi?



Merhabalar,

Bu yazımızda Mail.ru sitesinde gerçekleştirilmiş olan bir saldırıyı simüle edeceğiz.
Mail.ru Rusça hizmet veren en büyük e-posta servisidir. 16 Ekim 2001 tarihinden bu yana web sitesi bu isimle anılmaktadır. Mail.ru hisselerinin % 30'u 2007 yılının Ocak ayında bir Güney Afrika şirketi olan Naspers' e satılmıştır. Mail.ru 2005 yılında açıkladığı verilerle 30 milyon abonesi bulunduğunu ve site üzerinden günde 25 milyon e-posta gönderimi yapıldığını deklare etmiştir. (Wikipedia )
Döküman önerisi:
Bu yazıyı okumadan önce Sql enjeksiyon test ortamı oluşturmak başlıklı yazımızı okumanız, bu konuyu anlamanız açısından önemlidir. 


Saldırı sonrası incelememize başlamak için https://hackerone.com/reports/11861 bağlantısını açalım. Saldırgan, hedefi POST /interview/?interview HTTP/1.1  olarak belirlemiş ve hemen altında saldırı vektörünü paylaşmış.

email=e&media=e&phone=/*'XOR(if(2=2,sleep(10),0))OR'&position=e&speaker=&username=e

Yukarıdaki örneğimizde görüldüğü üzere phone değişkenine saldırı vektörü yerleştirilmiş ve POST veri olarak sunucuya iletilmiş.

Şimdi, saldırı vektörünün ne yaptığını anlamak için query string'i anlamlandırmamız gerekmekte. Bunun için Modsecurity'nin de kullandığı libinjection'ı kullanacağız. Aşağıdaki bağlantıya tıklayarak analiz sonuçlarını inceleyebilirsiniz.

https://libinjection.client9.com/diagnostics?id=email=e&media=e&phone=/*'XOR(if(2=2,sleep(10),0))OR'&position=e&speaker=&username=e&type=fingerprints

" SQLi Detected : True " ifadesi ile Libinjection uygulamasının bu query string'te bir sql enjeksiyon aksiyonu tespit etmiş olduğunu görüyoruz. Analiz için sadece saldırı vektörünü de kullanabilirdik.

Bu sonuçtan sonra saldırgan'ın raporuna geri dönecek olursak zaman tabanlı bu saldırıyı mail.ru engelleyememiş gibi görünüyor ve bu zafiyet mail.ru yetkilileri tarafından kapatılmış durumda.

Zafiyetin bir benzerini oluşturmak istersek ne yapabilirdik? 

Bunun için "SqlFiddle" uygulamasını başlatıp aşağıdakine benzer bir sql sorgusu oluşturuyoruz. Siz bu sorguyu farklı durumlara göre tekrar oluşturabilirsiniz.

Örnek Sorgu:
SELECT id, type, details FROM supportContacts
WHERE id='1/*'XOR(if(2=2,sleep(10),0))OR'' AND type='Email'

MySQL 5.5.32 sürümündeki test :
http://sqlfiddle.com/#!2/a2581/26939

Testin başarılı olması için "Run sql" tuşuna bastığımızda hata vermemesi gerekiyor.

EOF

Hata Avcılığı için öneriler : 
http://www.superbug.co/2013/10/kurumlar-icin-hata-odul-program.html


0 yorum:

Yorum Gönder