针对 Web 的攻击技术
HTTP 协议本身非常简单也非常安全,协议本身几乎不会成为攻击的对象。攻击的对象太多都是应用 HTTP 协议的服务器和客户端。服务器和客户端容易被攻击的原因如下:
- HTTP 不具备必要的功能,它无法满足需求多样化的 Web 网站。而 HTTP 协议本身不具备会话(Session)管理、加解密处理等功能。这就需要服务器和客户端自己实现,从而留下了被攻击的入口
HTTP 请求在客户端即可篡改。只需在 HTTP 请求报文内加载攻击代码,就能发起对 Web 应用的攻击。
针对 Web 应用的攻击模式
主动攻击:攻击者直接访问 Web 应用,把攻击代码传人进行攻击
SQL 注入攻击:针对 Web 应用使用的数据库,通过运行非法的 SQL 发起攻击。Web 应用通常都会使用数据库,如果在调用 SQL 语句的方式上存在漏洞,就容易被恶意注入,且造成非常的影响
- 非法查看或篡改数据库内的数据
- 规避认证
- 执行和数据库服务器业务关联的程序等
-- 正常查询字段a为 xxx 并且 字段b 为 yyy 的结果
SELECT * FROM table_name WHERE column_a = 'xxx' and column_b = 'yyy';
-- 恶意输入内容导致 SQL 的部分条件失效
SELECT * FROM table_name WHERE column_a = 'xxx'--'
OS 命令攻击:通过 Web 应用,执行非法的操作系统命令达到攻击的目的
-
被动攻击:攻击者利用圈套诱导用户进入陷阱被动执行攻击代码发起攻击
跨站脚本攻击(XSS攻击):通过存在安全漏洞的 Web 网站的注册用户的浏览器内运行非法的 HTML 标签或者 Javascript 脚本进行攻击
- 利用虚假输入表单骗取用户个人信息
- 利用脚本窃取用户的 Cookie 信息,被害者在不知情的情况下,帮助攻击者发送恶意请求
- 显示伪造的文章或图片
- 跨站点请求伪造:攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新
- 利用已通过认证的用户权限更新设定信息
- 利用已通过认证的用户权限购买商品
- 利用已通过认证的用户权限暗地里执行某种动作
HTTP 首部注入攻击:通过在响应首部字段中插入换行,添加任意响应首部或主体的攻击
防范 Web 攻击的安全对策
客户端的验证
- Web 服务器端的验证
- 输入值验证
- 输出值转义
设计缺陷引发的安全漏洞
- 强制浏览
- 不正确的错误消息处理
- Web 应用抛出的错误消息
- 数据库等系统抛出的错误消息
解决办法非常简单,各系统应用详细的错误消息进行抑制设定,或者使用自定义错误,以避免某些错误信息给攻击者以启发
会话管理疏忽引发的安全漏洞
会话劫持:给 攻击者利用某种手段拿到来用户的会话ID,并非法使用此会话ID伪装成用户,达到攻击的目的
密码破解
- 通过网络的密码试错
- 穷举法暴力破解
- 字典攻击:利用事先收集好的候选密码尝试通过认证匹配
- 对已加密的密码的破解
- 通过穷举法·字段攻击进行类推
- 彩虹表:事先制作庞大彩虹表收集场景字符串的散列运算结果尝试通过认证匹配
- 拿到密钥
- 加密算法漏洞
- 通过网络的密码试错
- 点击劫持(UI 伪装):利用透明的按钮或链接做成陷阱,覆盖在 Web 页面之上
- DoS攻击(多台计算机发起DDoS攻击)
- 集中利用访问请求造成资源过载、资源用尽
- 通过安全漏洞使服务停止
- 后门程序