前言
最近跟着大佬打了一场CTf,虽然入门尚浅,却发现了网络安全这个新的世界。这里就作为个人学习的一个阶段性总结,介绍一下一些基本工具的基本使用
关于安全漏洞
想知道攻击一个网站有多少种方法,我们可以先看看网站有多少个部分。最简单来说,根据mvc模型,一个网站可以分为视图层、模型层、控制器三个部分,再加上中间的前后端通信部分。一个网站最经典的运作流程大致如下:用户输入url->请求被发送到相应服务器->服务器读取报文参数(有的话),用sql语句对数据库发出请求得到数据(或通过文件)并发回回应报文->浏览器接收到报文并解析,渲染出我们看到的页面我们一般有四个方面可以攻击
- 前端:XSS,js等
- 后端:代码静态审计
- 数据库:sql注入等
- http流量分析、伪装
而这些方面都有各自的攻击工具,这里只介绍最简单、业余人员最常用(大概)、我会的的几种
工具
一、前端
前面提到浏览器的页面是通过解析报文里的脚本代码渲染出来的,一旦报文被发过来,在下一次和服务器联络时就只能任我们调教了。而要查看,修改前端代码,其实最方便的工具就是“f12”,也就是浏览器的源代码查看工具
上面这个是edge浏览器的源代码查看工具
而这个则是chrome浏览器的源代码工具
在这些工具里面不仅可以查看代码,还可以通过修改代码来改变(本地上的)页面效果与逻辑,大部分工具还有断点调试、流量分析等功能
事实上,除了自带的工具,不少浏览器插件(一般是火狐或者chrome的)往往有着更强大的功能,可以轻松地分析xss等,这个暂且按下不表,留待读者自行探索
二、http报文查看、流量分析等
这个部分主要介绍两个工具,wireshark和burpsuite
-
Wireshark
Wireshark 被誉为网络工程师的万用表,其也确实便捷好用。通过监听网卡流量,她可以抓到几乎所有的报文(如果你想抓取https则需要花一些功夫)
wireshark可以在官网免费获取最新版本,也可以在其他软件网站下载,目前没有彻底汉化的版本,在此我用的是2.4.0版本作演示
打开Wireshark,最先见到的往往是下图这个界面,可以在此选择你需要监听的网卡,双击即可开始捕获所选网卡的流量
进入监听页面如下(图片来自这里)
- Display Filter(显示过滤器), 用于过滤
- Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表
- Packet Details Pane(封包详细信息), 显示封包中的字段
- Dissector Pane(16进制数据)
- Miscellanous (地址栏,杂项)
例如我们最常想看到的http报文内容,如果不想自己分析可以点开封包详细信息里的最下面那行,就可以看到很多
Wireshark的精髓其实一大部分在于过滤器(filter)里的规则,合理应用规则能帮助你更快地找到你想看的,例如上面用的
- http
- ip.src eq ‘某ip’(猜猜是啥意思?)
- ip.dst eq(同上)
至于更深一步的学习,可以参考这篇文章
- burpsuite
burpsuite与其说是抓包工具,不如说是一个综合型的网络分析工具,她的功能比Wireshark更多,更强大也更贵。这里我用的是1.7.13版本作演示
和Wireshark不同,burpsuite在使用前首先要设置浏览器代理——换言之,她的功能很多是基于通过浏览器的流量的。这方面不同浏览器有较多不同,此处仅以edge浏览器作演示如下图
配置好代理后,我们打开burpsuite,看到如下画面。如果是临时抓一下包的话可以选择第一项“临时项目”
之后start burp之后,刷新你想抓包的页面,就会发现在burp页面的proxy选项卡上出现高亮,点击进去就能看到抓的包了
当然,就像我上面说的,burpsuite的功能非常的强大,远不止于抓包。举个例子,在抓包页面右键点击呼出快捷菜单选择“Send to reapeater”后,就可以在repeater选项卡里点击"Go"将该请求发送到网站然后拦截回应的报文——而在发送之前你可以对发送的报文作任何修改,这里就有很多文章可以做了
顺带一提此处用的示例网站是freebuf,一个很棒的技术网站
而如果你需要了解更多,可以阅读这个系列 fendo的博客
三、注入工具
SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。
sqlmap是一个基于python2.x的脚本工具,因此用户电脑里必须首先安装python2.x(3.x版本也不行)。将这里的安装包下载并解压后,在命令行里进入安装目录并执行sqlmap.py并在后面加上相应的参数即可运行她的各项功能,例如sqlmap.py -h
即可查阅她的帮助列表,查看各种命令选项
sqlmap中一共有以下十六个选项卡:
- 帮助选项卡;
- Target(目标选项卡);
- Request(请求选项卡);
- Optimization(优化选项卡);
- Injection(注射选项卡);
- Detection(探测选项卡);
- Techniques(注入技术选项卡);
- Fingerprint(指纹选项卡);
- Enumeration(列数据选项卡);
- Brute force(爆破选项卡);
- User-defined function injection(用户自定义函数注入选项卡);
- File system access(系统文件操作选项卡);
- Operation system access(操作系统访问选项卡);
- Windows registry access(Windows注册表选项卡);
- General(一般选项卡);
- Miscellaneous(杂项);
其中最常用的就是目标选项卡和请求选项卡等,这里只介绍最简单的用法
首先我们选择一个简单的网站http://ctf5.shiyanbar.com/8/index.php?id=1
我们启动sqlmap并使用目标选项卡的-u参数试着注入一下
图中最上面那行就是我们输入的代码,下面则是自动注入过程给出的反馈。实际操作中可以通过分析这些结果来调整参数以获得更高的注入效率
那么图中可以看到其实已经检测到注入点(id)了,下面我们试着列出网站里的数据库,利用请求选项卡里的--dbs参数
从图中我们可以看到,sqlmap已经爆破出了该网站的数据库(红框处)。接下来只需要继续选定数据库来一步步列出数据表就可以了
当然这个几乎可以说是最简单的例子了,很多时候需要利用反馈过来的payload等分析服务器上的权限、代码、数据结构等,并灵活利用各项参数:cookie、get参数等绕过防御,才能最后找到想要的数据。另外,sqlmap虽然好用,但若要真正说最有效率的,其实反而是手工注入,前提是对sql注入有着极深的了解。换言之,sqlmap更像是新手用的一款暴力工具(但是就是很好用嘛)
啊更多攻略可以查看这里
四、php代码静态审计工具
此处主要介绍seay和rips,两个工具各有优劣,可以同时使用
所谓静态审计,看着高端,其实就是找代码中的安全漏洞。举例来讲,我们有一条原则叫做“所有用户的输入都是不可靠的”,很容易理解,那些把用户输入的变量作为语句的代码都是不可靠的,很容易被嵌入脚本并利用注释符的闭合注释掉我们原本的正常代码,从而使得这段代码成为别人的间谍,看起来毫无问题却会执行完全不同的功能。而这两款工具就是用来检测这些安全漏洞的
首先介绍seay吧。seay是国人开发的一个开源程序,执行截图如下
新建项目并将代码放入其中即可检测——对,这些玩意之所以叫静态审计,就是因为你并不能审计远程服务器而只能对本地代码进行检查
从截图可以看出,seay的特点是,会把每一个他认为有问题的代码段都列出来——而这些并不都有问题
而rips则是一个外国脚本,她并不能直接运行而只能运行在服务器上——因此你一般会需要一个类似wamp一样的东西。使用时,需要在浏览器里进入localhost相应目录,进入rips后,rips路径栏里输入需要审计的文件路径即可
那么在两个软件的截图里我们可以看到,其实rips相对而言虽然找出来的漏洞要远少于seay的,这是因为她已经经过了一轮智能判断——这也使得她不但能找出漏洞还能详细地告诉你漏洞信息甚至应该如何改正
相对而言,rips更适合新手与快速审计,而seay则适合熟练的操作者在时间相对充足时进行更详细与精确的审计
结语
emm其实没啥好结语的,工具毕竟是工具,要想使用这些工具进行实战需要的对代码的熟悉其实未必比手动爆破要好,但是若是已经对网络编程有了一定了解或者只是进行简单的爆破的话,工具能大大提高你的工作效率。更多内容请期待下一篇自行百度