[送0day]代碼審計就該這麼來3 beescms getshell

前言
上一回(http://bbs.ichunqiu.com/thread-13714-1-1.html)說到快速漏洞挖掘中的幾個重點關注對象,命令執行,文件操作,sql注入。並且拿sql做爲例子簡單做了一次代碼審計,今天換一個思路,從文件操作部分入手,畢竟 文件操作一個搞不好就是getshell,比起注入按部就班慢慢來可要爽快多了。

一、關注重點
對於文件操作部分來說,首先對php內置的文件操作函數的作用和特性要有一個大概的瞭解
file_get_contents()
file_put_contents()
move_uploaded_file()
readfile()
fopen()
file()
fputs()
fwrite()
…………

這些都是常用的文件讀寫類函數,一般文件類的漏洞直接搜索這些函數的調用,跟蹤上下文參數傳遞過程就可以了。說起來挺簡單 其實要一個一個調用看過去還是很費時間的,尤其是在快速漏洞挖掘中,對系統結構還不太熟悉,有些參數傳遞或者方法可能一眼看上去就懵比了。那麼如何來快速發現一個文件類的漏洞呢。
審計文件類的漏洞,首先我會去看這套系統的上傳部分。上傳部分是已經構造完成的一套從輸入到寫入到輸出的流程,如果其中存在問題,那麼很可能直接就拿到shell。
上傳漏洞被挖了這麼多年,各類cms或多或少都會在上傳部分做一些檢查和限制,常見的檢查有
1、[Math Processing Error]_FILES[‘file’][‘type’] 上傳文件的類型,一般是與白名單比較。
3、[Math Processing Error]_FILES['file']['tmp_name'] 是否爲合法的上傳文件,當[Math Processing Error]_FILES[‘file’][‘tmp_name’]將是一個極大的安全威脅,如果處理文件上傳的函數是copy 那麼最輕都是一個任意文件讀取的漏洞。
2、單獨使用move_uploaded_file()函數處理上傳文件,理由同上,move_uploaded_file函數也會判斷是否爲合法文件。減少系統存在變量覆蓋漏洞時躺槍的概率。
3、文件名不可控且後綴名限制爲某個數組的成員 比如
[PHP] 純文本查看 複製代碼
?
1
2
[Math Processing Error]filename = 'user_avatar_01' . [Math Processing Error]s];

接下來就看看我們的目標beescms
二、實戰
先來看看beescms的上傳部分代碼
[PHP] 純文本查看 複製代碼
圖片描述
if(isset([Math Processing Error]_FILES[‘up’][‘tmp_name’])){
if([Math Processing Error]is_thumb=empty([Math Processing Error]_POST[‘thumb’];
[Math Processing Error]_POST[‘thumb_width’])?[Math Processing Error]_POST[‘thumb_width’]);
[Math Processing Error]_POST[‘thumb_height’])?[Math Processing Error]_POST[‘thumb_height’]);
[Math Processing Error]is_up_size = [Math Processing Error]value_arr=up_img([Math Processing Error]is_up_size,array('image/gif','image/jpeg','image/png','image/jpg','image/bmp','image/pjpeg'),[Math Processing Error]thumb_width,[Math Processing Error]logo);
[Math Processing Error]value_arr[‘pic’];
if(!empty([Math Processing Error]str="<script type=\"text/javascript\">[Math Processing Error]str;
exit;
}//圖片上傳
}else{
die(‘沒有上傳文件或文件大小超過服務器限制大小返回重新上傳‘);
}
}

可以看到 用is_uploaded_file檢查了上傳文件是否合法,所以即使系統有變量覆蓋漏洞(這套系統的確是有的,後面會說),也幫不上多大忙了
實際上傳用的是up_img函數 接着跟過去看看
…………………………….略
查看全文請看這裏》》》》》》》原文地址:http://bbs.ichunqiu.com/thread-13977-1-1.html?from=jike