天天看点

Web应用安全测试扫盲

最近新闻热点《西北工业大学遭美国国家安全局网络攻击事件》想必大家都看到了,攻击的目的无外乎获取涉及到国安的机密数据。

移动互联网时代,Web应用产生并存储海量用户隐私以及交易数据,对Web应用进行安全测试变得越来越重要。

本文属于扫盲贴,给大家介绍下网站安全测试的概念、工具、关键术语以及测试方法,对安全测试有个大概的了解。

什么是安全测试?

简单理解安全测试就是一个测试机密数据是否安全的过程(即验证数据不会被没有权限的个人访问到)。

关键术语

什么是“漏洞”?

就是Web应用程序中的一个缺陷。这种“缺陷”的原因可能是由于应用程序中的错误、注入(SQL/脚本代码)或病毒的存在。

什么是“URL操作”?

Web应用会通过URL在客户端(浏览器)和服务器之间传递信息。更改URL中的一些信息有时可能会导致服务器的意外行为,这被称为URL操作。

什么是“SQL注入”?

通过Web应用界面将SQL语句插入到查询框,然后由服务器执行的过程。

什么是“XSS(跨站点脚本攻击)”

XSS 允许恶意用户将代码植入到 web 网站里面,供给其它用户访问,当用户访问到有恶意代码的网页就会产生 xss 攻击。XSS是因为用户输入的内容被浏览器当作了前端代码执行。

安全测试方法

为了对Web应用程序进行有效的安全测试,安全测试人员应该对HTTP协议非常了解。了解客户端(浏览器)和服务器如何通过HTTP进行通信非常重要。

#1) 密码破解

Web应用程序上的安全测试可以从“密码破解”做起。为了登录应用程序,理论上可以盲猜用户名/密码,也可以使用一些密码破解工具。市面上存在大量的开源密码破解器。

如果Web应用程序没有强制要求用户设置复杂的密码(例如,带有字母表、数字和特殊字符,或至少有特定数量的字符),破解用户名和密码可能不需要很长时间。

如果用户名或密码存储在cookie中而不加密,那么攻击者可以使用不同的方法来窃取用户cookie和存储在cookie中的信息,如用户名和密码。

#2)URL参数传递加密测试

测试人员应该检查URL是否传递涉及用户隐私的重要信息,例如密码明码等。因为当应用程序使用HTTP GET方法在客户端和服务器之间传递信息时,你的密码很可能被不法分子拦截捕获。

通过HTTP GET请求将用户信息传递给服务器进行身份验证或获取数据。攻击者可以操作从此GET请求传递到服务器的每个输入变量,以获取所需信息或损坏数据。在这种情况下,应用程序或Web服务器的任何异常行为都是攻击者进入应用程序的大门。

#3)SQL注入

下面介绍下SQL注入。在任何文本框中输入单个引号(')都应被应用程序拒绝。相反,如果测试人员遇到数据库错误,这意味着用户输入被插入某个查询中,然后被应用程序执行了。在这种情况下,应用程序非常容易受到SQL注入的影响。

SQL注入攻击非常重要,因为攻击者可以从服务器数据库获取重要信息。如果用户输入数据需要传递给SQL语句以查询数据库,攻击者可以注入SQL语句的一部分作为用户输入,以从数据库中提取重要信息。

即使攻击者成功攻破了应用程序,从浏览器上显示的SQL查询错误中,攻击者也可以获得他们想要的信息。在这种情况下,应正确处理/转义用户输入中的特殊字符。

#4)跨站点脚本攻击(XSS)

攻击者可以使用此方法在被攻击者浏览器上执行恶意脚本或URL。使用跨站点脚本,攻击者可以使用JavaScript等脚本来窃取用户cookie和存储在cookie中的信息。

例如,http://www.examplesite.com/index.php?Userid=123&query=xyz

攻击者可以轻松地将一些<script>作为“&查询”参数传递,该参数可以获取浏览器上的重要用户/服务器数据。

最经典的弹窗语句:<script>alert(1)</script>

Web应用安全测试扫盲

在安全测试期间,测试人员应非常小心,不能修改web应用的以下任何内容:

  • 应用程序或服务器的配置。
  • 在服务器上运行的服务。
  • 应用程序后台存储的用户数据。
  • 应避免在生产环境进行安全测试。
  • 乌云网:http://www.anquan.us/
  • 漏洞盒子:https://www.vulbox.com/
  • 360网站安全检测:http://webscan.360.cn/
  • 其他:appsans、axws
  • 后台回复【测开】获取测试开发xmind脑图
  • 后台回复【加群】获取加入测试社群!

继续阅读