最近新闻热点《西北工业大学遭美国国家安全局网络攻击事件》想必大家都看到了,攻击的目的无外乎获取涉及到国安的机密数据。
移动互联网时代,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应用的以下任何内容:
-
应用程序或服务器的配置。
-
在服务器上运行的服务。
-
应用程序后台存储的用户数据。
-
应避免在生产环境进行安全测试。
安全测试工具有哪些?
-
乌云网:http://www.anquan.us/
-
漏洞盒子:https://www.vulbox.com/
-
360网站安全检测:http://webscan.360.cn/
-
其他:appsans、axws
- END -
下方扫码关注 软件质量保障,与质量君一起学习成长、共同进步,做一个职场最贵Tester!
-
后台回复【测开】获取测试开发xmind脑图
-
后台回复【加群】获取加入测试社群!