Web安全测试学习笔记——“淘金”式攻击

简介:

做软件测试的目的在于找到缺陷和证明缺陷,在这个过程中进行全面覆盖性或反复测试,以图无限地趋近100%,结果可能很好,但工作效率非常低。在WEB安全测试上,如何避免大海捞沙,需要有的放矢,把有价值的信息淘出来。

  安全测试的出发点和功能测试不太相同,安全测试的手段就是攻击,攻击,还是攻击。寻找有价值的信息,就是测试的第一招。“淘金”就是其中的一种方式,一般来说由以下信息需要关注。

  ◆ HTML中的代码注释

  ◆ HTML中的敏感代码

  ◆ 服务器或应用程序的错误信息和HTTP响应

  代码注释是一块很容易被开发人员忽略掉的信息,因为对于开发人员来说,这些就是他们做后期开发的“工程文档”,再正常不过的东西,甚至很乐意文件中能有更的关键注释。如代码中会出现“标记为1时,表示XXX信息”或“若为空,则交由XX处理”。这类信息只需要通过阅读HTML文件即可发现,并且对于攻击者来说是非常好的指南。

  如果攻击者能够根据通过对源代码的处理,获取到数据库信息、用户名、密码等数据时,这个应用是非常危险的。要获取这样的信息,首先需要清楚应用间的数据传递方式。通过GET方式传递的,可以直接在URL中获取到“参数名=参数值”,如果是通过POST传递的,就需要借助抓包工具,比如HttpFox、HttpWatch。当把所有关联页面都浏览完成后,就可以生成一张页面间的映射关系图,同时也可以知道它们之间参数的传递情况。如果应用程序实现了访问级别区分,比如高级别用户享有特权操作,那么就可以从低等级用户开始,逐级淘金。通过映射图阅读源代码,寻找注释中引导信息,就可以获得有价值的信息。除了手工地去寻找,还可以利用正则表达式自动搜寻。

  当找到以上信息后,检查页面之间传递的参数,看看哪些参数能够使得应用程序出错,这个时候就能发现一些有用的信息。如连接数据库时出错,脚本无法处理,该出错页面不但会提示错误,还可能把出错点附近的相关代码也显示出来,这些相关代码可能会把数据库名、表对象名及字段名等信息暴露出来。或者强行产生语法错误、营造无法处理的异常场景来破坏应用程序,则会得到服务器对其响应的许多函数调用。因此无论是应用程序还是Web服务器,应该谨慎维护好应对对策略。还有一种常见的漏洞,大家可以到各网站上去自行寻找,即对于用户名和密码输入不正确时触发不同的报错信息。如果使用这样的逻辑进行用户名和密码匹配的判断,当攻击者暴力破解时,他能够很清楚的知道,当前使用的用户名是否是已注册用户(当用户名正确时,提示是密码错误)。

  如何进行防范

  1、确定HTML中注释是否包含敏感信息;或在日常环境中保留这些注释,而在线上去除这些注释。

  2、尽量对于错误信息进行二次处理,尽量让用户看到的错误提示是模糊且有价值的;尽量把相关细节信息保留在服务器的日志文件中,方便开发调试的同时规避安全风险。同时需要定期检查这些日志文件,了解是否有错误信息是未被处理的。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
2月前
|
SQL 安全 测试技术
Web应用程序安全测试
Web应用程序安全测试
|
2月前
|
Web App开发 编解码 前端开发
面试题22:如何测试Web浏览器的兼容性?
面试题22:如何测试Web浏览器的兼容性?
|
3月前
|
存储 缓存 监控
Web 应用程序性能测试核心步骤
Web 应用程序性能测试核心步骤
|
3月前
|
设计模式 Java 测试技术
软件测试/测试开发/全日制|Page Object模式:为什么它是Web自动化测试的必备工具
软件测试/测试开发/全日制|Page Object模式:为什么它是Web自动化测试的必备工具
53 0
|
2天前
|
SQL 存储 前端开发
< 今日份知识点:web常见的攻击方式(网络攻击)有哪些?如何预防?如何防御呢 ? >
网络安全威胁日益严重,2017年的永恒之蓝勒索病毒事件揭示了网络攻击的破坏力。为了防御Web攻击,了解攻击类型至关重要。Web攻击包括XSS、CSRF和SQL注入等,其中XSS分为存储型、反射型和DOM型,允许攻击者通过注入恶意代码窃取用户信息。防止XSS攻击的方法包括输入验证、内容转义和避免浏览器执行恶意代码。CSRF攻击则伪装成用户执行操作,防范措施包括同源策略和CSRF Token验证。SQL注入则通过恶意SQL语句获取数据,预防手段包括输入验证和使用预编译语句。面对网络威胁,加强安全意识和实施防御策略是必要的。
|
2天前
|
XML Web App开发 测试技术
python的Web自动化测试
【4月更文挑战第16天】Python在Web自动化测试中广泛应用,借助Selenium(支持多浏览器交互)、BeautifulSoup(解析HTML/XML)、Requests(发送HTTP请求)和Unittest(测试框架)等工具。测试步骤包括环境搭建、编写测试用例、初始化浏览器、访问页面、操作元素、验证结果、关闭浏览器及运行报告。注意浏览器兼容性、动态内容处理和错误处理。这些组合能提升测试效率和质量。
11 6
|
1月前
|
安全 测试技术 API
请描述在 Python WEB 开发中常用的测试方法。
请描述在 Python WEB 开发中常用的测试方法。
18 0
|
1月前
|
Web App开发 前端开发 测试技术
Web应用程序测试工具Selenium用法详解
Web应用程序测试工具Selenium用法详解
37 0
|
2月前
|
Java 测试技术 编译器
JMM测试利器-JCStress学习笔记
JMM测试利器-JCStress学习笔记
|
2月前
|
Web App开发 测试技术 数据安全/隐私保护
Web自动化测试工具Selenium
Web自动化测试工具Selenium