前言:
借着朋克实验室的某个靶机,系统的学习一下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