標籤:des style blog http io color os ar 使用
目錄
1. 漏洞描述2. 漏洞觸發條件3. 漏洞影響範圍4. 漏洞程式碼分析5. 防禦方法6. 攻防思考
1. 漏洞描述
http://www.wooyun.org/bugs/wooyun-2010-067447
WDCP這個控制台CMS提供了一個伺服器管理的功能,但是對mysql/add_user.php這個指令檔沒有進行必要的身分識別驗證,導致任意使用者都可以訪問這個介面
2. 漏洞觸發條件
觸發條件為0,任意使用者可以直接存取這個介面,進行賬戶、資料庫的添加
http://xxxxx:8080/mysql/add_user.php
http://xxxxx:8080/mysql/add_db.php
Relevant Link:
http://www.wooyun.org/bugs/wooyun-2010-067447http://www.wdlinux.cn/wdcp/install.html
3. 漏洞影響範圍
這個入侵漏洞修複的的情境是在wuyoo報告出漏洞之後,廠商已經進行了修複,並發布了修複後的、被zend加密後的檔案,我們需要使用patch diff compare技術對patch後的代碼和存在漏洞的檔案清單進行對比,定位到本次漏洞事件的源頭,存在漏洞的檔案(因為存在漏洞的檔案可能不只一個)
vul code
find /www/wdlinux/wdcp/mysql -type f -print0 | xargs -0 md5sum
fixed code
find /zhenghan/vulpoc/wdcp/lanmp/www/wdlinux/wdcp/mysql -type f -print0 | xargs -0 md5sum
通過diff,我們可以發現,其中只有2個檔案的MD5值是不同的,也就是說官方對這2個檔案進行了代碼修複
add_user.phpadd_db.php
4. 漏洞程式碼分析
0x1: php zendoptimizer
php的zendoptimizer是基於zend的一種代碼先行編譯實現模組,通過提前將代碼先行編譯為一種zendoptimizer可以理解的中繼語言,用空間換時間,甚至在zendoptimizer的最佳化下,並不需要額外的磁碟空間佔用,基於預計算的思想可以顯著地提高php應用程式的運行速度
Relevant Link:
http://www.zend.com/topics/Zend-Optimizer-User-Guide-v330-new.pdfhttp://www.ibm.com/developerworks/cn/opensource/os-php-zend1/http://baike.baidu.com/view/772047.htmhttp://kb.zend.com/how-to-install-zend-optimizer-manually/http://www.zend.com/en/products/guard/downloads#Windowshttp://kb.zend.com/how-to-install-zend-optimizer-manually/#.VFIs2vmUeKQ
0x2: code vul analysis
待審計的代碼經過了zend加密,可以使用DeZender.exe進行解密,之後有時間了想研究一下php的zendoptimizer動態加解密的原理,和基於php擴充實現的DeZender的實現原理
<? require_once "../inc/common.inc.php"; if (isset($_POST[‘Submit_add‘])) { $user=chop($_POST[‘user‘]); $password=chop($_POST[‘password‘]); $dbname=chop($_POST[‘dbname‘]); check_user($user); check_string($password); check_string($dbname); //這裡沒有做任何的身分識別驗證就直接進行高風險操作了 create_db_user($user,$password,$host); grant_db_user($user,$host,$dbname); mysql_add_user($user,$password,$host,$dbname,$rtime); optlog($wdcdn_uid,"增加mysql資料庫 $user",0,0); str_go_url("資料庫使用者增加成功!",0); } $member_list=member_list(); $site_list=site_list(); $db_list=db_list(); require_once(G_T("mysql/add_user.htm"));?>
5. 防禦方法
官方給出了修複方案
Relevant Link:
http://www.wdlinux.cn/bbs/thread-37476-1-1.html
6. 攻防思考
1. 身分識別驗證、許可權授權屬於web應用系統的邊界安全,最佳安全實踐應該是在web應用的進入點就進行嚴格的身份認證,而不應該將身份認證放在各個業務功能的子檔案中,這是不合理的2. 在網站的路由進入點進行強制的路由跳轉,進行身份認證,通過認證後通過session來保持住當前認證狀態,並且在所有的子頁面都部署輕量級的身份認證session檢測,如果檢測結果為"未登入",則直接強制跳轉到唯一的中心認證路由頁面上3. 通過這種中心化的防禦思路,可以解決在子頁面中單獨部署身份認證代碼導致的遺漏現象
Copyright (c) 2014 LittleHann All rights reserved
WDCP(WDlinux Control Panel) mysql/add_user.php、mysql/add_db.php Authentication Loss