11.1 概要
HTTP本身并没有安全问题,问题在于HTTP应用上,简言之,就是网站的漏洞.
11.1.1 HTTP不具备安全功能
HTTP在设计的时候就没有考虑过安全问题,所以安全功能都由用户自己实现,自己实现就会有各种各样的版本.漏洞就不可避免了.
11.1.2 攻击模式
主动攻击: 直接访问并攻击具体某个网站
代表手段
- SQL注入
- OS命令注入
被动攻击: 攻击者不直接攻击某个网站,而是放置陷阱,让斡旋陷阱的人执行攻击代码
代表手段:
- 跨站脚本攻击
- 跨站脚本伪造
应对方法
- 检验每一个输入的值
- 转义第一个输出的值
11.2 常见攻击手段
11.2.1 跨站脚本攻击
概念: Cross-Site Scripting,就是把其他网站的JS代码,植入到你的网站里面.属于被动攻击
实际原理:
- 如果网站输出值转义不完全
- 比如在论坛里面,攻击者可以把自己的头像设置成一段js代码
- 当其他用户访问到攻击者头像时
- 就会执行这个js代码
危害:
- 盗取用户帐号密码等个人信息
- 获取用户cookie,发送恶意请求
- 显示伪造的官方文章
11.2.2 SQL注入攻击
概念: SQL Injection,通过修改请求参数,让服务器运行非法的SQL语句
实现原理:
- 如果网站没有做SQL参数检验
- 比如在一个查看文章的页面,攻击者可以把文章ID修改成一段SQL语句
- 当服务器接收到这个请求时
- 就会运行攻击者设置的这个SQL命令
危害:
- 非法查看和修改数据库
11.2.3 OS命令注入攻击
概念: OS Command Injection,通过修改请求参数,让服务器运行非法的Shell命令
实现原理:
- 如果网站没有做请求参数检验
- 比如在一个发送邮件的请求中,攻击者可以附加Shell命令
- 当服务器执行发送邮件的操作时
- 就会运行相应的Shell命令
危害:
- 攻击者可以任意查看和运行服务器上的程序
11.2.4 HTTP首部注入攻击
概念: HTTP Header Injection,通过在首部插入换行,添加新的首部字段攻击
实现原理:
- 服务器如果没 对请求首部做检验
- 攻击者在请求中添加
%0D%0A换行符,后面带上相应的响应首部 - 服务器返回响应时,就会带上这一段
- 客户端接收到响应后,就会变成多个首部字段
危害:
- 添加任意的Cookie
- 重写响到任意的URL
11.2.5 HTTP响应截断攻击
概念: HTTP Response Splitting Attack, 通过在首部插入换行,添加响应主体的攻击
实现原理:
- 大概步骤同上
- 只是换行符是两个回车,这样后面追加的内容就变成了响应主体
危害:
- 可以让用户界面显示任意的内容
11.2.6 邮件首部注入攻击
概念: EMail Header Injection,通过在邮件首部插入换行,添加非法内容发起的攻击.
实现原理:
- 同HTTP首部注入攻击一样
- 只是添加的内容不一样
危害:
- 对任意邮件发送任意垃圾内容
11.2.7 目录遍历攻击
概念: Directory Traversal,通过伪造路径,非法访问服务器其他目录.
实现原理:
- 如果服务器对文件名处理存在漏洞
- 在上传/下载/访问某个文件时,攻击者可以把正常的文件名修改成相对路径
- 服务器运行到这段代码时
- 就会去访问另外一个目录下的文件了
危害:
- 泄漏服务器上重要的文件信息
11.2.8 强制浏览
概念: Forced Browsing,通过猜测,访问网站上未公开的一些信息
实现原理:
- 如果服务器对图片信息没有估权限管理
- 攻击者可以遍历请求图片地址
- 有可能某个用户发布的一个私密相册的照片
- 就可能被遍历到
11.4 因会话管理引发的安全漏洞
11.4.1 会话劫持
概念: Session Hijack, 攻击者通过各种手段,拿到用户的Session信息伪装成用户.
危害:
- 就像盗QQ一样,虽然我没拿到你的密码
- 但是我可以登陆上去发消息,看聊天纪录
11.4.2 会话固定攻击
- 这个没太看懂
11.4.3 跨站点请求伪造
概念: Cross-Site Request Forgeries,攻击者通过陷阱,强制注册用户发起相关请求.
实现原理:
- 基本和XSS一样
- 只是这个要利用已登陆用户来进行请求
11.5 其他安全漏洞
11.5.1 密码破解
- 未加密密码
- 穷举
- 字典
- 已加密密码
- 彩虹表
- 拿密钥
11.5.2 点击劫持
就是放隐藏按钮,在用户不知情的情况下触发某些操作