要不就叫誰誰誰的'站'是"我"的了~~

為什么會存在文件上傳呢?

  • 網(wǎng)站為了給用戶更好的體驗,也有助于提高業(yè)務(wù)效率。
  • 一般的社會網(wǎng)絡(luò)的web應(yīng)用程序,博客,論壇,電子,銀行網(wǎng)站等。會給用戶與企業(yè)員工有效的共享文件,
  • 在運營過程中,對網(wǎng)站內(nèi)容的更新,需要網(wǎng)站就要文件上傳功能
  • 允許上傳文件,視屏,頭像和許多其他類型文件。
  • 這樣的做法是基于對用戶的完全信任。(但是我們不是一個好人~~)

上傳文件本身是不存在漏洞

為什么會出現(xiàn)上傳文件漏洞呢?

  • 服務(wù)器配置不當(dāng)
在不需要上傳頁面的情況下,
導(dǎo)致任意文件上傳HTTP請求方法(put)
將.html后綴的文件使用.php進(jìn)行解析,
導(dǎo)致.html  .xml等靜態(tài)頁面被解析
上傳文件保存磁盤未NTFS格式可以通過$data繞過黑名單限制
等等,這屬于管理員問題。
  • 開源編輯器漏洞
  • 本地文件上傳限制繞過
只是在本地限制,使用抓包工具,修改上傳文件,繞過
  • 過濾不嚴(yán)或是繞過
使用黑名單過濾掉一些關(guān)鍵的可執(zhí)行腳本文件,但是也不全是被繞過。
例如:服務(wù)器過濾掉了.php文件,但是沒有過濾掉.php3等可執(zhí)行文件
php2,php5,phtml,aspx等等
  • 文件解析漏洞導(dǎo)致文件執(zhí)行
  • 文件路徑截斷
?
%00
\0
可以控制文件路徑的情況下,使用超長文件
路徑被截斷,造成上傳

從漏洞原理總結(jié),分為四類web應(yīng)用程序解析漏洞

  • Apache 的拓展名順序解析漏洞

Apache自身漏洞 
前提:-test.php.任意不屬于黑名單也不屬于Apache解析白名單名稱
文件x1.x2.x3的文件 Apache會從x3的位置往x1位置嘗試解析,
以遞歸的形式,直到找到Apache可以解析的拓展名,從x3到x2,再到x1

![QR49D}9367L]{])O4RU5}21.png](http://upload-images.jianshu.io/upload_images/2495234-991588ca6ccaad2d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
有些東西還是需要個人去嘗試,發(fā)現(xiàn)更多的版本信息漏洞。

  • IIS 的asp解析漏洞

IIS自身漏洞
前提:-test.asp/任意文件名 | tset.asp;任意文件名 |  
任意文件名/任意文件名/.php(來之php-cgi漏洞)
IIS6.0在解析asp格式的時候有兩個解析漏洞
1.目錄名包含".asp" 字符串,那么這個目錄下所有文件都會按照asp去解析。
2.只要文件名中含有".asp"會優(yōu)先按照asp來解析

![%W`ZP4TBURTV%N}8]WH5]G3.png](http://upload-images.jianshu.io/upload_images/2495234-519b0f2afeb5fdc3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

  • Nginx %00解析漏洞

Nginx自身漏洞
前提:任意文件名/任意文件名.php | 任意文件名%00.php
Nginx主要有兩種漏洞:
1.一個對于任意文件名,在后面添加/任意文件名.php的解析漏洞,比如原文件名是test.jpg,可以添加test.jpg/x.php 進(jìn)行解析攻擊
2.對于低版本的Nginx可以在任意文件名后面添加%00.php 進(jìn)行攻擊

![9N4J%34V%M2VEX]TZ@@SHNN.png](http://upload-images.jianshu.io/upload_images/2495234-23c7b21abe149a9e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

  • php-cgi 的默認(rèn)配置漏洞

神馬事CGI(問度娘去0.0)
這類漏洞主要出現(xiàn)在IIS和Nginx ,主要是以CGI形式調(diào)用php的web應(yīng)用程序。Apache通常以module 的形式去調(diào)用php(比較少見)

是由 cgi.fix_pathinfo 的值造成的,默認(rèn)配置 cgi.fix_pathinfo=1
當(dāng) php.ini 中 cgi.fix_pathinfo = 1 時,PHP CGI 以 / 為分隔符號從后向前依次檢查如下路徑:

<span style="font-size: 14px;">/home/verdana/public_html/unsafe/foo.jpg/a.php/b.php/c.php  
/home/verdana/public_html/unsafe/foo.jpg/a.php/b.php  
/home/verdana/public_html/unsafe/foo.jpg/a.php  
/home/verdana/public_html/unsafe/foo.jpg</span> 

直到找個某個存在的文件,如果這個文件是個非法的文件,so… 悲劇了~
PHP 會把這個文件當(dāng)成 cgi 腳本執(zhí)行,并賦值路徑給 CGI 環(huán)境變量——SCRIPT_FILENAME,也就是 $_SERVER['SCRIPT_FILENAME'] 的值了

這是后話了

最開始是直接把php.ini中設(shè)置 cgi.fix_pathinfo = 0想一勞永逸解決。不過后來發(fā)現(xiàn)其導(dǎo)致PHP的超全局變量 $_SERVER['PHP_SELF']為空于是有些程序會出錯(比如Discuz會拼接出錯誤圖片頭像路徑)。

上傳檢測流程

  • 客服端檢測繞過
    javascript檢測
  • 服務(wù)端檢測繞過
    1.MIME類型檢測
    2.目錄路徑繞過檢測
    3.文件拓展名檢測

-黑名單檢測
1.文件大小寫繞過(Asp,Php)
2.名單繞過
3.特殊文件名繞過(例如:.test.asp.或是.test.asp_)
4.截斷繞過0x00
5.htaaccess文件攻擊(上傳自定以.htaccess,繞過各種檢測)
6.解析漏洞
-白名單檢測
1.截斷繞過
2.解析漏洞
-htaccess文件攻擊
啟用.htaccess,需要修改httpd.conf,啟用AllowOverride,并可以用AllowOverride限制特定命令的使用。(例如上傳一個1.jpg文件,在.htaccess文件中jpg使用php解析,完成繞過)
無視黑名單和白名單。

4.文件內(nèi)容檢測(圖片頭部內(nèi)容)

如果一個圖片在一個圖片編輯器內(nèi)打開, 就如 Gimp, 用戶就可以編輯圖片的注釋區(qū), 那兒就能插入 PHP 代碼

這是上傳漏洞的核心之一

可以囊括攻擊者所有的思路和方法(作者網(wǎng)上找到的.0好菜0.)
![1[38E]WX)L(]CEH4RFPVH~3.png](http://upload-images.jianshu.io/upload_images/2495234-c7c1326e999c6f21.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

MIEFP_20UWSI_YR~A)DVO29.png

文件上傳漏洞存在的危害

  • 網(wǎng)站被控制
  • 服務(wù)器淪陷
  • 同一服務(wù)器下的網(wǎng)站都會被控制

如何挖掘,利用

下面的內(nèi)容就個人而言有意義

  • 查找有輸入點的地方
  • 目錄,文件掃描(尋找敏感文件)
  • 然后去依次對比
  • 哪些檢測環(huán)節(jié)存在/不存在
  • 哪些環(huán)節(jié)是安全/還是有漏洞
  • 哪些環(huán)節(jié)如果被利用是代碼層漏洞/還是 Web 應(yīng)用程序解析漏洞
  • 對應(yīng)在該項后面進(jìn)行填寫
  • 最后把 Vule 的部分選出來,再來分析如何進(jìn)行組合,以及利用它們需要什么樣的條件
  • 通過這個分析框架進(jìn)行白盒/黑盒分析并羅列出所有情況
  • 攻擊者便能更系統(tǒng)地分析出源碼/目標(biāo)環(huán)境可能存在的漏洞

如何修復(fù),安全配置,需注意的位置。

  1. 輕量級檢測必然能繞過
  2. 檢測的重點放在文件內(nèi)容檢測
    可以用檢測腳本語言特征碼的機制
  3. 路徑/擴展名檢測一定要用白名單
    并且注意路徑的 0x00 截斷攻擊 (把 php 更新至最新版本即可,已經(jīng)修補了這個漏洞了)
  4. 不能有本地文件包含漏洞
  5. 隨時注意更新 web 應(yīng)用軟件
    避免被解析漏洞攻擊
    6.客服端和服務(wù)端共同驗證。
F7{LYKYGDB92W_AN9$H%E1R.png

以上的內(nèi)容大部分都是個人學(xué)習(xí)過程中,收集的信息。
Know it then hack it

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • (源自摘抄整理)https://www.91ri.org/11494.html Webshell實現(xiàn)與隱藏探究 一...
    JackyTsuuuy閱讀 20,923評論 2 13
  • 文件上傳漏洞是指用戶上傳了一個可執(zhí)行的腳本文件,并通過此腳本文件獲得了執(zhí)行服務(wù)器端命令的能力。這種攻擊方式是最為直...
    付出從未后悔閱讀 1,185評論 0 4
  • 一套實用的滲透測試崗位面試題,你會嗎? 1.拿到一個待檢測的站,你覺得應(yīng)該先做什么? 收集信息 whois、網(wǎng)站源...
    g0閱讀 4,882評論 0 9
  • 1,檢測javascript類型的繞過(客戶端) -通常post請求發(fā)送到web服務(wù)器,客戶端javascript...
    carsonsoding閱讀 1,158評論 0 1
  • 上一章:職場妖精修煉記(23)貿(mào)然離職 兩個月以后的某一天,我接到一個電話,要我去面試,我問對方是招什么崗位,對方...
    夏乙之閱讀 441評論 6 10