一:Web应用的威胁——篡改请求
在 HTTP 请求报文内加载攻击代码,通过 URL查询字段或表单、HTTP 首部、Cookie 等途径把攻击代码传入,就能发起对 Web 应用的攻击。
- 主动攻击:直接访问服务器,把攻击代码传入(SQL注入攻击,OS 命令注入攻击)
- 被动攻击:利用圈套执行攻击代码(跨站脚本攻击和跨站点请求伪造)
1:SQL 注入攻击
SQL注入(SQLInjection)是指针对 Web 应用使用的数据库,通过运行非法的 SQL而产生的攻击。
- 非法查看或篡改数据库内的数据
- 执行和数据库服务器业务关联的程序等
- 规避认证
2:OS 命令注入攻击
OS 命令注入攻击(OS Command Injection)是指通过 Web 应用,执行非法的操作系统命令的攻击。让 Windows 或 Linux 操作系统的命令行启动程序。也就是说,通过 OS 注入攻击可执行 OS 上安装着的各种程序。
3:跨站脚本攻击
跨站脚本攻击(Cross-Site Scripting,XSS)是指通过用户的浏览器运行非法的 HTML标签或 JavaScript 进行的一种攻击。
- 显示伪造的文章或图片
- 利用虚假输入表单骗取用户个人信息
- 利用脚本窃取用户的 Cookie 值
4:HTTP 首部注入攻击
指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击。
- 设置任何 Cookie 信息(Set-Cookie)
- 重定向至任意 URL(Location)
- 显示任意的主体
- 缓存污染
5:邮件首部注入攻击
邮件首部注入(Mail Header Injection)是指 Web 应用中的邮件发送功能,攻击者通过向邮件首部 To 或 Subject 内任意添加非法内容发起的攻击。
- 对其他邮件地址追加发送
- 篡改邮件文本
- 向文本添加附件
- 改写 To 和 Subject 等任意邮件首部
6:目录遍历攻击
目录遍历(Directory Traversal)攻击是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。
用户可使用 …/ 等相对路径定位到 /etc/passed 等绝对路径上,因此服务器上任意的文件或文件目录皆有可能被访问到。这样一来,就有可能非法浏览、篡改或删除 Web 服务器上的文件。
7:远程文件包含漏洞
远程文件包含漏洞(Remote File Inclusion)是指当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的 URL充当依赖文件,让脚本读取之后,就可运行任意脚本的一种攻击。
二:Web应用的漏洞——错误设计
1:强制浏览
从安置在 Web 服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件。
直接显示容易推测的文件名或文件目录索引时,可能会使 URL产生泄露。
从而可以直接通过 URL访问原本必须经过认证才能在 Web 页面上使用的文件。
(HTML文件、图片、PDF 等文档、CSS 以及其他数据等)
2:不正确的错误消息处理
Web 应用的错误信息内包含对攻击者有用的信息。
- 数据库等系统抛出的错误消息
- PHP 或 ASP 等脚本错误
- Web 应用抛出的错误消息
3:开放重定向
开放重定向(Open Redirect)是一种对指定的任意 URL作重定向跳转的功能。
三:Web应用的漏洞——会话管理疏忽
1:会话劫持
会话劫持(Session Hijack)是指攻击者通过某种手段拿到了用户的会话 ID,并非法使用此会话 ID 伪装成用户,达到攻击的目的。
- 通过窃听或 XSS 攻击盗取会话 ID
- 通过会话固定攻击(Session Fixation)强行获取会话 ID
2:会话固定攻击
会话固定攻击(Session Fixation)攻击会强制用户使用攻击者指定的会话 ID进行认证,随后再用该ID访问网站。
3:跨站点请求伪造
跨站点请求伪造(Cross-Site Request Forgeries,CSRF)攻击是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新。
四:其他漏洞
1:密码破解
(1):通过网络进行密码试错
对 Web 应用提供的认证功能,通过网络尝试候选密码进行的一种攻击。
- 穷举法:又称暴力破解法,是指对所有密钥集合构成的密钥空间进行穷举。
- 字典攻击:利用事先收集好的候选密码(经过各种组合方式后存入字典),枚举字典中的密码。
(2):对已加密密码的破解
Web 应用在保存密码时,通过散列函数做散列处理或加 salt 的手段对要保存的密码本身加密。
那即使攻击者使用某些手段窃取密码数据,如果想要真正使用这些密码,则必须先通过解码等手段,把加密处理的密码还原成明文形式。
- 穷举法·字典攻击:尝试调用相同的散列函数加密候选密码,然后把计算出的散列值与目标散列值匹配,类推出密码。
- 彩虹表:是由明文密码及与之对应的散列值构成的一张数据库表
- 拿到密钥
- 加密算法的漏洞
(3):点击劫持
点击劫持(Clickjacking)是指利用透明的按钮或链接做成陷阱,覆盖在 Web 页面之上。然后诱使用户在不知情的情况下,点击那个链接访问内容的一种攻击手段。
(4):DOS 攻击
DoS 攻击(Denial of Service attack)是一种让运行中的服务呈停止状态的攻击。有时也叫做服务停止攻击或拒绝服务攻击。DoS 攻击的对象不仅限于 Web 网站,还包括网络设备及服务器等。
- 集中利用访问请求造成资源过载
- 通过攻击安全漏洞使服务停止
(5):后门程序
后门程序(Backdoor)是指开发设置的隐藏入口,可不按正常步骤使用受限功能。利用后门程序就能够使用原本受限制的功能。
- 开发阶段作为 Debug 调用的后门程序
- 开发者为了自身利益植入的后门程序
- 攻击者通过某种方法设置的后门程序
二:实施 Web 应用的安全对策
- 客户端的验证:
多数情况下采用 JavaScript 验证数据 - 服务器端的验证:
输入值验证——检查是否是符合系统业务逻辑的数值或检查字符编码
输出值转义——当输出值转义不完全时,会触发攻击者传入的攻击代码