1. 程式人生 > >DVWA學習日記-5 檔案上傳

DVWA學習日記-5 檔案上傳

檔案上傳

舉例:
這裡講一個很有名的,千里之堤,潰於蟻穴,警示我們要注重細節,一隻螞蟻也能毀了堤壩,我們就是要將不起眼的螞蟻送到這個堤壩上,這裡堤壩就是網站,螞蟻就是檔案

概念:
Web中的常用功能,將本地檔案上傳到伺服器上

檔案上傳漏洞,Web執行使用者上傳惡意程式碼,並在伺服器上執行
檔案上傳類似程式碼:upload(“hello.php”),上傳對應的是upload的函式,檔案就是hello.php,檔案就是我們可以控制的,我們要做的就是將我們設計好的檔案上傳上去

準備:
火狐瀏覽器
DVWA
FoxyProxy
OWASP ZAP

手工實戰
1.進入簡單模式
進入File Upload,是檔案上傳漏洞的主介面,常見的上傳圖片的功能
在這裡插入圖片描述


2.面對陌生頁面第一的反應就是試
網上隨便找個圖片,命名為test.jpg
在這裡插入圖片描述
3.上傳這張圖片
在這裡插入圖片描述
4.點了upload後
發現出現了紅框裡的字,意思是上傳成功了
在這裡插入圖片描述
5.上傳後的路徑
我們研究一下這個路徑,與我們的url進行對比

url:
http://localhost/DVWA-master/vulnerabilities/upload/#
上傳地址:
../../hackable/uploads/test.jpg succesfully uploaded!
再進行拼接得到了完整的路徑
http://localhost/DVWA-master/vulnerabilities/upload/../../hackable/uploads/test.jpg
再將../../做消除操作,得到連結
http://localhost/DVWA-master/hackable/uploads/test.jpg

6.我們再去訪問一下這個圖片
在這裡插入圖片描述
正常操作告一段落
7.嘗試操作不正常的
在本地建立一個phpinfo.php檔案,執行後是伺服器的資訊
在這裡插入圖片描述
8.將我們的phpinfo.php上傳至伺服器

在這裡插入圖片描述
9.訪問看一下這個檔案,成功執行,這裡就說明存在檔案上傳漏洞,能夠執行並檢視檔案
在這裡插入圖片描述
10.執行phpinfo只是判斷漏洞的存在
上傳一句話webshell
建立cmd.php
在這裡插入圖片描述
11.上傳後訪問檔案
在這裡插入圖片描述
12.執行我們的命令
?cmd=phpinfo();
在這裡插入圖片描述
13.我們來檢視一下系統命令
?=cmd=system(‘dir’); 運用到php的system函式
在這裡插入圖片描述
檢視檔案的操作
type命令,反斜槓需要轉移的
在這裡插入圖片描述


14.進入中等等級模式
嘗試上傳cmd.php檔案
報錯:你上傳的不是圖片,不允許上傳
在這裡插入圖片描述
15.準備代理
首先使用代理,變紅表示啟用
在這裡插入圖片描述
再加設定
在這裡插入圖片描述
儲存
在這裡插入圖片描述
啟用代理
在這裡插入圖片描述
而zap的代理預設就是127.0.0.1 8080

16.準備抓包
先上傳正常圖片的包
在這裡插入圖片描述
上傳webshell的包
在這裡插入圖片描述
對比一下
發現檔名的差別,還有檔案型別以及檔案內容的差別
正常包的內容都是二進位制檔案
在這裡插入圖片描述
17.我們不斷猜測,發現好像是檔案型別的地方被服務端限制了
修改檔案型別重新發送

在這裡插入圖片描述
成功繞過檔案型別限制,後面的利用就跟簡單模式一樣
在這裡插入圖片描述
檢視原始碼
在這裡插入圖片描述
18.進入高難度模式
嘗試使用修改檔案型別的,結果無法上傳

19.嘗試
我們嘗試下上傳檔案的字尾和檔案內容是不是受到限制了
嘗試php字尾名和php內容 失敗
嘗試php字尾名和img內容 失敗
嘗試img字尾名和php內容 失敗

20.最後知道是檔案型別和內容一起限制了
我們就做內涵圖進行繞過
準備一張圖片,和1.txt裡面寫入<?php phpinfo();?>
在這裡插入圖片描述
在cmd下輸入copy 1.jpg/b+1.txt/a 2.jpg
再開啟這張圖片發現沒有任何變化
在這裡插入圖片描述
利用編輯器開啟拉到最後可以看到php程式碼

21.上傳
在這裡插入圖片描述
檢視這張圖片
在這裡插入圖片描述

22.上次筆記4中的檔案包含漏洞,高難度的,需要配合檔案上傳漏洞進行file訪問本地的檔案

這時候我們就可以兩個一起配合使用
前面的亂碼就是圖片內容
在這裡插入圖片描述
23.使用菜刀
利用webshell上傳
再使用菜刀訪問webshell即可

24.nginx檔案型別錯誤解析漏洞
phpstudy切換Nginx
在這裡插入圖片描述
進入檢視php.ini的配置
在這裡插入圖片描述
確保cgi.fix_pathinfo為1
在這裡插入圖片描述

這樣服務端設定存在畸形解析
xxx.xxx/xxx.php
2.jpg後面的路徑是/2.php
而/2.php是不存在的,畸形解析了它
在這裡插入圖片描述
檢視原始碼
在這裡插入圖片描述
最後進入無漏洞模式
我們再上傳2.jpg的php內容的檔案,上傳完再下載下來,被服務端重新生成了圖片,有效修復了漏洞

檢視原始碼
紅框中就是重新編碼了圖片檔案
在這裡插入圖片描述

修復
1.檔案字尾名的白名單
2.檔案型別的匹配
3.檔案內容的判斷
4.阻止非法檔案的執行

在不可能模式中
將檔案重新命名
將檔案壓縮重寫生成
儲存目錄執行許可權
儲存目錄與Web分離