当前位置:首页 > 电脑常识 > 正文

Flash XSS检测脚本的简单实现 8090安适门户

11-20 电脑常识

这里主要是讲如何快速扫描到有问题的flash文件,用于批量,有时候很笨的要领也会有奇效,下面记录一下在实现过程中的一些思路和遇到的一些坑。

第三方flash插件

通过本身为数不久不多的网站渗透的经验,发明了两种存在xss的flash插件在国内的网站中对照遍及,一个是zeroclipboard.swf,一个是swfupload.swf,下面分袂介绍下: 

1、zeroclipboard.swf

主要的成果是复制内容到剪切板,中间由flash进行中转保证兼容主流浏览器,具体做法就是使这个透明的flash漂浮在复制按钮之上,下面给出xss poc代码:

ZeroClipboard.swf?id=\%22))}catch(e){(alert)(/XSS/.source);}//&width=500&height=500

原因显而易见,Externalinterface.call第二个参数传回来的id没有正确过滤导致xss

这里给出了缝隙前因后果,最后的修复其实很简单,将旧版本的 

id = flashvars.id;

下面加上这么一行代码

id = id.split("\\").join("\\\\");

通过使用split()把字符串拆分成数组,再用join()拼接成字符串,把id参数中的所有”\”全部转义成”\\”,从而制止了输出点前面的引号被闭合,也就制止了执行后面的xss代码

具体缝隙道理不才面的缝隙实例里已经说的很清楚了

[腾讯实例教程] 那些年我们一起学XSS – 16. Flash Xss进阶 [ExternalInterface.call第二个参数]

通过多次手工的经验,列出如下可能存在ZeroClipboard.swf的payload目录

/ZeroClipboard.swf

/flash/ZeroClipboard.swf

/js/ZeroClipboard.swf

/swf/ZeroClipboard.swf

……

2、swfupload.swf

顾名思义,web文件上传组件

下面给出poc代码

swfupload.swf?movieName=aaa%22])}catch(e){(alert)(1)};//

这里直接给露马脚实例

[腾讯实例教程] 那些年我们一起学XSS – 15. Flash Xss进阶 [ExternalInterface.call第一个参数]

因为这个例子说的就是swfupload.swf,这里就不再赘述了,我们看一下github上的修复要领

Fixes a XSS issue in ExternalCalls.

多了这么一句

this.movieName = this.movieName.replace(/[^a-zA-Z0-9\_\.\-]/g, "");

正则表达式中设置了 g(全局)标识表记标帜,暗示替换全部,意思就是将所有的[^a-zA-Z0-9\_\.\-]替换为空,’^'的意思长短,小写字母a-z,大写字母A-Z,数字0-9,再加上’_'、’.'、’-'这三个标记,扫描movieName参数的每个字符,只要一个字符不在上述的字符集里面,就删除去,大口语就是这个意思

再列一下可能呈现swfupload.swf的payload目录

/swfupload.swf

/swfupload/swfupload.swf

/upload/swfupload.swf

/images/swfupload.swf

/static/swfupload.swf

/common/swfupload.swf

……

设计思路

为了实现对上述两个swf文件的扫描,首先需要一个子域名列表,这里保举两款,一个是seay的layer子域名挖掘机,字典对照全,速度对照慢;一个是lijijie的subDomainsBrute,字典对照小,速度对照快。看小我私家兴趣了,两款都能导出扫描功效到txt文件,这是我们需要的

按照手工告成的经验,两个swf文件一般都存在于web的静态资源目录里,这些个目录是我们需要找出来的,怎么找,找哪些,其实是一个取舍的过程,更多的是舍的过程

1、一舍子域名

放弃了https的子域名web,因为无法判断子域名是http或者https,如果全部判断两个,扫描时间double,不同算

home_page = "http://"+domain_name 2、二舍访谒页面

我这里的思路是只扫首页,把首页链接爬下来,整个网站的静态资源好比js文件,css文件,image文件的目录差不久不多都全了,然后提取目录与上面的payload拼接进行访谒,其他页面呈现的新的目录只能放弃,同时放弃的还有需要js跳转的首页

r = requests.get(home_page) 3、三舍扫描链接

首页中扫描出的链接只取href,src,action后面的链接,而且放弃了解析js里面庞大的链接,只取正常的url进行访谒,虽然知道可以通过Phantomjs之类的轻量级浏览器引擎做到,但是意义不大

link_list =re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=')|(?<=src=\").+?(?=\")|(?<=src=\').+?(?=')|(?<=action=\").+?(?=\")|(?<=action=\').+?(?=')" ,data) 4、四舍访谒时间

限制访谒时间为3s,超时即继续下一个,防备线程卡死,这里的3s是按照我的网络速度设定的,网速快固然可以设小点

timeout=3

下面是具体设计流程图

相关问题

没写过爬虫,一直是抱着边实践边修补的要领改进这个脚本,碰到的相关问题如下:

1、存在swf误报问题

温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/pc/12506.html

博客主人杰米WWW
杰米博客,为大家提供seo以及it方面技巧喜欢的朋友收藏哦!
  • 11365文章总数
  • 1378073访问次数
  • 建站天数
  •