^

XSS平台开发实践

前言

挖掘SRC之后,XSS实战其实特别特别少。基本上都是使用类似

<img src=1 onerror=alert(1)/>

来证明能存储或者反射即可,涉及帖子、评论的存储XSS无需过多证明,因为本身账户就是普通账户,没有什么区别。但是最近挖了一个存储的XSS是向后台发起提问,但是我并不知道后台的交互情况,所以需要盲打来判断是否可以劫持后台cookie。并且,我其实早就想做一个自己的xss平台来测试了,不然每次都是那几个代码,不能模块化快速使用会给我的漏洞挖掘多很多不必要的百度时间。

虽然互联网的xss平台很多,开源的平台也很多。但是我还是习惯用自己的框架开发,并且第三方的平台我是不信任的。

设计开发

开发之前我们需要设计一下模块:

1.XSS项目列表

2.XSS记录

3.XSS配置

第一个模块大概是这样的流程:


第二个就不必多说了,写一个api来获取由js发起请求发送的一些数据。这里为了防止数据与url编码产生错误,统一进行base64编码后传递给api解码。

第三个基本就是默认模块的选择、公众号接收提醒开关与指定的openid。

写第一个方法是比较简单的,我给每一个模块做了单独的模块hash,类似于id,其实如果是个人使用的话不用这么麻烦,这个主要是为了后期多用户使用时的区分,以及方便快速定位触发的项目查看使用到的一些代码。

效果如下:


需要注意的是,我还没有去研究缩短网址的伪静态方法,目前根据api,通过item名拿到js代码。


这里默认的一些代码就是获取referer、cookie、url,然后发送到接口保存到数据库。

XSS记录的模块也就是存在add方法的api模块,写出来大致如下


很基础的crud,和前面没什么区别,这里本来是想记录客户端ip的,但是发现比较麻烦,还涉及到跨域获取内容、script动态创建js但是无法取值的问题,但想了想其实ip并没什么用吧,还不如referer拓展一下系统接口,这里是没有修改之前的界面。

攻击后台

基本代码测试基本没问题后,我们就已经可以用xss平台生成的xss代码攻击一下客服后台了:

1.创建item


2.js引入到image onerror事件动态创建


3.等待触发


同时,我的公众号会给我发送模版消息,会从公众号提醒我有cookie上钩了。


点击模版后 会打印json数据格式信息


当需要很严格的鉴权来确保这个只有你的微信才能访问到

Todo

1.增加模块选择,根据功能选择自己需要的默认代码

2.增加通知方式(邮箱、钉钉等)

3.多用户模式开发

4.网址缩短收集,毕竟api加载实在太长了

5.增加paylod自动生成