论攻击Web应用的常见技术

jopen 9年前
 

攻击目标:

应用HTTP协议的服务器和客户端、以及运行在服务器上的Web应用等。

攻击基础:

HTTP是一种通用的单纯协议机制。在Web应用中,从浏览器那接受到的HTTP请求的全部内容,都可以在客户端自由地变更、篡改,Web应用可能会接收到和服务器完全不相同的、被刻意篡改的内容。

攻击对象:

URL查询字段或表单、HTTP首部、Cookit等。

在HTTP的请求报文内加载攻击代码,就能发起Web应用的攻击,通过URL查询字段或表单、HTTP首部、Cookit等途径把攻击代码传入,若代码存在安全漏洞,则会被攻击者拿到管理权限,然后请求内容被更改或获取。

攻击方式:

主动攻击和被动攻击

主动攻击:以服务器为目标的主动攻击

主动攻击是指攻击者通过直接访问Web应用,把攻击代码传入的攻击模式。由于该模式是直接针对服务器上的资源进行攻击的,因此攻击者需要能够访问到那些资源。

主动攻击模式里具有代表性的攻击是SQL注入攻击和OS命令注入攻击。

SQL注入攻击

该攻击主要是针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。

攻击模式:当Web应用对数据库表内的数据进行检索、添加或删除等操作时,会使用SQL语句连接数据库进行相应的操作,所以如果在调用 SQL语句的时候存在漏洞的话,将会被恶意注入非法的SQL语句。所以可以在Web的地址栏部分进行相应的攻击处理。如:在URL中,加--,在SQL语句中--表示注释的意思,会将一部分内容注释掉,达到攻击者的攻击目的。

攻击影响:非法查看或篡改数据库内的数据、规避认证、执行和数据库服务器业务关联的程序

OS命令注入攻击

该攻击是通过Web应用,执行非法的操作系统命令达到攻击目的,只要在能调用Shell函数的地方就存在被攻击的风险。

攻击模式:从Web应用中通过Shell来调用操作系统命令,如果在Shell调用时存在漏洞,就可以执行攻击者的非法OS命令,也就是说,可以通过OS注入攻击执行OS上安装的各种程序。如发送咨询邮件来注入攻击。

被动攻击:以服务器为目标的被动攻击

被动攻击时指利用圈套策略执行攻击代码的攻击模式,在被动攻击的过程中,攻击者不直接对目标Web应用程序发起攻击,一般的攻击手法是设置陷阱让用户去触发,中招后的用户浏览器会把含有攻击代码的HTTP请求发送给作为攻击目标的Web应用,运行攻击代码。攻击者借助这个攻击代码为基础,可以窃取用户个人信息、篡改滥用用户的信息等。该攻击模式连企业内网都同样会受到攻击。

被动攻击中具有代表性的攻击是跨站脚本攻击和跨站点请求伪造、HTTP首部注入攻击等。

跨站脚本攻击

XSS,Cross-Site Scripting,是通过安全漏洞的Web网站注册用户的浏览器内运行非法的HTML代码或者JavaScript进行的一种攻击。

攻击模式:攻击者编写脚本设下陷阱,用户在自己的浏览器上运行时,一不小心就会受到被动攻击。

攻击影响:利用虚假输入表单骗取用户个人信息、利用脚本窃取用户的Cookit值,被攻击者在不知情的情况下,帮助攻击者发送恶意请求、显示伪造的文章或图片

XSS是攻击者利用预先设置好的陷阱触发的被动攻击。如:在URL中加入特定的script代码来获取登录者的个人登陆信息、对用户Cookit的窃取攻击(通过Js获取)。

跨站点请求伪造

CSRF,是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某种状态更新,属于被动攻击。影响:利用已通过认证的用户权限更新设定信息、利用已通过认证的用户权限购买商品、利用已通过认证的用户权限在留言板上发表言论。等

HTTP首部注入攻击

该攻击模式是指攻击者通过响应首部字段被插入换行、添加任意响应首部或主体的一种攻击。属于被动攻击模式。向首部主体添加内容的攻击称为HTTP响应截断攻击。

攻击模式:Web应用有时会将从外部接收到的数值,赋给响应首部字段Location和Set-Cookit。HTTP首部注入通过在某些响应首部字段需要处理输出值的时候,插入换行发动攻击。

攻击影响:设置任何Cookit信息、重定向至任意URL、显示任意的主体(HTTP响应截断攻击)

攻击案例:

1、在URL后添加以%0D%0A(HTTP报文中的换行符),后紧接着攻击者自己编写的首部攻击字段进行信息获取,如Set-Cookit来获取相应Cookit的值。

2、HTTP响应截断攻击:将两个%0D%0A并排插入字符串后发送,利用两个连续的换行就可做出HTTP首部和主体分隔所需的空行类,这样就能显示伪造的主体,达到攻击目的。利用这种攻击方式,已触发陷阱的用户将看到伪造的Web页面,再让用户输入个人信息等,达到跨站脚本攻击相同的效果。

3、缓存污染:滥用HTTP/1.1中汇集多响应返回功能,会导致缓存服务器对任何内容进行缓存操作,使用该缓存服务器的用户,在浏览遭到攻击的网站,会不断地浏览被替换掉的Web网页。

其他攻击方式:

邮件首部注入攻击

该攻击模式是指Web应用中的邮件发送功能,攻击者通过对邮件首部To或Subject内任意添加非法内容发起的攻击。利用存在安全漏洞的Web网站,可对任意邮件地址发送广告邮件或病毒邮件。

攻击案例:攻击者将以下数据作为邮件地址发起请求,然后在后面加上%0D%0A在邮件报文中表示换行符,使用了之后,可以对邮件地址进行追加发送,使用连续两个换行符就有可能篡改邮件文本内容并发送。再以相同的方法,就有可能改写To和Subject等任意邮件首部,向文本添加附件等动作。

目录遍历攻击

目录遍历攻击是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。

攻击模式:通过Web应用对文件操作处理时,由外部指定文件名的处理存在漏洞的情况下,用户可用../../etc/passed等相对路径定位到绝对路径上面,因此服务器上任意的文件或文件目录皆有可能被访问到。就可以去非法浏览、篡改或删除Web服务器上的文件。

远程文件包含漏洞

该攻击模式是指当部分脚本内容需要从其他文件读取时,攻击者利用指定外部服务器的URL充当依赖文件,让脚本读取后,就可运行任意脚本的一种攻击。这是PHP存在的主要安全漏洞,对PHP的include或require来说,这个功能是一种可通过设定、指定外部服务器的URL作为文件名的功能,但是由于它十分的危险,所以PHP5.2.0后默认此功能无效。

怎样会造成安全漏洞?

因设置或设计上的缺陷引发的安全漏洞

错误设置Web服务器,或是由设计上的一些问题引起的安全漏洞。

1、强制浏览

从安置在Web服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件。可能会泄露顾客的个人信息、泄露原本需要具有访问权限的用户才能查阅的信息内容、泄露未外连到外界的文件。比较好的做法是:隐蔽其URL。因为直接显示易推测的文件名或文件目录索引时,通过某些方法可能会使URL产生泄露。

2、不正确的错误消息处理

Web应用的错误信息内包含对攻击者有用的信息,主要有:Web应用抛出的错误信息、数据库等系统抛出的错误信息等。

Web应用抛出的错误信息:以认证功能的认证错误信息为例,讲解不正确的错误消息处理方式。类似于当用户登陆失败的时候具体提醒用户为注册等信息,攻击者可利用这些信息确认用户是否注册。建议将提醒消息的内容仅保留在“认证错误”这种程度。

数据库等系统抛出的错误信息:输入未预料的错误消息时,提醒数据库的错误。攻击者从提醒消息可读出数据库选用的是MySQL等数据库信息,可能给SQL注入攻击提供启发。

3、开放重定向

对指定的任意URL做重定向跳转的功能,加入指定的重定向URL到某个具有恶意的Web网站,那么用户就会被诱导到那个网站。如 http://example/?redirect=***.攻击者指定重定向参数就可以改写成已设定好的Web 网站对应的连接。可能用来作为钓鱼攻击的跳板。

因会话管理疏忽引发的安全漏洞

如果在会话管理上有所疏忽,就会导致用户的认证状态被窃取等后果。如会话劫持(通过一些手段拿到用户的会话ID,伪装用户达到攻击的效果)、会话固定攻击(强制用户使用攻击者指定的会话ID,属于被动攻击)等方式。