安全性测试入门 (一):Brute Force 暴力破解攻击和防御

写在篇头:

随着国内的互联网产业日臻成熟,软件质量的要求越来越高,对测试团队和测试工程师提出了种种新的挑战。

传统的行业现象是 90% 的测试工程师被堆积在基本的功能、系统、黑盒测试,但是随着软件测试整体行业的技术积累和大环境,市场对于测试工程师的要求越来越全栈化,技术的突破是测试工程师的必修课。

安全测试就是测试工程师的高阶技能之一,不过安全性测试领域水非常深,对于普通测试工程师而言可能并不容易上手。

所以笔者准备写这个系列文章,做一个安全性测试入门级攻略。文章会采用 DVWA 项目,就其提供的几大模块,来进行安全性测试的初探和对安全性防御措施的简析。

1. DVWA - 非常脆弱的一个网页应用

DVWA- Damn voulnerable Web application(直译就是:非常脆弱的网页应用-_-!!!),是 UK 的一家安全性研究机构发布的一套网站系统,专门用来展示网站安全性问题和防御机制。对于我们学习 Web 安全性相关知识是一个很好的工具。

这套 Web 项目可以在 http://www.dvwa.co.uk/官网由 GitHub 下载。

DVWA 的安装很简单,只要架设起本地的 Tomcat+MySql 服务器,将 DVWA 部署到相应目录即可。

部署完毕后,登录应用,可以在左侧的菜单中看到如下模块:

image.png

他们分别是 Brute Force(暴力(破解))、Command Injection(命令行注入)、CSRF(跨站请求伪造)、File Inclusion(文件包含)、File Upload(文件上传)、Insecure CAPTCHA(不安全的验证码)、SQL Injection(SQL 注入)、SQL Injection(Blind)(SQL 盲注)、Weak Session IDs(弱会话标识)、XSS(DOM)(文档对象模型跨站脚本)、XSS(Reflected)(反射型跨站脚本)、XSS(Stored)(存储型跨站脚本)、JavaScript。

DVWA 设置有 4 种安全级别:Low,Medium,High,Impossible,分别对应着这个应用对于安全性攻击的防御级别。并且给出示例代码让我们了解相应攻击方式的防御机制。

image.png

今天我们来研习其中的第一种攻击方式:Brute Force 暴力破解。

2. Brute Force 暴力破解

Brute Force,即暴力破解,是指黑客利用密码字典,使用穷举法猜解出用户口令,是现在最为广泛使用的攻击手法之一。

现实场景中,穷举法的范围太广,通常会基于一定的策略和规则来进行穷举,比如 12306 曾经遭受的“撞库”攻击。

撞库是黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试批量登陆其他网站后,得到一系列可以登录的用户。由于很多用户习惯在各大网站和应用上使用同一套用户名和密码,这就意味着一旦其中某一个站点的用户隐私泄漏后,就有可能被黑客收集并用作撞库的数据。

下图是 DVWA 的暴力破解界面,将 DVWA 安全级别设为最低:

image.png

下面我们通过穷举的方式来破解这个应用的用户密码。手工输入用户名密码显然是不现实的,犹如大海捞针,所以考虑使用工具来实现。

我们使用 OWASP ZAP 来实现,ZAP 的安装和初始设置参考:OWASP ZAP 使用入门指南

设置好 ZAP 代理后,访问 DVWA 的 Brute Force 模块,用任意用户名密码尝试登录,即可抓到相关请求:

image.png
image.png

下面使用 Fuzz 功能来实现对用户名密码穷举破解:

image.png

image.png

image.png

image.png

image.png

image.png

3. 防御机制

前文提到,DVWA 的优点在于它提供了基于 PHP 的安全防御机制以供参考。

分别对比其 4 各安全级别的后台核心代码:

Low:
基本没有做任何防御。

image.png

Medium:
加入了 SQL 字符转义逻辑,避免了 SQL 注入攻击,但是不能防御暴力破解。

image.png

High:
加入了 Token 机制,每次登录页面都会随机生成 Token 字串,那么无脑爆破就不可能了,因为 Token 是完全随机的。

但是如果用更复杂的方法,每次先抓取当前页面 Token 值再随即进行字典式爆破,仍可以实现破解。

image.png

Impossible:
加入了账号锁定机制,数次登录失败后,账号会锁定,那么暴力破解就行不通了。可以说这是比较完善的防御机制。

image.png

4. 暴力破解测试

结合着上述讨论,我们可以总结一下安全测试的思路。

比如对于 Brute Force 暴力破解攻击:

这是一种渗透性测试的策略,需要一些专业测试工具比如文中的 OWASP ZAP 来支持。

回帖
请输入回帖内容 ...