原文地址:http://drops.wooyun.org/papers/3451

0x00 漏洞简介:


Cisco Adaptive Security Appliance (ASA) Software在Clientless SSL VPN入口自定义框架在实现上存在安全漏洞,未经身份验证的远程攻击者可利用此漏洞修改Clientless SSL VPN入口内容,导致窃取凭证、跨站脚本及其他攻击。此漏洞源于没有正确实现Clientless SSL VPN入口自定义框架内的身份验证检查。

0x01 漏洞详情:


首先问题总结一下就是越权,在思科VPN的登录入口设置处可以设置一些title以及logo等。但是这些地方是可以被越权修改掉的,并且这些地方还存在xss。 如下图:

enter image description here

这个是本地搭建一个VPN然后来复现的,这是更改的vpn入口处的title,插入的JS。 那么为什么会造成这个原因呢?我们来看下老外的文章

里面曾说到:

check on some of the administrative interface pages can be bypassed by

setting the cookie value to any valid file on the file system.

在一些管理界面的可以通过设置cookie值为文件系统上存在的文件即可绕过登录。(英文渣,对着google翻译扣下来的英文)

具体缺陷代码如下:

Function CheckAsdmSession(cookie,no_redirect)
……..
Local f = io.open(‘asdm/’..cookie, “r”)
If f ~= nil then
f:close()
return true;
end

单单这样可能比较难理解,我们来结合检测方式来看一遍。同样在上个连接中老外给了这样一个post包(burpsuite)的。

enter image description here

可以看到上图的POST包中指定了Cookie为ced=../../locale/ru/LC_MESSAGES/webvpn.mo; 如果对方存在这个漏洞且能利用的话是会得到这样一个返回值:

enter image description here

http状态码为302,这样的话就代表存在且能利用造成影响。 为什么我要说存在且能利用造成影响,难道还有存在且不能造成影响的? 还别说,真有。一开始我认为这个漏洞,这么厉害那么影响肯定广泛结果自己复现后发现并不是那样,利用起来有个条件 看下图:

enter image description here

跟上图相比cookie值也设置了,post包的内容又是一样,地址又是一样。 为什么这次会返回200呢?秉着刨根问底的精神,我又仔仔细细的测了一遍,重新搭了几次VPN做一步记录一下。 最后发现了关键所在,就是Cisco ASDM上你必须点过Configuration选项卡的Customization页面的preview(预览)按钮。 如果没有点过preview(预览)按钮的话,即使是存在漏洞的版本也不能利用造成影响。 如下图:

enter image description here

所以当你去测试存在漏洞的设备时,却发现返回的是200请不要胡思乱想,就是这个原因。 另外经过测试发现,点过之后如果设备没有关机重启那么可以一直利用,如果关机重启了那就呵呵了只能等下一次点preview(预览)按钮了。

但是也不要觉得鸡肋,今天我跟我的小伙伴写了个exp用来检测(真的只是检测),测试的都是国外有名的大学,发现10个大学3-4个可以利用。

enter image description here

说了这么久如何检测,那么我们来说正事,我们应该如何复现攻击呢?

这个链接中,老外给了一个burpsuite的包,我们可以重载包来恢复状态,恢复后就有4个Repeater,我们只需把host跟target都修改成目标依次发包就可以了!

关于更多的资料在Ruxcon2014上已经有大神写的PDF

附视频: CVE-2014-3393

受影响版本:

修复方案: 目前思科已在2014年10月8号发布了补丁,连接: http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20141008-asa

附burpsuite包的下载地址:https://github.com/breenmachine/various