前言:
藉着朋克實驗室的某個靶機,系統的學習一下axis中的SOAP及WSDL和Tomcat。
- SOAP:Simple Object Access Protocol
- WSDL:Web Services Description Language
wsdl文檔部分(僅供參考):
<definitions>
<types>
definition of types........
數據類型定義的容器,它使用某種類型系統(一般地使用XML Schema中的類型系統)
</types>
<message>
definition of a message....
通信消息的數據結構的抽象類型化定義。使用Types所定義的類型來定義整個消息的數據結構。
</message>
<portType>
definition of a port.......
對於某個訪問入口點類型所支持的操作的抽象集合,這些操作可以由一個或多個服務訪問點來支持。
</portType>
<binding>
definition of a binding....
特定端口類型的具體協議和數據格式規範的綁定。
</binding>
<service>
相關服務訪問點的集合。
</servie>
</definitions>
WSDL說白了其實就是將webSevice打包後deploy,工程裏面的某個類的某個方法可以不用實例化,通過某種映射關係將方法映射到WSDL中,通過URL即可傳遞參數並調用方法,其實就是一個接口。一般AXIS需部署jar或aar包,tomcat部署war包。
Pentester Lab Axis2 Web service and Tomcat Manager
此靶機有AXIS2的webService及Tomcat服務,下面分別在axis2服務與tomcat管理後臺上分別部署服務拿到權限。
tomcat部署war包:
發現tomcat管理頁面:
使用metasploit進行爆破未果,如果能讀取到tomcat-users.xml文件就能得到用戶名與密碼了。訪問axis服務,發現有ProxyService服務:
此service有敏感信息泄露漏洞,查看此服務接口文檔:
發現此服務接口方法名爲get,參數爲uri,返回類型爲string類型。使用此接口讀取tomcat配置文件/etc/tomcat6/tomcat-users.xml。
登錄Tomcat管理後臺:
上傳war包後查看application發現部署的test應用:
注:從上面可以看到axis2也是Tomcat的一個webService,也是部署後的應用。
可以看到我們部署的test應用中的shell.jsp解析,獲得webshell:
axis2部署aar服務:
axis2服務的幾個特殊路徑:URL/axis2/ URL/axis2/axis2-admin/ URL/axis2/services/ 默認憑證:admin/axis2
使用默認用戶名密碼登錄:
在部署接口服務處上傳aar包,包含各種類及方法作爲接口。此處上傳編寫好的接口。
可以看到上傳成功, 點擊查看可用的接口服務:
可以看到可用的Cat接口及其內部的方法名。進一步查看Cat接口的接口說明文檔或者是映射文檔wsdl,以exec命令執行接口爲例:
可以看到此接口名爲exec,參數爲字符串型的cmd,返回類型爲字符串類型,直接在URL中利用映射關係調用接口即可,請求接口方式如下:
可以選擇反彈shell等後續操作。。。
總結:
- axis2是Tomcat的一個webService,是一個application而已,是在webapp部署後的。
- Tomcat管理後臺用戶名密碼在/conf/tomcat-users.xml文件中,登陸後可部署war包。
- axis2管理後臺可部署aar包,其實axis2就是部署在Tomcat中的一個無須實例化即可隨時運行類中方法的、管理接口的應用。可部署接口,可調用接口,而調用的接口是提前寫好的service打包成aar或jar後通過axis2上傳的。
- axis2特殊路徑:URL/axis2/ URL/axis2/axis2-admin/ URL/axis2/services/ /conf/axis2.xml(密碼) URL/axis2/services/listServices(此請求返回無需登錄情況下的,axis2應用的所有接口名及方法,可以直接?wsdl查看接口文檔,一般可以當作盲測。)
- 打包war包:jar -cvf xxx.war * 解包:jar -xvf xxx.war