aspx程式碼審計-2

weixin_34037977發表於2017-09-21

今天和大家分享一下aspx網站的程式碼審計,漏洞型別為:未授權訪問和任意檔案下載。

本文作者:i春秋簽約作家——非主流

今天看的原始碼檔案就不共享給大家了,本文只作學習只用。

還是先看我們的資料夾目錄和dll檔案的目錄:

這是網站根目錄

圖片1.png

正常開啟,是會跳轉到/2052/aspx/userlogin.aspx

圖片2.png

Dll使用ILSpy反編譯後,目錄如下:

圖片3.png

在程式碼審計中,類似未授權訪問的漏洞是最好驗證的,像一般aspx網站開發時,都會將dll中的類和頁面與顯示的aspx檔案的名稱命名一樣說簡單點,就是比如這裡的jtgcweb.2052.aspx下的userlogin,就對應著資料夾2052/aspx/userlogin.aspx檔案

圖片4.png

圖片5.png

話不多說,我們直接開始吧。

我們直接定位到存在未授權訪問和任意檔案下載漏洞的檔案:/2052/Aspx/gw/download.aspx

圖片6.png

檔案說的很清楚,原始碼在這裡

_2052_Aspx_Message_Download

圖片7.png

通過原始碼,我們其實已經可以發現,好像並沒有什麼驗證的指令碼或是函式嘛。我們直接訪問看看。既不報錯,也不提示什麼,單純的一個無標題頁,嗯,看來這個檔案是可以直接在沒有登陸的情況下請求到的。

圖片8.png

接著分析上面的原始碼截圖,學過asp的都知道,Request.QueryString()函式意指程式通過http的get方法進行引數傳遞,所以,這裡我們便需要傳遞兩個引數(分別是name和oid)進去,才可以完成這個if判斷。

所以,我們暫時構造請求格式如下:

http://xxxxx/2052/Aspx/gw/download.aspx?name=1&oid=1

base.Response.AppendHeader(“Content-Disposition”, ”attachment; filename=” + base.Server.UrlPathEncode(text)); //這段程式碼的意思是指,從download.aspx檔案所在的目錄,開始下載檔案,檔案的名字從哪來?從text來,text的值又從哪來?從我們get請求中的name引數的值來。所以,我們試試get請求這個呢?

web.config檔案在網站的根目錄,download.aspx檔案在2052/aspx/gw/目錄下。

http://xxxxxxx/2052/Aspx/gw/download.aspx?name=../../../web.config&oid=/

圖片9.png

這裡為什麼會報錯呢?很奇怪啊,我們再分析分析原始碼看看。

圖片10.png

哦,原來是這樣,我們通過最後一句被傳輸的filename的值是通過str2和text的值拼接的。

Text的值,我們搞定了,但是str2的值呢,是通過str來決定的,也就是我們的oid引數,所以當我們將oid的值改為../的時候,str2指向的目錄才是網站的根目錄,那麼我們現在再來試試?

http://xxxxxxx/2052/Aspx/gw/download.aspx?name=../../../web.config&oid=../

圖片11.png

成功下載,我們開啟看看唄?

圖片12.png

很nice,所以,今天的任意檔案下載漏洞和未授權訪問漏洞,你學到了嗎?

相關文章