本文原创作者:w8ay 内容来源:i春秋社区 欢迎关注i春秋公众号(微信搜索:icqedu)了解更多技术干货,未经许可禁止转载。 ===================================================== 难易程度:★★★ 关键词;python、扫描器、漏洞 前 言 本节w8ay同学会教大家用python写个自己的扫描器[主动扫描],在看这篇文章之前需要读者有一些编程经验,不需要是python,有过编程经验就行,这篇文章也不会大把的码上代码,重点在于解决问题的思路。大家看完这篇后可以用喜欢的语言编写漏洞扫描器。 目 录 01.打造自己的漏洞扫描器 -扫描器雏形 sql漏洞判断程序 02.打造自己的漏洞扫描器 -扫描器优化(爬虫遍历方式,网络阻塞解决办法,) 03.打造自己的漏洞扫描器 -加入xss判断程序 04.打造自己的漏洞扫描器 -插件式扫描流程 这些都是主动扫描器,下期可能会说下被动扫描方式= - 注:代码环境是python3,部分代码可能在python 2.x环境有错误,在此说明。 0x03 正文 1.1:相关问题 扫描方式是主动扫描,也就是先用爬虫爬取链接,然后用判断模块判断这块链接是否有漏洞。别看思路很简单,写起来还是有些麻烦的,我们需要考虑一些问题(当然这些问题是我在编写的过程中遇到的,先和大家说下): 首先要考虑到是先爬去所有链接在进行检测还是一边爬去一边检测,可能大家都倾向于第二种方式,第二种方式比第一种困难在哪里呢? 第二个问题是速度问题,python本来速度就很慢了,单线程访问网页阻塞更慢,如何解决这个问题? 这些问题在接下来会一一解决,当然可能不是最优的解决方案。 1.2:[主动方式]原理分析 爬虫部分 http://bbs.ichunqiu.com/thread-17913-1-1.html xiaoye表哥的爬虫挺适合的,就借用一下,爬虫只需要修改一点代码。 对爬虫的修改: 小叶的爬虫策略是只要是url都爬,我们修改下,改为只爬指定网站,加个判断 在html_parser.py
主要写 判断模块 来判断这个url是否有漏洞 通过URL,我们可以写sql注入和xss来检测是否有漏洞。 2.1:简单的SQL判断思路 在url 后面加上 AND %d=%d 或者 OR NOT (%d>%d) %d后门的数字是可变的。 然后搜索网页中特殊关键词,比如: mysql中是 SQL syntax.*MySQL Microsoft SQL Server是 Warning.*mssql_ Microsoft Access 是 Microsoft Access Driver Oracle 是 Oracle error IBM DB2 是 DB2 SQL error SQLite 是 SQLite.Exception 等等.... 通过这些关键词就可以判断出所用的数据库 我们还要判断一下waf之类的东西,有这种东西就直接停止 简单的方法就是用特定的url访问,如果出现了像 ip banned ,firewall之类的关键词,可以判断出是waf了,具体的正则表达式是 (?i)(\A|\b)IP\b.*\b(banned|blocked|bl(a|o)ck\s?list|firewall) 当然我们只是简单的来判断是否有注入,用这个思路写个脚本,非常简单。 3.1:代码编写
然后通过正则匹配出来 正则如下,用一个字典存储[Python]
然后循环出来判断匹配就行了
输出结果
当能判断出数据库类型的时候百分之80就说明有漏洞,为了快速判断,这里就可以直接返回一个True了 当数据库判断不出来,我们在用and or not 等的sql语句构造 payload构造 BOOLEAN_TESTS = ("AND %d=%d", "OR NOT (%d>%d)") 判断很好写,先存下原始数据,在存下正确sql语句下的数据,在存下错误sql语句下的数据,这三个数据一对比,就可以判断了
让代码跑起来,测试下判断程序
将代码作为模块引入然后再取出url的时候判断他一下就行了 在spider_main.py
最后可以用原来爬虫的html_outputer模块把有漏洞的页面输出出来 一个简单的扫描器已经初具模型了,前面的问题还没有解决,接下来就是对扫描器的优化工作,下节继续 扫描器源码:https://github.com/boy-hack/bugscan 0x04 总结 这是一个最简单的雏形,不要拿这个扫描器和一些专业的扫描器进行对比嘻嘻~我们编写扫描器最主要是想弄清楚他的原理,以及如何优化。code的过程是很快乐的。之前编写过一个在线渗透平台,是否可以集成在上面呢?(又给自己开坑了...)
怎么样,大家学会了吗?快来试试打造属于你们自己的漏洞扫描器吧~ |
| 本文出处: http://www.toutiao.com/a6392351856191013121/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|