POSCMS交易所系统多个高危漏洞详解

栏目: 编程工具 · 发布时间: 5年前

前言: 我们在八月的时候就已经陆续收到白帽子提交此框架的相关通用漏洞,我们一直在尝试联系该框架的相关管理人员,经过长时间的尝试联系无果并发现已有相关漏洞被公布出来,经DVP内部讨论决定,将DVP研究员深入挖掘此框架的相关严重漏洞提交至CNVD(国家信息安全漏洞共享平台)并发布此篇文章提醒币圈用户谨慎选择此类交易所。

0x01 漏洞分析

DVP审核收到此通用框架漏洞的时候,发现其是基于POSCMS改版的一套交易所程序,其版本为 v3.2.19,我们本着安全研究的目的,到官网下载了最新的 POSCMS v3.2.0 到本地进行分析。分析得出以下漏洞,并以报送到CNVD(国家信息安全漏洞共享平台)。

一、 SSRF + 任意文件读取 + Getshell

一顿Fuzz后发现这个需要先进行登陆后才能触发的漏洞,但是对于交易所来说这不是问题。程序会自动将读取到的文件保存在 /uploadfile/年月/随机生成的文件名(.) 但不能读取 PHP 文件。

漏洞地址:

/index.php?s=member&c=***&m=*********

POST: 

file=文件路径

文件保存路径: /uploadfile/年月/随机生成的文件名(.)

文件读取:

POSCMS交易所系统多个高危漏洞详解

POSCMS交易所系统多个高危漏洞详解

绕过限制读取php文件

尝试读取php文件 “提示远程文件扩展名(php)不允许” 失败了。

POSCMS交易所系统多个高危漏洞详解

本着不能读源码的文件读取不是好的文件读取的原则查看了相关源码。

查看源码后发现它取最后一个点后面的内容为扩展名,当扩展名为php的时候结束并提示错误。尴尬的是 白名单 $ext 里面是空的....空的...的.. . 也就是说点后面有任何内容都会导致远程抓取失败...

POSCMS交易所系统多个高危漏洞详解

往上跟进入dr_catcher_data方法

POSCMS交易所系统多个高危漏洞详解

美滋滋,方法内的两个 if 都支持file:// 协议 于是乎 ?. 或者 #. 就可以绕过限制

POSCMS交易所系统多个高危漏洞详解

成功读取到配置文件 /config/system.php

POSCMS交易所系统多个高危漏洞详解

SSRF :

SSRF 只需要把file 协议改为http协议就好了,自行发挥。

POSCMS交易所系统多个高危漏洞详解

可以看到虽然提示获取远程文件失败但却已经发起了请求

POSCMS交易所系统多个高危漏洞详解

GetShell:

GetShell需要配合 config/system.php 文件中的 SYS_KEY 密钥进行编码,实现后缀名可控的情况下才可以抓取制定后缀文件。

POSCMS交易所系统多个高危漏洞详解

从代码中可以看到,从 $_POST[url] 中接收参数($p[cdoe] 是外部可控的),通过 explode 函数分割字符串成 $size、$ext、$path 变量。

然后,通过 file_put_contents 函数写文件。

跟进 dr_authcode()(diy/dayrui/helpers/function_helper.php) 函数

POSCMS交易所系统多个高危漏洞详解

发现是一个对字符串加解密的函数,关键的一个常量是 SYS_KEY ,而这个常量可以通过上面的文件读取拿到。

这里为 poscms2e****************************2662。

随后通过设置上传后缀白名单为 1|phtml,|0 进行 DECODE 编码,生成:

`0927itRT2tQykJn/9L5SijMOKtFzwjwxJGWtn6L356Zx/vRkMsXQ`

然后携带这个 code 去读取远程文件

POSCMS交易所系统多个高危漏洞详解

自动抓取远程内容并保存到.phtml后缀的文件中

绝对路径:

/uploadfile/年月/随机文件名.phtml

POSCMS交易所系统多个高危漏洞详解  

二、 后台GetShell

看到有些小伙伴打XSS + CSRF组合拳添加管理员千辛万苦的进后台,只为看用户信息...

不拿 shell 看着难受... 于是就想着能不能来个XSS + CSRF 拿个Shell 装个13的,结果一顿操作只发现了一处鸡肋的文件包含能拿shell 为什么说鸡肋?因为有点像Discuz! 后台拿shell,繁琐。

大概操作:

内容  ==》  自定义页面  ==》 高级功能 ==》 模板文件参数

存在任意包含 跳跃五个目录到WEB根目录

POSCMS交易所系统多个高危漏洞详解

然后保存访问 /index.php?c=page&id=你生成的ID

开始以为是代码层被截断了,后来发现是数据库字段就给了30个字符...

POSCMS交易所系统多个高危漏洞详解

好在后台可以执行 SQL 语句 我们可以更新一下字段 把字节加大

SQL语句

alter table 表前缀_1_page modify column template varchar(100);

POSCMS交易所系统多个高危漏洞详解

再回来重复刚才的操作

POSCMS交易所系统多个高危漏洞详解

不知各位觉不觉得鸡肋... 反正我觉得要操作数据就蛮鸡肋的...

三、 彩蛋 前台 SQLi 注入一枚

前台注册登陆后

/index.php?s=member&c=*****&m=*****&*****%22and%20exp(~((select%20*%20from(select%20user())a)))--%20ss--%20DCen&ext=

POSCMS交易所系统多个高危漏洞详解

密码格式 md5(md5($password).$salt)   // $saLt = 十位随机字母+数字

0x02 漏洞影响

此类漏洞影响使用POSCMS框架 v3.2.20版本的网站和使用此框架进行二次开发的交易所。

  • https://bk***.top/

  • https://www.o***x.info

  • https://www.m******x.com

  • https://c*****x.com/

  • https://c****t.net/

  • https://www.b****x.io

  • https://www.c*****x.top

  • https://www.b******q.vip/

  • http://m******x.io/

  • https://te***********y.com

  • https://www.fu*********ex.cc/

POSCMS交易所系统多个高危漏洞详解
POSCMS交易所系统多个高危漏洞详解

(扫码加入微信社群)

POSCMS交易所系统多个高危漏洞详解

长按二维码

就可以关注公众号哦~


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learning Python, 5th Edition

Learning Python, 5th Edition

Mark Lutz / O'Reilly Media / 2013-7-6 / USD 64.99

If you want to write efficient, high-quality code that's easily integrated with other languages and tools, this hands-on book will help you be productive with Python quickly. Learning Python, Fifth Ed......一起来看看 《Learning Python, 5th Edition》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具