hi,我是涼風,(以下內容純屬個人見解,如有不同的意見歡迎回復指出) ,本菜比發現aspx過狗的姿勢不常見,不像php一樣一抓一大把,於是我決定研究一下aspx
引用i春秋作家團大佬@非主流 對一句話木馬的理解:
一句話木馬的意思就是,我們制造了一個包含遠程代碼執行漏洞的web頁面。
目錄:
0×01:我沒有aspx代碼編寫基礎,我該從哪入手?
0×02:正式開始:從過狗菜刀配置文件里尋找思路
0×03:再寫一個:分析各種攔截機制,一一繞過
0×04:總結
0×01:我沒有aspx代碼編寫基礎,我該從哪入手?
在這里,本菜比與小白們一起學習:如何自己寫aspx過狗一句話木馬
“授人以魚不如授人以漁”
前期准備(建議,自行決定):
(1)了解aspx,aspx的百度百科至少看一遍,看懂aspx一句話木馬
(2)准備好可以查資料的網站(aspx語法、函數等必備知識)、工具,例如官方手冊(chm文件)。
(3)本地搭建環境,裝好安全狗,D盾順便也裝了
(4)菜刀肯定不可少
aspx文件就是asp.net文件,需要.net 環境,用“C#”,“Jscript”等語言編寫。
Jscript手冊我會放在附件里
我用的是2003server+iis+asp.net 環境,裝了 .net 2.0與4.0
0×02:正式開始:從過狗菜刀配置文件里尋找思路
我並不會aspx,起步的時候很難憑空弄個過狗的出來,那么就要自己想辦法。
因為曾經分析過:過狗菜刀php的配置,配置里過狗的思路與php過狗木馬類似,所以我在沒學過aspx並且沒有過狗的aspx一句話作為參考的時候,突然想到醬紫做。
曾經的分析:https://bbs.ichunqiu.com/thread-26196-1-1.html
我們看一下配置文件關於aspx的部分:
可以看有一部分是經過url編碼的,因為asp.net文件貌似不能直接解析,所以先還原,看還原之后的代碼。
利用網上的在線解碼直接轉碼:
因為我曾分析過,知道:其中%s是菜刀要執行的經過base64加密的命令。
所以應該有一個base64解密函數,以及代碼執行函數
這兩個函數很容易找出來,
其中編碼為:65001,這是utf-8。
仔細看了看有些不對勁,aspx代碼部分只給了這兩個函數,也就是說,aspx過狗的那一部分主要是前半段的url編碼。找到的這兩個函數並沒有使用過狗的姿勢。難道這次分析白費了?先試試再說吧,簡單利用base64解密函數。(本來就沒學過aspx,知道個base64解密函數也不虧了)
看我操作
我用安全狗、D盾掃描了一下,居然奇跡般的繞過了
再用菜刀連接,沒問題。
(注:D盾防護全開后,將限制木馬的權限,不在本文考慮范圍,本文只使用D盾的后門掃描功能,安全狗全開)
0×03:再寫一個:分析各種攔截機制,一一繞過
第一種方法感覺有運氣成分在內,並不是我希望看到的,所以再寫一個吧
這回我們靠自己。
一行一行的寫代碼,看看他什么時候會攔截
不再使用base64解密函數,自己尋找別的方法。
寫一個光明正大的aspx木馬
安全狗攔截,可是D盾只是可疑的級別,也就是說,如果只裝D盾,木馬不會被攔截。(已測試哦)
再改改
這次刪掉了unsafe參數,安全狗照樣攔截,但是D盾什么也掃不出。.net 4.0 下的eval的第二個參數取消,也就是說.net 4.0開發的網站,只裝D盾,這個木馬就可以繞過。但是為了兼容性,我們試着繞過“unsafe”這個攔截機制,(可以用base64解密,但是我說過不用)
用字符串拼接的方法:
安全狗還是沒繞過,但是D盾沒檢測出unsafe參數被加進去,所以什么也沒掃到。
接下來就是繞過安全狗了。
第二個參數做了繞過D盾處理,那么第一個參數來繞過安全狗的檢測吧,有經驗的人都知道安全狗沒那么嚴格,第二個參數的unsafe應該不會被安全狗攔截。
創了一個函數fun(),直接返回接收到的pass的內容,也就是說經過了一個函數的傳遞,安全狗就不認識了。
菜刀連接成功,沒問題
0×04:總結
aspx的函數沒有php的函數多,個人感覺aspx花樣不多,所以繞過waf的姿勢不像php一樣多。但是由於使用aspx的網站沒有php的那么多,所以waf對aspx的重視程度沒有php的大。
(學習)方法很重要,之前我沒有具體分析waf的一些攔截機制,直接使用各種錯誤的姿勢,走了一堆彎路,后來一步一步試,看怎樣會被攔截(就像測試sql注入繞過一樣)。用這種方法感覺效率快多了,而且思路清晰連貫。