首页 编程 软件学院 查看内容

试试打造自己的漏洞扫描器吧~

2017-3-1 22:44 |来自: 互联网 2727 0

摘要: 本节w8ay同学会教大家用python写个自己的扫描器,在看这篇文章之前需要读者有一些编程经验,不需要是python,有过编程经验就行,这篇文章也不会大把的码上代码,重点在于解决问题的思路。大家看完这篇后可以用喜欢的 ...

本文原创作者: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/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除
1

路过

雷人

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

  • 路过

    匿名

最新评论

返回顶部