burpsuite之——上傳截斷及截斷原理介紹
阿新 • • 發佈:2018-11-29
轉載請註明出處:https://blog.csdn.net/l1028386804/article/details/84197898
一、簡介
截斷的產生核心,就是chr(0)字元 。
這個字元即不為空(Null),也不是空字元(""),更不是空格!
當程式在輸出含有chr(0)變數時,chr(0)後面的資料會被停止,換句話說,就是誤把它當成結束符,後面的資料直接忽略,這就導致漏洞產生的原因。
二、後端語言
2.1 PHP
在php 5.3.4中修復了0
字元,但是在之前的版本中仍然危害巨大。
簡單測試一下 (PHP 版本<5.3.4)
<?php $data = $_GET["filename"]`; echo $data; ?>
url中輸入xx.php?filename=test.php%00.txt
,實際輸出為test.php
.
常見利用方法:
- 1.上傳時路徑可控,使用00截斷
- 2.檔案下載時,00截斷繞過白名單檢查
- 3.檔案包含時,00截斷後面限制(主要是本地包含時)
- 4.其它與檔案操作有關的地方都可能使用00截斷。
2.2 ASP
在檔案上傳路徑可控時出現:
<%
response.write(request("Filename"))
%>
傳入filename=test.asp%00.txt, 獲得引數值是test.asp,asp 會自動截斷 %00 後面的內容。
2.3 JSP
<%
String temp=request.getRealPath("/")+request.getParameter("path");
out.println(temp);
String ext = temp.substring(temp.lastIndexOf(".") + 1);
out.println(ext);
%>
傳入path=shell.jsp%00.txt 獲得字尾是txt,但是操作檔案的api是使用 C 實現會導致00截斷。因此這個與php相似,利用場景是檔案上傳 檔案下載等。
三、Web容器解析漏洞
我們都知道windows2003 + IIS6.0下,如果目錄結構中有xxx.asp這樣的目錄,那麼所有這個目錄下的檔案不管副檔名為什麼,都會當作asp來解析。