PHPOK 5.4.305后台远程更新导致getshell

  • A+
所属分类:安全文章

文章源自【字节脉搏社区】-字节脉搏实验室

作者-樱宁

扫描下方二维码进入社区

PHPOK 5.4.305后台远程更新导致getshell

漏洞名称

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshell

漏洞版本号:

PHPOK 5.4.305

PHPOK 5.4.305后台远程更新导致getshell

官方网站:

https://www.phpok.com/download-center.html

PHPOK 5.4.305后台远程更新导致getshell

漏洞危害:

严重

PHPOK 5.4.305后台远程更新导致getshell

漏洞描述:

全新的PHPOK出来了,支持手机版,小程序,PC版。

后台采用Layui框架,前台使用AmazeUI框架(PC版及手机版)

独有的开发模式及运行模式,功能不减,一如既往的在完善!

PHPOK 5.4.305后台远程更新导致getshell

漏洞URL:

http://127.0.0.1:8081/admin.php?c=update&f=main

PHPOK 5.4.305后台远程更新导致getshell

漏洞描述:

   搭建---->进入后台,修改远程url---->上传恶意远程数据包---->上传解压---->getshell

PHPOK 5.4.305后台远程更新导致getshell

1. 进入后台,选择程序升级,环境配置中的url改成我们的服务器url。

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshell

2. 服务器上放上我们的内容被修改过的更新压缩包(在后面漏洞分析处有具体分析,以及源代码)。

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshell

3. 更新

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshell

4、查看发现已经创建了111.php

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshell

漏洞分析:

l 审查元素,找到程序升级对应的php代码。(framework-->admin-->update_control.php) 

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshell

分析上述代码,$info = $this->service(4)比较突出,我们追溯一下这个调用。Service函数首先是判断是否能正常升级,然后拼接一个xml的网址(一直到520行才拼接完成),然后是读取 url的内容,并返回。

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshellPHPOK 5.4.305后台远程更新导致getshell

我们在520行后面打印一下拼接出来的url(var_dump($url);die;),并尝试访问

(http://update.phpok.com/5/index.php?version=5.4.305&time=1589767905&type=4&domain=127.0.0.1&ip=127.0.0.1&onlyid=06af7c21f6d41d613ee8fabfbe5d9092&phpversion=5.6.9&server=Windows%20NT&soft=Apache%2F2.4.39%20%28Win64%29%20OpenSSL%2F1.1.1b%20mod_fcgid%2F2.3.9a%20mod_log_rotate%2F1.02&mysql=8.0.12),得到一个xml页面,如下图所示:

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshellPHPOK 5.4.305后台远程更新导致getshell

们继续接着在线升级代码分析,当service函数接收参数为4时,返回了跟新版本信息(为xml格式),我们继续在104行后面打印$info,如下图。打印了一些数据包参数。

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshell

l放行之后页面跳转,此时页面显示的是数据包的版本等信息。接着我们在开始更新处进行抓包,信息如下。

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshellPHPOK 5.4.305后台远程更新导致getshell

找到对应的代码(framework-->admin-->update_control.php),同样调用了service函数。我们继续上述的操作,打印此时的url

http://update.phpok.com/5/index.php?version=5.4.305&time=1589769924&type=5&file=54325

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshellPHPOK 5.4.305后台远程更新导致getshell

访问上述网址,出现被base64加密的xml页面

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshell

我们回到文件升级处的函数,当传输参数5到service函数,得到xml页面信息,接着在390行

(file_put_contents($this->dir_data.'tmp.zip',$info);)将信息写到了tmp.zip ,我们打印一下压缩包的存放路径(在390行后面写上var_dump($this->dir_data.'tmp.zip');die;),此时文件夹下面生成了文件夹。

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshell

此时我们对于远程更新的基本流程都大致清楚。,此时我们将手中的包丢掉,不让其更新。继续分析它的解压等后续代码,我们追溯到解压函数(update_load),会发现会先调用run.php

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshell

此时我们就恶意整合一下getshell的操作:

1、 远程url的index.php中由type参数生成不同的xml页面信息(4—>版本信息等;5—>数据包内容)

注:版本信息直接复制xml页面源代码。

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshell

2、 当参数等于5时 xml中的数据包内容为我们在run.php中添加了木马的tmp.zip信息。

PHPOK 5.4.305后台远程更新导致getshell

PHPOK 5.4.305后台远程更新导致getshell

漏洞修复:

接受远程url是进行白名单限制

PHPOK 5.4.305后台远程更新导致getshell

通知!

公众号招募文章投稿小伙伴啦!只要你有技术有想法要分享给更多的朋友,就可以参与到我们的投稿计划当中哦~感兴趣的朋友公众号首页菜单栏点击【商务合作-我要投稿】即可。期待大家的参与~

PHPOK 5.4.305后台远程更新导致getshell

记得扫码

关注我们

本文始发于微信公众号(字节脉搏实验室):PHPOK 5.4.305后台远程更新导致getshell

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: