微信号:gh_1cb598337696

介绍:Qtest,是360公司唯一的服务端测试团队.我们的理念是做一个会编程的测试工程师,做一个不断思考,全力保证产品质量的测试工程师.

web安全漏洞介绍

2018-04-13 18:55 豆芽花花儿酱

点击蓝字关注这个神奇的公众号~

背景介绍


Web应用一般是指B/S架构的通过HTTP/HTTPS协议提供服务的统称。随之互联网的发展,web应用已经融入了我们的日常生活的各个方面。在目前的web应用中,大多数应用不都是静态的网页浏览,而是涉及到服务器的动态处理。如果后台开发的安全意识不强,就会导致web应用安全问题层出不穷。

我们一般说的web应用攻击,是指攻击者通过浏览器或者其他的攻击工具,在URL或者其他的输入区域(如表单等),向web服务器发送特殊的请求,从中发现web应用程序中存在的漏洞,进而操作和控制网站,达到入侵者的目的。下面介绍下几种常见的web漏洞。

SQL注入

SQL注入(SQL Injection),是最常见影响非常广泛的漏洞。攻击者把SQL命令插入到web表单的输入域或者页面请求的查询字符串,执行恶意的SQL命令,从而入侵数据库来执行未授意的任意查询。

SQL注入可能造成的危害有:网页、数据被篡改,核心数据被窃取,数据库所在的服务器被攻击,变成傀儡主机。如果有些网站没有使用预编译sql,用户在界面上输入的一些字段被添加到sql中,很有可能这些字段包含一些恶意的sql命令。比如:password = "1' OR '1'='1";即使不知道用户密码,也能正常登录。即便使用了sql预编译,如果不判断是否有关键字,也可能会有问题。 如一些简单的模糊查询,通过sql中写%key%完成的,如果用户输入的key为%的话,则很有可能查询到数据表中的所有数据,这时关键字查询就不起作用了。这种属于一般的没有攻击性的sql注入。

XSS跨站脚本攻击

XSS(Cross Site Script),与SQL注入相似,XSS是通过网页插入恶意脚本,主要用到的技术也是前端的HTML和JavaScript脚本。当用户浏览网页时,实现控制用户浏览器行为的攻击方式。一次成功的XSS,可以获取到用户的cookie,利用该cookie盗取用户对该网站的操作权限;也可以获取到用户联系人列表,利用被攻击者的身份向特定的目标群发送大量的垃圾信息,等等。

XSS分为三类:存储型(持久性XSS)、反射型(非持久性XSS)、DOM型。

举个最简单的XSS的例子:当前页面有个输入框,<input type="text" name="username" value="valueFromUser">,其中"valueFromUser"是来自用户的输入。如果用户输恶意的脚本,如: "/>       <script>alert(document.cookie)</script><!- ,  那么就会变成<input type="text" name="username" value=""/><script>alert(document.cookie)</script><!-"> 那么嵌入的JS脚本将会被执行。

XSRF/CSRF跨站伪造请求攻击

CSRF(Cross Site Request Forgery),利用用户已登录的身份,以用户的名义发送恶意请求,完成非法操作。

用户C浏览并信任了存在CSRF漏洞的网站A,浏览器产生了A的cookie,用户在没有退出网站A的情况下,访问了危险网站B 。网站B要求访问网站A,发出一个请求。浏览器带着用户C的cookie信息访问了网站A,因为网站A不知道是用户C发出的请求还是B发出的请求,浏览器会带着用户C的cookie信息,所以就会处理网站B的请求,这样就完成了模拟用户操作的目的。这就是CSRF攻击的基本思想。

例如:XX银行网站A,它以get请求完成银行转账的工作。网址链接如下所示:http://www.XXbank.com/Transfer.php?toUserId=250&money=1000,而在危险网站B中,有一段HTML的代码:<img src="http://www.XXbank.com/Transfer.php?toUserId=250&money=1000">

用户C首先登陆了银行网站A,然后随即访问危险网站B,这时用户C就会发现银行账户少了1000块钱。

这就是属于一次CSRF攻击。银行网站A违反了HTTP的规范,使用get请求更新资源。用户C登录了网站A后,访问了网站B,而B中的<img>以get的方式请求了网站A,所以浏览器带着网站A的cookie发出get请求,去获取网站A服务器的资源,服务器收到请求后,就认为这是一次合法的转账操作,所以就进行了转账操作。

文件上传攻击

文件上传攻击是指攻击者上传了一个可执行文件到服务器上,并执行。这种攻击方式是最直接有效的。上传的文件可以是病毒、木马、恶意脚本或者是webshell等等。Webshell是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以说是一种网页后门。攻击者在受影响系统防止或插入webshell后,可以通过webshell方便进入系统,达到控制网站服务器的目的。但是webshell的植入不止文件上传这一种方式。

文件包含漏洞

开发一般会把重复使用的函数写到单个文件中,需要使用这个函数的时候,直接调用该文件,不需要再次编写,文件被调用的过程一般被称为文件包含。开发一般会希望代码更灵活,所以将包含的文件设置为变量,用来进行动态调用。也正是由于这种灵活性,从而导致客户端可以调用一个恶意代码,造成文件包含漏洞。几乎所有脚本语言都会提供文件包含功能,在PHP中比较多,JSP、ASP程序中比较少。

文件包含漏洞的产生原因是在通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校验,或者校验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。一旦这些恶意代码被执行,攻击者获得服务器权限,就可以篡改用户和交易数据,恶意删除网站等,造成安全漏洞。远程文件包含(RFI)是web程序下载并执行远程文件时发生的。这些远程文件通常是以HTTP或者FTP URL的形式,作为用户向web程序提供的参数而获取。本地文件包含(LFI),只有本地文件可以被包含用户执行。

点击劫持

点击劫持(Click Jacking)是一种视觉欺骗手段,攻击者使用一个透明不可见的iframe,覆盖到网站上,诱使用户进行操作,点击攻击者想要用户点击的位置。也就是通过覆盖不可见的框架舞蹈受害者点击而造成的攻击行为。隐蔽性高,骗取用户操作,也成为UI覆盖攻击。

 URL跳转漏洞

URL跳转漏洞是指web程序直接跳转到参数中的URL,或者在页面中引入了任意开发者的URL,将程序引导到不安全的第三方区域,从而导致安全问题。


Qtest是360旗下的专业测试团队!

是WEB平台部测试技术平台化、效率化的先锋力量!


陪伴是最长情的告白

每日为你推送最in的测试技术

识别二维码

关注我们


 
Qtest之道 更多文章 有这样的测试,开发只能献上膝盖 PIL屏幕截图爬坑之旅 Android内存测试小分享 持续集成中MAVEN的那些事儿(一) 清明赏春攻略——来一场技术踏青!
猜您喜欢 闪存存储与软件定义存储(SDS) 我是如何零基础开始能写Python爬虫的 3行Python代码完成人脸识别 小米大树之测试之痛 自己动手写分布式KV存储引擎(二):网络框架中的定时器原理和实现