安全测试工具(连载1)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 安全测试工具(连载1)

在本书上卷中介绍了软件安全测试,本章介绍软件安全测试工具。软件安全测试工具不像性能测试工具,类型比较多,由于每个产品的功能比较多,本书仅对关键用法进行介绍,进一步的使用方法请读者参考产品的官方文档或网站。


1 安全扫描工具


1.1 Burp Suite

Burp Suite 用于攻击WEB应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。


它主要包括以下模块。

  •  代理:拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许拦截,查看,修改在两个方向上的原始数据流。
  •  测试器:应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。
  •  扫描器:一款高级的工具,执行后,它能自动地发现WEB应用程序的安全漏洞。
  •  测试器:定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing技术探测常规漏洞。
  •  重发器:靠手动操作来补发单独的HTTP 请求,并分析应用程序响应的工具。
  •  定序器:用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
  •  编解码器:进行手动执行或对应用程序数据者智能解码编码的工具。
  •  比较器:一款实用的工具,通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”。


Burp Suite是用JAVA开发的,使用之前务必安装及配置好JDK环境变量。本书介绍的BurpSuite版本为V2.011Beat


1. 目标和扫描

启动Burp Suite,进入“目标->网站地图”标签,点击1红框部分,即可看见扫描过滤器。

    image.png                      

1设置扫描目标过滤器


      然后进入“目标->范围”标签,设置扫描范围,包括需要扫描的范围和不需要扫描的范围,如2所示。


image.png

2添加扫描目标范围


      接下来进入“仪表盘”标签,点击“新扫描”,在弹出窗口中显示上一步配置的扫描范围,如3所示。


image.png

3设置扫描


在这个页面中设置“爬行和诊断”或者“爬行”。

  •  爬行:爬行扫描范围内的内容,扫描完毕将展示范围内的目录结构。
  •  诊断:在爬行的基础上,检查每个页面是不是存在安全漏洞,如果有安全漏洞,则在相应的地方展示告知。


接下来点击蓝色的三角形,启动扫描。扫描完毕,在“目标->网站地图”标签中展示爬行结果,如4所示;在“仪表盘”右侧显示诊断结果,如5所示。


image.png

4爬行结果


image.png

5扫描结果


2. 代理

      通过代理,可以拦截HTTP/S,为其他工具,比如重发器,测试器提供前序工作。进入“代理->选项”标签,设置代理监听器,如6所示。


image.png

6设置代理监听器


      然后在浏览器中设置代理,IP地址与端口同上面保持一致,如7所示。

image.png

7设置对应的浏览器代理


      进入“代理->截断”标签,注意先确认8红框部分为【拦截禁用】,即禁用拦截。


image.png

8禁用拦截


      在浏览器中进行操作,在需要拦截页面之前,点击【拦截禁用】按键,变为【拦截请求】,启用拦截。接下来在浏览器中进入所需页面,这个时候HTTP(S)请求没有发送到服务器端,而是被Burp Suite拦截,见9所示。

image.png

9请求被Burp Suite拦截


3.重发器

      在“代理->截断”标签拦截成功后,点击【行动】,然后点击【发送给Repeater】,如10所示。

image.png

10发送给Repeater


进入“重发器”标签,HTTP(S)被复制到“重发器”标签中。


案例1:使用重发器增加Cookies内容。

      在这里,仍旧使用附录A电子商务系统的登录模块,假设某个黑客模拟了一个登录提交页面,在这个页面中存在csrfmiddlewaretoken字段,value值拷贝于真正的电子商务系统的登录网页,由于没有cookies,现在利用Burp Suite的重发功能来模拟实现CSRF攻击。HTML主体代码如下。


<body>
<formmethod="post"action="http://192.168.1.122:8000/login_action/" enctype="multipart/form-data">
<input type="hidden"name="csrfmiddlewaretoken"value="CFfTFIlQMgPtwhmXXOQBMaAxFlxLNbD1GavbiG4iLVv2usI3D3eGWaOtHLwHhX8F">


用户名:

密码  :


requiredid="id_password"></p>
<button class="btn btn-lg btn-primarybtn-block" type="submit">登录</button><br>
</form>
 </body>


      首先通过代理模块拦截通过黑客本地页面提交的登录HTTP请求,并且发送给了重发器功能,如11所示。


image.png

11电子商务系统的登录请求


然后点击右上方的

image.png

图标,IP地址修改成127.0.0.1,然后点击【发送】按钮,发现响应页面为403错误页面,如12所示。


image.png

12修改请求之前,出现403错误


 接下来在请求头部中加入“Cookie:csrftoken=CFfTFIlQMgPtwhmXXOQBMaAxFlxLNbD1GavbiG4iLVv2usI3D3eGWaOtHLwHhX8F;”,其中CFfTFIlQMgPtwhmXXOQBMaAxFlxLNbD1GavbiG4iLVv2usI3D3eGWaOtHLwHhX8FCSRF令牌,与csrfmiddlewaretoken hidden中的值保持一致,再次点击【发送】按钮,发送成功。


案例2:使用重发器修改上传文件后缀。

进入一个具有上传文件功能的模块,这个模块只允许上传jpgpnggif三种格式的图片文件。黑客编辑了一个名为test.jsp的文件,把文件名改为1.jpg。提交后通过代理模块拦截并且发送给了重发器功能,见13所示。


image.png

13修改上传文件名后缀


在这里把1.jpg改为test.jsp。发送,到服务器上传文件的目录下查看,文件名为test.jsp


4. 测试器

      测试器主要对拦截下来的请求进行暴力破解的工具。


案例3:登录功能暴力破解。

在本地建立一个登录页面,代码如下。


<html>
<head>
<meta http-equiv="Content-Type"content="text/html; charset=gb2312">
<title>演示十九:SQL注入的测试探索(一),显示所有字段</title>
</head>
<form method="post"action="http://www.domain.com/login.jsp">
    姓名:<input type="text" name="username"maxlength="50"><br>
    密码:<input type="text" name="password"maxlength="50"><br>
    <inputtype="submit" value="登录">
</form>
 </body>
</html>


action=http://www.domain.com/login.jsp为远端服务器的登录验证页面。任意输入用户名和密码提交表单,用BurpSuite工具进行拦截,然后点击【行动】发送到Intruder中,如14所示。


image.png

14发送到Intruder操作


发送完毕,进入标签“测试器->位置”,如15所示。


image.png

15发送到Intruder后显示结果


      15中,对于用户名和密码已经被两个§符号括起来作为参数。可以通过右面的如16所示,修改、添加和删除参数。


image.png

16 修改、添加和删除Intruder参数


      攻击类型四个参数如1所示。

1       Intruder参数类型

攻击类型

说明

狙击手模式(Sniper)

单参数爆破,多参数时同一个字典按顺序替换各参数,总之初始值有一个参数不变。它使用一组Payload集合,依次替换Payload位置上被§标志的文本,对服务器端进行请求,用于测试被请求的参数是否存在漏洞。

攻城锤模式(Battering  ram)

多参数同时爆破,但用的是同一个字典。它使用单一的Payload集合,依次替换Payload位置上被标志§的文本,对服务器端进行请求,与狙击手模式的不同之处在于,如果有多个参数并且都是Payload位置标志时,使用Payload值是相同的,而狙击手模式仅能使用一个Payload位置标志。

草叉模式(Pitchfork  )

多参数同时爆破,但用的是不同的字典。它可以使用多组Payload集合,在每一个不同的(最多20个)Payload标志位置上,遍历所有的Payload。如果有两个Payload标志位置,第1个Payload值为username1和username2,第二个Payload值为password1和password2,则发起攻击时,将共发起两次攻击,第一次使用的Payload分别为username1和password1,第二次使用的Payload分别为username2和password2。

集束炸弹模式(Cluster  bomb)

多参数做笛卡尔乘积模式爆破。可以使用多组Payload集合,在每一个不同的(最多20个)Payload标志位置上,依次遍历所有的Payload。它与草叉模式的主要区别在于,执行的Payload数据Payload组的乘积。如果有两个Payload标志位置,第一个Payload值为username1和username2,第二个Payload值为password1和password2,则发起攻击时,将共发起四次攻击,第一次使用的Payload分别为username1和password1,第二次使用的Payload分别为username1和password2,第三次使用的Payload分别为username2和password1,第四次使用的Payload分别为username2和password2。


      在这里,选择Cluster bomb。进入标签“测试器->有效负载”,配置参数列表。在“有效负载集”选择“1”,为配置第一个参数,即username的有效负载;在有效负荷类型选择相应的类型。有效负荷类型介绍如下。


  •  简单列表(Simple list:这是最简单的Payload类型,通过配置一个字符串列表作为Payload,也可以通过手工的方式添加字符串列表或从文件中加载字符串列表。


  •  运行时文件(Runtime file:通过指定的文件,作为相对应Payload位置上的Payload列表。


  •  自定义迭代器(Custom iterator:这是一款功能非常强大的Payload,它共有8个占位,每一个占位可以指定简单列表的Payload类型,然后根据占位的多少,与每一个简单列表的Payload进行笛卡尔积,生成最终的Payload列表。


  • 字符串替换(Character substitution:这种Payload的类型是对预定义的字符串进行替换后生成新的Payload


  •  大小写替换(Case modification:对预定义的字符串,按照大小写规则,进行替换。


  •  递归grep Recursive grep:这种Payload类型用于从服务器端提取有效数据的情形,它需要先从服务器的响应中提取数据作为Payload,然后替换Payload的位置,从而进行攻击。它的数据来源于原始的响应消息,是基于原始的响应,在Payload的可选项设置(Options)中配置grep规则,然后根据grep去提取数据才可以发起攻击。


  •  不合法的Unicode编码(Illegal Unicode:在payloads里用指定的不合法的Unicode 编码替换字符本身,从这些Payload列表里产生出一到多个有效负荷。


  •  字符块(Character blocks:这种类型的Payload是指使用一个给定的输入字符串,然后根据指定的设置产生出一个指定大小的字符块,表现形式为生成指定长度的字符串。它通常使用边界测试或缓冲区溢出。


  •  数字类型(Number:这种类型的Payload是指根据配置,生成一系列的数字作为Payload


  •  日期类型(Dates:这种类型的Payload是指根据配置,生成一系列的日期类型的Payload


  •  暴力字典(Brute forcer:这种类型的Payload生成包含一个指定的字符集的所有排列特定长度的有效载荷,通常用于枚举字典的生成。


  •  空类型(Null payloads:这种负载类型产生其值是一个空字符串的Payload。在攻击时,需要同样的请求且被反复执行,在没有任何修改原始请求的情况下此Payload是非常有用的。它可用于各种攻击,比如Cookie的序列分析、应用层DDoS、或保持会话令牌是在其它的间歇试验中使用。


  •  字符frobberCharacter frobber:这种类型的Payload的生成规律是:依次修改指定字符串在每个字符位置上的值,每次修改都是在原字符上递增一个该字符的ASCII码。它通常用于测试系统使用了复杂的会话令牌的组件来跟踪会话状态。如果修改会话令牌中的单个字符的值之后,其会话还是进行了处理,那么很可能是这个令牌实际上没有被用来追踪的会话。


  •  Bit翻转(Bit flipper:这种类型的Payload的生成规律是:对预设的Payload原始值,按照比特位,依次进行修改。
  •  用户名生成器(Username generator):这种类型的Payload主要用于用户名和email账号的自动生成。


  •  ECB 加密块洗牌(ECB block shuffler:这种类型的Payload是基于ECB加密模式的Payload生成器,关于加密模式可以点击阅读相关文章做进一步的了解。其原理是因为ECB加密模式中每组64位的数据之间相互独立,通过改变分组数据的位置方式来验证应用程序是否易受到攻击。


  •  Burp Payload生成插件(Extension-generated:这种类型的Payload是基于Burp插件来生成Payload值,因此使用前必须安装配置Burp插件,在插件里注册一个Intruder payload生成器,供此处调用。


  •  Payload复制(Copy other payload:这种类型的Payload是将其他位置的参数复制到Payload位置上,作为新的Payload值,通常适用于多个参数的请求消息中,它的使用场景可能是。


1. 两个不同的参数需要使用相同的值,比如说,用户注册时,密码要求输入两遍,其值也完全一样,可以使用此Payload类型。

2. 在一次请求中,一个参数的值是基于另一个参数的值在前端通过脚本来生成的值,也可以使用此Payload类型。

选择第一个简单列表(Simple list),点击【Add From List】下拉条里面选择Usernames。如17所示。


image.png

17 添加系统默认的Usernames参数


接下来Payload Sets 选择2,配置password参数,同样选择第一个简单列表(Simple list),如16选择Passwords。再通过Add加入一些想设置的暴力登录用户名和密码参数。最后点击开始攻击,即可进行登录功能暴力破解。破解完毕通过查看响应消息来查看哪些参数破解成功。


      对于两个小工具:Decoder编解码器和比较器,相对比较简单,本书就不进行介绍。


星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net


顾翔凡言:

k=(p+m)t

其中:

k为常数。

p:团队人员质量水平,为单位小时内产生的有效质量,单位为/h;

m:团队方法质量水平,为单位小时内产生的有效质量,单位为/h;

t:为单位质量产品的交付时间,单位为h。


在团队方法质量水平不变,团队人员质量水平提高的情况下,交付时间变短;

在团队人员质量水平不变,团队方法质量水平提高的情况下,交付时间变短;

团队人员质量水平与方法质量水平乘积决定了软件的质量水平,如果这个值变小,则t变大;反之t变小。


例如,当k=4时:

当人员质量水平为1/小时、方法水平为1/小时时,交付时间为2小时。

当人员质量水平为2/小时、方法水平为1/小时时,交付时间为4/3小时。

当人员质量水平为1/小时、方法水平为2/小时时,交付时间为4/3小时。

当人员质量水平为0.5/小时、方法水平为0.5/小时时,交付时间为4小时

目录
相关文章
|
3月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
291 17
Selenium:强大的 Web 自动化测试工具
|
3月前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
4月前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
92 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
4月前
|
监控 测试技术 开发工具
移动端性能测试工具
移动端性能测试工具
176 2
|
4月前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
152 59
|
4月前
|
安全 网络协议 关系型数据库
最好用的17个渗透测试工具
渗透测试是安全人员为防止恶意黑客利用系统漏洞而进行的操作。本文介绍了17款业内常用的渗透测试工具,涵盖网络发现、无线评估、Web应用测试、SQL注入等多个领域,包括Nmap、Aircrack-ng、Burp Suite、OWASP ZAP等,既有免费开源工具,也有付费专业软件,适用于不同需求的安全专家。
570 2
|
4月前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
4月前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
296 1
|
5月前
|
jenkins 测试技术 持续交付
提升软件测试效率的实用技巧与工具
【10月更文挑战第12天】 本文将深入探讨如何通过优化测试流程、引入自动化工具和持续集成等策略,来显著提高软件测试的效率。我们将分享一些实用的技巧和工具,帮助测试人员更高效地发现和定位问题,确保软件质量。
102 2
|
5月前
|
测试技术
黑盒功能测试工具UFT的使用
黑盒功能测试工具UFT的使用
59 0
黑盒功能测试工具UFT的使用

热门文章

最新文章