解析漏洞與檔案上傳漏洞—一對好兄弟

jlu16發表於2018-03-21

前言

目前在很多小型網站上,廣泛的存在著檔案上傳漏洞,在對其進行滲透時,通過sql注入/弱口令爆破進入後臺+webshell檔案上傳也許就是你拿下它最快的方式。

但是僅靠檔案上傳往往不行,有了解析漏洞的幫助效果可能會更好。

我對解析漏洞與上傳漏洞的理解是:

解析漏洞就是讓web容器把我們上傳的檔案當成指令碼解析的過程;

檔案上傳漏洞就是通過各種方式使得我們的含有惡意程式碼的檔案上傳到伺服器的過程。

解析漏洞

iis6.0的解析漏洞

iis6.0上有兩個典型的解析漏洞:

1..asp/.asa結尾的資料夾裡面的檔案均按照asp檔案進行解釋。
2.iis在解析檔名時遇到分號停止。

例子:

./dir.asp/evil_code.txt //txt檔案將被按照asp檔案進行解析
evil_code.asp;1.jpg //該檔案將被按照asp檔案進行解析

apache1.x 2.x中的解析漏洞

Apache在解析檔案時,當遇到不認識的副檔名時,將會從後向前解析,直到碰到認識的為止,如果都不認識,將會暴露原始碼。

apache認識哪些副檔名,可以在apache安裝目錄下的“conf/mime.types”中檢視。

例子:

1.php.rar //如果apache不認識rar檔案,該檔案將被按照php檔案解釋

PHP CGI解析漏洞(畸形解析漏洞)

常出現的版本:iis 7.0/7.5 Nginx<8.03

在php配置檔案中有一個cgi.fi: x_pathinfo,當其開啟時:

訪問 www.victim.com/evil.jpg/1.php

1.php為不存在的檔案,php將會向前解析,從而將evil.jpg(可以是圖片一句話)按照php解釋。

截斷攻擊

它最常出現在asp程式中,在php,jsp中也可能存在相關問題。

它名字雖然沒有解析兩個字,但是把它歸到解析漏洞是因為截斷攻擊使得web容器只解析檔名空字元前面的部分,屬於解析漏洞的範疇。

evil.php空格1.jpg

抓包後在16進位制下將檔名空格處的20改為00,會使得部分web容器將檔案解析為1.php。

檔案上傳漏洞

既然前面已經說了檔案上傳漏洞就是通過各種方式使得我們的含有惡意程式碼的檔案上傳到伺服器的過程,那麼檔案上傳漏洞的主題就是繞過伺服器或客戶端檢測的各種方式。這裡簡單寫一些,還有更多方法被眾多安全愛好者分享在他們的部落格中。

客戶端驗證

有時候雖然對上傳的檔案進行了限制,但是這個限制是在客戶端進行的,這種限制形同虛設,不多說了。

更改檔案字尾名

之前說了那麼多解析漏洞,就是為了配合更改檔案字尾名使用的。

服務端驗證往往對檔案的字尾名和資料包中的Content-Type部分進行驗證,假如將webshell程式碼檔案字尾改為其它被伺服器認為是安全的字尾,再通過解析漏洞讓其按照指令碼檔案進行解析,就達到了最終的目的。

文字編輯器的漏洞

很多網站為了節省開發成本,直接使用現成的文字編輯器,如fckeditor,這種編輯器經常在網上被爆出漏洞,可以對這些漏洞進行利用。

相關文章