关于NPS未授权访问漏洞的三种场景(附插件)

admin 2024年2月15日20:30:59评论67 views字数 2033阅读6分46秒阅读模式

0x00 前言

官方介绍:NPS是一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。

当 nps.conf 中的 auth_key 未配置时,通过生成特定的请求包即可获取系统后台权限。本文主要说明如何判断目标是否存在未授权访问漏洞,以及自动化利用。

0x01 场景一

访问路由,如果 crypt_auth_key 参数等于 5acabcf051cd55abca03d18294422e01 ,即可判断存在nps未授权访问漏洞

/auth/getauthkey
关于NPS未授权访问漏洞的三种场景(附插件)

此时通过网上公开的利用脚本直接生成poc后,拼接访问登陆后页面即可

/index/index?auth_key=194b9a81f11384a087ca27f8e6cccc00&timestamp=1698744652

打开 nps.conf 文件,可以看到在默认配置情况下,auth_key 参数是被注释掉的。

关于NPS未授权访问漏洞的三种场景(附插件)

0x02 场景二

访问 /auth/getauthkey 接口,如果发现 crypt_auth_key 参数的值不等于 5acabcf051cd55abca03d18294422e01,此时利用网上的脚本发现无法利用了,看似漏洞被"修复"了,但并没有完全修复。

关于NPS未授权访问漏洞的三种场景(附插件)

该值的加密方式为:AES/CBC/PKCS7Padding

在知道 auth_crypt_key 参数值(1234567812345678)的情况下,我们可以通过脚本对加密值进行解密

关于NPS未授权访问漏洞的三种场景(附插件)

最后通过脚本生成新的poc即可利用

关于NPS未授权访问漏洞的三种场景(附插件)

此时对应的配置文件为:将 auth_key 参数注释去掉,将默认值test修改为新的值,auth_crypt_key 参数仍为 1234567812345678 未改动。

关于NPS未授权访问漏洞的三种场景(附插件)

如果 auth_crypt_key 参数的值也被修改了呢?那么我们可以在获取加密值之后,使用脚本在本地离线对 auth_crypt_key 参数进行枚举,只有 auth_crypt_key 正确时,才能解密成功。

0x03 场景三

访问 /auth/getauthkey 接口,发现响应结果如下。

关于NPS未授权访问漏洞的三种场景(附插件)

此时对应的修复方式为:将 auth_key 参数注释去掉,并将默认值test修改为新的值,将 auth_crypt_key 参数注释掉。

关于NPS未授权访问漏洞的三种场景(附插件)

这种情况下,可以直接利用脚本对 auth_key 参数值进行枚举。具体流程为读取密码字典,依次通过字典密码结合脚本生成poc去访问后台页面,如果访问成功,则说明 auth_key 参数枚举成功。

0x04 burp插件编写

生成的poc会在短时间内失效,需要不停的生成新的,此时就需要一个burp插件去方便利用。

具体的代码实现就是每次访问都生成一个新的poc去自动拼接在url后面即可。

关于NPS未授权访问漏洞的三种场景(附插件)

在需要使用时,下载安装插件

关于NPS未授权访问漏洞的三种场景(附插件)

安装插件时会默认生成一个空白的配置文件,windows系统生成在 C:UsersPublicnps_poc_config.txt,其他系统生成在 /tmp/nps_poc_config.txt

如果是场景一,则无须修改nps_poc_config.txt 文件,直接访问 /index/index 即可

关于NPS未授权访问漏洞的三种场景(附插件)

如果是场景二,则可以将 /auth/getauthkey 接口得到的加密字符串,去AES在线解密网站解密,如果默认 auth_crypt_key (1234567812345678)可解密成功。

如:https://the-x.cn/cryptography/Aes.aspx

关于NPS未授权访问漏洞的三种场景(附插件)

则将值复制到 nps_poc_config.txt 文件中,再访问 /index/index 即可

关于NPS未授权访问漏洞的三种场景(附插件)

在利用结束后建议卸载插件,下次使用时再安装。如果 auth_crypt_key 不等于 1234567812345678 或是场景三,有必要的话则可以进一步编写脚本进行枚举。

公众号回复(1101)获取burp插件下载地址,以及本地解密和生成poc的demo

0x05 总结

1、不要忽略NPS默认密码(admin/123),遇到了先试一下。

2、默认情况下,通过NPS登录接口爆破错误10次锁定1分钟。

3、访问 /auth/getauthkey 接口,通过响应即可判断当前NPS对应的是哪种配置情况,从而判断是否存在漏洞。

4、测试发现若在配置文件中同时注释掉 auth_key 与 auth_crypt_key,访问 /auth/getauthkey 接口,响应也是 { "status": 0 } ,利用方式为场景一,大概没人会这样配置吧。

5、综合来看,比较稳妥的配置方式:修改后台默认账号密码,将 auth_key 设置为随机值,注释掉 auth_crypt_key。

0x06 参考文章

https://www.freebuf.com/vuls/374609.html

:,,.

原文始发于微信公众号(XINYU2428):关于NPS未授权访问漏洞的三种场景(附插件)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月15日20:30:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   关于NPS未授权访问漏洞的三种场景(附插件)http://cn-sec.com/archives/2166274.html

发表评论

匿名网友 填写信息