boblog任意變數覆蓋漏洞(二)
boblog任意變數覆蓋漏洞(二)
by Ryat[puretot]
mail: puretot at gmail dot com
team: http://www.80vul.com
date: 2011-03-09
先前80vul.com上公佈了一個bo-blog的漏洞[1],這個漏洞已經被官方修補,但隨後wooyun.com上公佈了一個繞過補丁的方法[2],可惜觸發時有一定的限制,下面我再來公佈一個沒有任何限制的繞過補丁繼續觸發漏洞的方法:)
這個簡單來說是正規表示式和程式碼邏輯不夠嚴謹造成的,來看程式碼:
// go.php
$q_url=$_SERVER[“REQUEST_URI”];
@list($relativePath, $rawURL)=@explode(`/go.php/`, $q_url);
$rewritedURL=$rawURL;
…
$RewriteRules[]=”/page/([0-9]+)/([0-9]+)/?/”;
// 這個正則看上去很嚴謹,但是沒有使用^和$來限制開頭與結尾[可能是為了適應程式自身的需要]:)
…
$RedirectTo[]=”index.php?mode=\1&page=\2″;
…
foreach ($RewriteRules as $rule) {
if (preg_match($rule, $rewritedURL)) {
$tmp_rewritedURL=preg_replace($rule, `<`.$RedirectTo[$i].`<`, $rewritedURL, 1);
// 對$rewritedURL進行匹配和替換,並使用<來標記匹配的部分
// 經過這樣的處理後$tmp_rewritedURL主要分為三部分:
// i.第一個<前面的部分
// ii.兩個<之間的部分
// iii.第二個<後面的部分
$tmp_rewritedURL=@explode(`<`, $tmp_rewritedURL);
$rewritedURL=($tmp_rewritedURL[2]) ? false : $tmp_rewritedURL[1];
// 這段程式碼的主要目的是解決之前的正則限制不夠嚴格的問題
// 程式設計師希望通過這段程式碼去掉i和iii,使$rewritedURL僅保留ii
// 注意這裡還對iii做了限制,按照程式設計師的想法,iii這部分應該是不存在的:)
// 這部分程式碼邏輯的關鍵就在於<這個字元,但遺憾的是我們是可以隨意注入<的:p
break;
}
$i+=1;
}
從上面的分析可以看出這段程式碼對$rewritedURL處理邏輯貌似很嚴謹,但事實我們只要通過簡單的注入<這個字元,就可以打亂整個邏輯了:)
PoC:
/go.php/<[evil code]<page/1/1/
參考:
[1]http://www.80vul.com/boblog/boblog.txt
[2]http://www.wooyun.org/bugs/wooyun-2010-01491
相關文章
- PHP變數覆蓋漏洞小結PHP變數
- phpcms的phpcms_auth導致的任意變數覆蓋漏洞、本地檔案包含漏洞和任意檔案下載漏洞PHP變數
- Java方法覆蓋和變數覆蓋的區別詳解Java變數
- 提升的函式宣告會覆蓋同名變數宣告函式變數
- Java基礎 成員變數的繼承與覆蓋Java變數繼承
- istanbul 繞過 window 變數儲存覆蓋率資料變數
- Linux下fastbin利用小結——fd覆蓋與任意地址free(House of Spirit)LinuxAST
- 公司wifi覆蓋人數增多解決方案WiFi
- Mysql索引覆蓋MySql索引
- 最小圓覆蓋
- 程式碼覆蓋率與測試覆蓋率比較
- 企業WiFi覆蓋,解決覆蓋四大難題WiFi
- 第9條:覆蓋equals時總要覆蓋hashCode方法
- EMMA 覆蓋率工具
- 語法:Python中的可覆蓋物件與不可覆蓋物件Python物件
- 隧道調頻廣播覆蓋系統數字選頻光纖拉遠漏纜覆蓋解決方案
- 棋盤完美覆蓋數(小規模原理實現)
- 二分圖最小點覆蓋等於二分圖最大匹配
- QRCode 生成二維碼,覆蓋在固定海報上
- 二、變數變數
- canvas 填充覆蓋描邊Canvas
- pHp程式碼覆蓋率PHP
- php實現矩形覆蓋PHP
- 程式碼覆蓋率分析
- 線段覆蓋問題
- 四、建立覆蓋網路--Flannel
- ESLint: 規則配置覆蓋EsLint
- 76. 最小覆蓋子串
- c++任意變數型別獲取相關C++變數型別
- 基於JaCoCo的Android測試覆蓋率統計(二)Android
- 專案總結二:解決鍵盤覆蓋tableview的問題View
- 3111. 覆蓋所有點的最少矩形數目
- 最大匹配、最小頂點覆蓋、最大獨立集、最小路徑覆蓋(轉)(再轉)
- iOS 覆蓋率檢測原理與增量程式碼測試覆蓋率工具實現iOS
- idea2022.1 檢視單測覆蓋率展示分支覆蓋率Idea
- 漏洞分析——變數缺陷漏洞及通用異常捕獲宣告缺陷漏洞變數
- MySQL 的覆蓋索引與回表MySql索引
- 【離散優化】覆蓋問題優化