本文目錄一覽:
PHP中文件包含:/與.
首先有個基本概念”..”兩點表示上級目錄,”.”一點表示本目錄
如
www文件夾裏面有index.php文件和fckeditor文件夾;fckeditor文件夾裏面有fckeditor.php文件;www文件夾和另外一個aaa文件夾在同一目錄下;aaa文件夾下面也有一個fckeditor.php文件
則:
1、include(“fckeditor/fckeditor.php”);表示在index.php文件中包含fckeditor文件夾裏面的fckeditor.php文件
2、include(“../aaa/fckeditor.php”)表示包含aaa文件夾裏面的fckeditor.php文件
3、include(“./fckeditor/fckeditor.php”)和第1個是同樣的意思。
文件上傳漏洞的類型有哪些?
1、 前端檢測繞過
有的站點只在前端對文件的類型有所限制,我們只需用bp抓包然後修改文件後綴名就能繞過這種檢測。
2、 文件頭檢測繞過
有的站點使用文件頭來檢測文件的類型,這種檢測可以在shell前加入相應的位元組一繞過檢測,幾種常見的文件類型的頭位元組如下:
3、 後綴檢測繞過
部分服務器僅根據文件後綴、上傳時的信息或者文件頭來判斷文件類型,此時可以繞過。php由於歷史的原因,部分解釋器可能支持符合正則/ph(p[2-7]?|t(ml)?)/的後綴,如php/php5/pht/phtml/shtml/pwml/phtm等。如果後端對文件名進行了過濾,可以嘗試雙寫文件名,比如1.pphphp。
4、 系統命名繞過
在windows系統中,上傳不符合windwos命名規則的文件名會被windows系統自動去掉不符合規則符號後面的內容,例如:test.asp.、test.asp(空格)、test.php:1.jpg、test.php:: D A T A 、 t e s t . p h p : : DATA、test.php:: DATA、test.php::DATA…這些文件上傳到服務器端之後都會變成test.php
在linux系統下,可以嘗試上傳文件後綴名為大小寫混用的Php文件。
5、 文件包含繞過
在文件包含的時候,為了靈活包含文件,將被包含文件設置為變量,通過動態變量來引入需要包含的文件,用戶可以對變量的值進行控制,而服務器端未對變量進行合理的校驗,這樣就導致所包含的文件有可能存在惡意代碼。比如1.php
?php $file=$_GET[『file』]; include($file); ?
這個程序就包含了一個文件,我們在1.txt文件中寫入
?php phpinfo(); ?
然後將這個文件包含在1.php中1.php?file=1.txt這樣
?php phpinfo(); ?就成功寫入1.php這個文件當中,我們訪問1.php這個文件的時候就能出現php信息那個頁面。利用這個漏洞我們就可以進行文件上傳,我們只需包含一個一句話木馬內容的txt就能用菜刀連接,這樣就成功執行了文件上傳。
6、 解析漏洞繞過
目錄解析:在網站中建立名稱為*.asp、.asa格式的文件夾時,其文件夾下面的文件都會被當做asp執行。
文件解析:當文件名為.asp;1.jpg時,也會被當做asp執行
Apache解析漏洞:Apache在解析文件時,是從右往左,如果遇到不認識的擴展名時,就會繼續向左判斷,例如1.php.rar就會被當做
php解析。
IIS 7.0/IIS 7.5/Nginx0.8.3畸形文件解析漏洞,當訪問時,此時1.php不存在,就會將1.jpg當做php文件去執行,所以如果存在該漏洞,將php木馬後綴改成jpg然後訪問1.jpg/1.php然後1.jpg就會被當成1.php來執行。
.htaccess,該文件裏面的代碼如下:
FilesMatch 「1」
SetHandler application/x-httpd-php
這段代碼的意思就是文件名包含」1」這個這個字符串就會被當成php文件來處理。但是值得注意的是上傳.htaccess必須是網站根路徑。
7、 文件截斷繞過
00截斷:由於00代表結束符,所以會把00後面的所有字符刪除。
能利用這個漏洞的前提是,php版本要小於5.3.4,magic_quotes_gpc需要為OFF狀態。我們用bp進行攔包之後,需要send to repeater,然後在hex中,在php後面添加00
8、 競爭條件攻擊
一些網站上傳文件邏輯上是允許上傳任意文件的,然後檢查上傳文件的內容是否包含webshell腳本,如果包含則刪除該文件,這裡存在的問題是文件上傳成功之後和刪除文件之間存在一個短的時間差,攻擊者就可以利用這個時間差來上傳漏洞攻擊。攻擊者先上傳一個webshell腳本1.php內容如下:
?php fputs(fopen(『../shell.php』,』w』),』?php @eval($_POST[a]) ?』); ?
代碼內容就是生成一個新的webshell,shell.php,那麼當1.php上傳成功之後,我們快速訪問這個文件,這時就會在服務器端當前目錄下自動生成shell.php,這時就利用時間差完成了webshell的上傳。
如何截斷上傳文件中的的php文件
截斷類型:php %00截斷
截斷條件:
php版本小於5.3.4 詳情關注CVE-2006-7243
php的magic_quotes_gpc為OFF狀態
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/287465.html