今天和大家分享一下aspx網站的程式碼審計,漏洞型別為:未授權訪問和任意檔案下載。
今天看的原始碼檔案就不共享給大家了,本文只作學習只用。
還是先看我們的資料夾目錄和dll檔案的目錄:
這是網站根目錄
正常開啟,是會跳轉到/2052/aspx/userlogin.aspx
Dll使用ILSpy反編譯後,目錄如下:
在程式碼審計中,類似未授權訪問的漏洞是最好驗證的,像一般aspx網站開發時,都會將dll中的類和頁面與顯示的aspx檔案的名稱命名一樣說簡單點,就是比如這裡的jtgcweb.2052.aspx下的userlogin,就對應著資料夾2052/aspx/userlogin.aspx檔案
話不多說,我們直接開始吧。
我們直接定位到存在未授權訪問和任意檔案下載漏洞的檔案:/2052/Aspx/gw/download.aspx
檔案說的很清楚,原始碼在這裡
通過原始碼,我們其實已經可以發現,好像並沒有什麼驗證的指令碼或是函式嘛。我們直接訪問看看。既不報錯,也不提示什麼,單純的一個無標題頁,嗯,看來這個檔案是可以直接在沒有登陸的情況下請求到的。
接著分析上面的原始碼截圖,學過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=/
這裡為什麼會報錯呢?很奇怪啊,我們再分析分析原始碼看看。
哦,原來是這樣,我們通過最後一句被傳輸的filename的值是通過str2和text的值拼接的。
Text的值,我們搞定了,但是str2的值呢,是通過str來決定的,也就是我們的oid引數,所以當我們將oid的值改為../的時候,str2指向的目錄才是網站的根目錄,那麼我們現在再來試試?
http://xxxxxxx/2052/Aspx/gw/download.aspx?name=../../../web.config&oid=../
成功下載,我們開啟看看唄?
很nice,所以,今天的任意檔案下載漏洞和未授權訪問漏洞,你學到了嗎?