在 Web 程序的渗透方式(一) 中,详细分析了 Web 程序的较为经典的渗透方式,诚然这些渗透方式已经有了较为悠久的历史,许多网站都做了相应的防范。世界上没有绝对安全的系统,在这些渗透方式日渐难以实现之后,新的更为有效的渗透手段就随之出现了。
近年来,SSL/TLS 的安全受到越来越多的挑战,SSL/TLS 的本意是加密客户端与服务器之间传递的内容,但是由于设计的不完善,攻击者可以将截获的加密信息在不知道密钥的情况下猜解出来,或者直接获得服务器的私钥等等,以下列举了近年来较为著名的由于 SSL/TLS 设计不完善而产生的漏洞及其利用方式。
HeartBleed(心脏出血)
原理:
OpenSSL 在实现 TLS 和 DTLS 的心跳处理逻辑时,存在编码缺陷。OpenSSL 的心跳处理逻辑没有检测心跳包中的长度字段是否和后续的数据字段相符合,攻击者可以构造异常的数据包,来获取心跳数据所在的内存区域的后续数据。
效果:
获取服务器内存中最多 64K 的数据,这些数据中可能包含服务器的私钥等敏感信息
实现方式:
DROWN攻击(Decrypting RSA with Obsolete and Weakened eNcryption)
原理:
由于 OpenSSL 服务端的实现没有严格遵守官方的标准,若配置不当可以强制使用不安全的 Export 加密套件(包括密钥交换,加密算法,HMAC 等的组合),附 SSLv2 加密套件(22,24为对外出口的弱加密方式,只有40位加密强度)
效果:
通过中间人的攻击方式,获取通信过程中的敏感信息
POODLE(Padding Oracle On Downgraded Legacy Encryption)
原理:
在服务器和客户端之间充当中间人,使客户端和服务器通过不安全 SSLv3 进行通信。使用 SSLv3 的通信可以通过 Padding Oracle 攻击来解密其中的信息。有关 Padding Oracle 攻击,见我的另一篇文章 Padding Oracle
效果:
获取通信过程中的敏感信息
实现方式:
充当中间人发起降级攻击,之后使用 Padding Oracle 攻击(PadBuster)
ShellShock
Shellshock,又称 Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞,首次于2014年9月24日公开。受影响的 Bash 版本为 4.3 及更老的版本。
原理:
基于 Linux 的 Web 服务器一般提供 CGI 接口,允许远程执行 Bash 指令
,而服务器会根据 HTTP Header 的某些字段设置 Bash 的环境
CVE-2014-6271:
Bash 中有种定义函数的方式:如果环境变量的值以字符(){
开头,这个变量就会被当作是一个导入函数的定义。这种定义在 shell 启动的时候生效,例如如下语句:
env HELLO="() { echo 'Hello'; }" bash -c HELLO
当然,如果服务端不调用这个函数当然是没有问题的。但是,如果我们使用如下语句:
env CVE_2014_6271="() { echo 'Hello';}; echo 'Goodbye'" bash -c CVE_2014_6271
Bash 的输出本应该只有 Hello,但是 Bash 把 Goodbye 也输出了。值得留意的是,Goodbye 在 Hello 之前输出的,它是在导入 CVE_2014_6271 的时候输出的,也就是说,即使不调用 CVE_2014_6271 函数,在 Bash 初始化环境变量的时候,定义 CVE_2014_6271 函数之后的语句会被 Bash 解释执行。
CVE-2014-7169:
在 CVE_2014_6271 被修复后不久,很快又曝出了另一个 Bash 漏洞,这个漏洞跟重定向有关:
env CVE_2014_7169='() { (a)=>\' bash -c "echo date"; cat echo
这次解析器先停在 = 号上(由于 (a)= 不是一个有效的 Bash 表达式),但至关重要的是把 < 号留在了解析管道中。接下来的转义符 \ 会使解析器在重定向命令之间插入一些空格,最终导致了后面的命令变成了一条重定向命令:
date > echo
效果
CVE-2014-6271 导致远程任意代码执行
CVE-2014-7169 导致任意文件读写
实现方式
通过 CURL 等工具自定义 HTTP Header 后发送给服务器
参考资料:
Shellshock
Shellshock漏洞回顾与分析测试
Drown跨协议攻击TLS漏洞分析
SSL Labs
不仅是Https!OpenSSL“心脏流血”漏洞深入分析
Padding Oracle
CVE-2014-0160
CVE-2016-0800
Automated Padding Oracle Attacks With PadBuster
DROWN Attack
Exploit Heartbleed
网友评论