通达OA漏洞探测及利用


一、通达OA介绍

通达OA,全称为Office Anywhere网络智能办公系统,是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。

  • 核心功能:

统一通讯:支持电脑、手机、浏览器等多终端统一通讯,聊天记录云同步,支持发送文件、图片、语音等形式。

电子邮件:统一邮件系统,支持内外网邮件收发,并进行统一管理,支持邮件智能分类和关键词提取等功能。

公告通知:企业统一信息发布平台,图文并茂,配合消息提醒将信息即时传达到每位员工。

考勤打卡:可设置不同排班类型和考勤类型,支持手机考勤打卡,可记录地理位置,或限定在固定位置或Wifi下打卡。

行政办公:完善的办公用品、会议室、车辆等行政管理功能,降低运营管理成本,提升行政管理效率。

任务协同:有效解决团队协作问题,任务拆解、分配,责任有效落实,时间动态、交流讨论,整体任务进度直观可控。

数据安全:支持私有化部署和云部署,所有数据统一存储,保障数据安全。先进的技术架构和开发架构保障系统安全。

零成本运维:底层服务自动监控,自我修复故障,保障系统健康运行。数据自动备份,系统自动升级,实现零成本运维。

流程中心:高效的流程和审批系统,让各种业务都能快速流转审批。

应用中心:用户可自主搭建进销存管理、合同管理、生产管理、项目管理等业务系统,让开发更简单。

报表中心:专业、通用、完整、强大、易用的报表工具,提供数据统计、汇总、分析、打印、输出、预警等核心功能,助力企业挖掘数据价值。

移动办公:消息随时回,流程随时办,支持与微信、钉钉集成,打造全新的办公方式。

公文管理:组织单位上传下达,一体化规范管理,更合规的公文管理。

督查督办:将计划、组织、协调、控制、激励等与督查督办工作过程和要求相结合,实现纵向协作、强化任务执行力。

二、历史漏洞概览

  • 通达OA v2014 get_contactlist.php 敏感信息泄漏
  • 通达OA v2017 video_file.php 任意文件下载
  • 通达OA v2017 action_upload.php 任意文件上传
  • 通达OA v2017 login_code.php 任意用户登录
  • 通达OA v11 login_code.php 任意用户登录
  • 通达OA v11.5 swfupload_new.php SQL注入
  • 通达OA v11.6 report_bi.func.php SQL注入
  • 通达OA v11.8 api.ali.php 任意文件上传漏洞
  • 通达OA v11.8 gateway.php 远程文件包含漏洞
  • 通达OA v11.6 print.php未授权删除auth.inc.php导致RCE
  • 通达OA v11.10 getdata 任意文件上传

三、TongdaScan_go 工具

3.1 工具地址

https://github.com/Fu5r0dah/TongdaScan_go

3.2 使用方法

3.2.1 漏洞扫描

使用scan参数时,不指定任何vulnID,则自动检测所有漏洞

go run main.go scan -u http://1.1.1.1

3.2.2 指定漏洞ID

go run main.go scan -u http://1.1.1.1 -i Td03

3.2.3 漏洞利用

go run main.go exp -u http://1.1.1.1 -i Td03

3.2.4 代理

go run main.go scan -u http://1.1.1.1 -i Td01 -s http://127.0.0.1:8080

3.3 实战测试使用

3.3.1 启动运行

  • kali

安装第三方库失败。需要挂代理安装。

  • mac
go run main.go

大战bug:

一开始go的版本比较低:

go version go1.16.2 darwin/amd64

出现了如下的问题:

分析是因为版本的问题,不支持 //go:build注释。

接下来做版本升级。

如何确定macbook中的golang是通过brew install,还是.pkg安装的:

% which go
/usr/local/go/bin/go

可以看到,输入which go,返回了路径,如果是这个路径可以说明是通过.pkg安装的。

也可以输入 brew info go,可以看到返回的信息中第四行 Not installed的返回,说明了没有用brew install 安装过,如果是用brew install go 安装的go语言,会返回如下内容,内容的第四行写了安装的路径

go: stable 1.17.1 (bottled), HEAD
Go programming language compiler
https://golang.org
/usr/local/Cellar/go/1.17.1 (9,103 files, 512.4MB) *

如果是通过brew install go 安装的go语言,那么只需要执行下面这行命令,即可完成升级

brew upgrade go

经过上述步骤可以确定我当时是用pkg包安装的:

删除旧版本:

sudo rm -rf /usr/local/go

下载新版本:前往 Go 官方网站(https://golang.org/dl/)下载最新的 Go 语言版本的 macOS 安装包(通常是一个 .pkg 文件)

安装新版本:双击下载的 .pkg 文件,按照安装向导进行安装。这将在 /usr/local/go 目录下安装新的 Go 语言版本。

重新执行:

尝试升级quic-go的版本:

go get -u github.com/quic-go/guic-go

升级imroc/req/v3

go get -u github.com/imroc/req/v3
go run main.go

成功执行:

3.3.2 漏洞扫描

go run main.go scan -u http://192.168.52.30:8080/

3.3.3 漏洞利用

go run main.go exp -u http://192.168.52.30:8080/ -i Td03

成功getshell!


文章作者: 司晓凯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 司晓凯 !
  目录