在Tomcat中,應用程序的部署很簡單,只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會自動檢測到這個文件,並將其解壓。在瀏覽器中訪問這個應用的Jsp時,一般第一次會很慢,由於Tomcat要將Jsp轉化爲Servlet文件,而後編譯。編譯之後,訪問將會很快。另外Tomcat也提供了一個應用:manager,訪問這個應用須要用戶名和密碼,用戶名和密碼存儲在一個xml文件中。經過這個應用,輔助於Ftp,能夠在遠程經過Web部署和撤銷應用,固然本地也能夠,本案例就是利用這個特性來構建後門程序的。
Tomcat不只僅是一個Servlet容器,它也具備傳統的Web服務器的功能:處理Html頁面。可是與Apache相比,它的處理靜態Html的能力就不如Apache。能夠將Tomcat和Apache集成到一塊,讓Apache處理靜態Html,而Tomcat處理Jsp和Servlet.這種集成只須要修改一下Apache和Tomcat的配置文件便可。
(一)檢查Tomcat設置。服務器安裝了Apache Tomcat後會默認開放8080端口供外部鏈接,通常在瀏覽器中輸入「IP:8080」或者域名來訪問Apache Tomcat頁面,如圖1所示。
圖1 鏈接到Tomcat的頁面
(二)查看Tomcat用戶配置文件。Tomcat安裝完成後有一個配置文件「tomcat-users.xml」,它位於Tomcat程序安裝目錄下的conf目錄下,直接打開該文件能夠看到其中關於用戶名和密碼的明文值,如圖2所示,找到並記住包含「admin,manager」那一行的用戶名和密碼。(這裏的tomcat-user.xml指的是Catalina_base下的那個tomcat-users.xml文件,而不是Catalina_home下的)
圖2 獲取用戶配置的用戶名和密碼
說明:
(1)有不少對tomcat不是很瞭解的管理員在安裝完Tomcat後並無修改默認密碼,用戶名是admin,密碼爲空,若是是這種狀況能夠直接登陸。
(2)若是用戶修改了該密碼,那麼其密碼必定保存在「tomcat-users.xml」中,所以能夠經過Webshell來獲取這個文件的內容。
(三)進入Tomcat管理。Tomcat提供了在線管理,本案例也正式利用在線管理來構建後門的。在圖1中單擊左上角下面的「Tomcat Manager」連接後,會彈出一個要求輸入用戶名和密碼的窗口,該窗口跟Windows登陸窗口有點相似,如圖3所示。
圖3 登陸Tomcat管理應用
(四)查看部署狀況。在圖3中輸入從「tomcat-users.xml」文件中獲取的具備管理員權限的用戶名和密碼,驗證經過後進入部署管理頁面,如圖4所示。
圖4 部署管理頁面
說明:
(1)在部署管理頁面中能夠「Start」(啓動)、「Stop」(中止)、「Reload」(重載)、「Undeploy」(刪除部署)已經部署的項目,單擊「Undeploy」會對文件進行物理刪除。
(2)部署的文件夾是以*.war文件的名稱,例如上傳的文件是job.war,則在Tomcat目錄中會對應生成一個「job」文件夾 。
(五)部署JSP WebShell後門程序。在部署管理頁面的下方有一個「WAR file to deploy」,單擊瀏覽選擇一個已經設置好的後門war文件,在本例中的後門程序爲job.war,單擊「deploy」將該文件部署到服務器上,如圖5所示。
圖5 上傳後門war文件到服務器
說明
(1)部署是其文件必須是war文件。
(2)將winzip軟件安裝在系統中,而後將單一或者多個jsp後門文件壓縮成一個壓縮文件,壓縮成功後,將「*.zip」文件改名爲「*.war」便可。
(3)上傳文件後,tomcat會自動進行部署並運行。
(六)測試後門程序。在地址欄中輸入「部署文件名稱/jsp文件」,例如在本例中其正確的訪問是「[url]http://127.0.0.1:8080/job/job.jsp[/url]」,若是設置正確會顯示如圖6所示的Webshell登陸窗口。
圖6 登陸webshell
(七)在Webshell中執行命令。在Webshell中輸入密碼後,進入到Webshell管理界面,默認顯示服務器的一些信息,在功能菜單中選擇「執行命令」,並在執行命令輸入框中輸入「netstat -an」命令能夠查看網絡鏈接等,如圖7所示。
圖7 執行命令
說明
(1)經過這種方式部署的Jsp後門程序具備較大權限,能夠執行添加用戶等危險命令。
(2)jsp後門中能夠經過「文件系統」模塊來對文件進行操做;經過「數據庫」模塊來鏈接數據庫等操做;
(3)本案例構建後門也正是這裏,平時能夠在系統中保留一個小的後門程序,若是後門程序被殺毒軟件查殺或者被管理員發現並刪除掉了,則能夠經過以上步驟從新進行部署,從而循環永久保留後門。
小結
本案例介紹的狀況適合於管理員(admin)密碼爲空的狀況,同時也適合於獲取了tomcat中的tomcat-users.xml文件中的用戶名和密碼的狀況。通常來說內網相對防禦要弱一些,所以該案例對於內網滲透時有必定的幫助。因爲本人對jsp不是特別熟悉,尤爲是部署設置,不知道在jsp中是否也能夠進行諸如IIS中的嚴格權限限制,可否禁止jspwebshell的執行,本案例是對服務器攻防的一種探討,功能強大的應用程序每每一個弱小的漏洞就能夠攻破整個系統。
後記
經過google對tomcat的一些關鍵字進行了搜索,沒有遇到管理員爲空的,我使用inurl:8080 關鍵字進行搜索的(經常使用方法,其實修改下端口就能避免大部分這種攻擊),不知道還有什麼好的方法來進行搜索