一、通达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!