天天看點

記錄一次JSP後門的分析

0x01 環境部署

首先啟動一個tomcat的環境先把這裡的代碼跑起來

記錄一次JSP後門的分析

先把這裡的代碼跑起來,通路tomcat

記錄一次JSP後門的分析

在docker中的​

​tomcat/conf​

​中可以看到賬号密碼

記錄一次JSP後門的分析
記錄一次JSP後門的分析

将JSP打包為war包​

​jar -cvf 1.war 1.jsp​

記錄一次JSP後門的分析

随後上傳就部署好了

記錄一次JSP後門的分析

0x02 靜态代碼分析

大部分的方法其實沒什麼好看的,重點在下面的判斷中

記錄一次JSP後門的分析

從這裡開始才是實際的處理邏輯,往下翻就可以看到一個runtime

記錄一次JSP後門的分析

那麼這裡應該如何執行指令呢?一行一行來說

記錄一次JSP後門的分析

這裡需要擷取一個參數z0,這裡是個三元表達式,如果z0不等于空的話,那麼cs的值就是z0這個GET參數的值,如果z0為空的話,它的預設值就是如下

記錄一次JSP後門的分析

繼續回到代碼,那麼需要設定響應頭位text/html,并且将編碼設定為要麼是UTF-8要麼是傳進來的編碼,随後繼續看到下面的處理邏輯

記錄一次JSP後門的分析

首先需要擷取一個參數為pwd的參數,這個pwd代表的值是如下pwd是110,那麼也就意味着這裡需要傳一個​

​​110=xxx​

​的參數,繼續往下看

記錄一次JSP後門的分析

也可以看到z1和z2分别兩個參數,那麼其實作在把視角放大一些,可以發現,Pwd(也就是110這個參數)其實是決定了我們會用什麼方法的

記錄一次JSP後門的分析

既然這樣,目前大部分到這裡已經梳理的差不多了,首先我們知道需要傳的參數如下1、z0 表示編碼2、110 表示處理邏輯3、z1 z2分别為不同處理邏輯那麼如何構造參數進行執行指令呢?