问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
从任意文件下载到getshell
渗透测试
从下载慢慢探索,总归还是有一点乐趣。
下载接口的获取 ------- 地市攻防起手,这样的一个页面,看着就比较没那么的新,然后验证码之类的全无,是很有机会进行尝试的点,很多时候也是靠这点直觉进行的测试 ![2024-11-08-21-05-01-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-36b5766e977bf7d2d9f2835dbe398debe960402a.png) 用URLfinder跑了一遍获取后台的接口 ![2024-11-08-21-17-17-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-5b1d84a247601fa820255954d5a3cb4a00ae30be.png) 我个人其实非常喜欢关注响应内容较小或者响应500报错的接口,前者大概率会有些信息,而后者大概率可以根据报错反推请求 ![2024-12-15-20-58-07-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-2bc7f8b94fba406421741a0d38080c447d0a80c3.png) 这里其实很明显,请求路径大概率可以进行自定义,是一个很经典的任意文件下载的潜在漏洞点,这里也是经过尝试,先看到报错,这里可以看到直接把全路径暴露出来,报错是没找到文件 ![2024-12-15-21-05-51-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-cb2b594dd670cc9d205135e1fdd064db4dbba149.png) 那么简单的../../etc/passwd,这里目标有waf,但是尝试后确定了https他们应该没弄,就完全无感。 ![2024-11-08-21-16-12-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-5873e9649a497bc30d9163dc004ecad1ae864c79.png) 下载目标的源码 ------- 那么到这里其实就可以尝试进行文件的读取,这个显然是linux,那么直接读历史命令记录看看是否存在打包的源码或者信息,来支撑我们进一步的利用 ![2024-11-08-21-20-43-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-3a0490a7d10520c1f32e43a54bf9051a8c38a624.png) 从这些命令记录我们可以得到非常多有用的信息,比如web应用的启动路径,比如一些日志路径情况,但是这里我们只能够明确的知道lib.zip中是应用的依赖,以及web应用配置的目录情况看大概率可能是一个jar包,那么就有一个新的问题,这个jar叫什么名字,因为大多数启动的jar应用一般不会跟依赖放在一起,依赖中可能存在很多分开开发的业务代码,虽然也能看到一些信息,但是核心jar的缺失会让审计的工作不好进行。 这里我通过尝试/proc/self/cmdline以及map去读这个jar的启动信息,但是返回均为空 ![2024-11-08-21-25-44-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-4ad9f080c8d68e79e6a0eea3a6b9fcd9a40f645e.png) ![2024-11-08-21-26-54-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-ed1cfb6d0d8583562126af6ac3b75d92415c11d5.png) 这里这条路不通,那就换条路,根据上面那个重启的restart.sh ![2024-11-08-21-30-07-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-87171026752d67c0c7ee468ec89130d1493f76ad.png) 没毛病,停了再启动,很ok,接着看start ![2024-11-08-21-31-15-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-f63e4bcffaf486e48180d5d10ca38cb7e3a40bfc.png) 让AI看吧 ![2024-11-08-21-32-42-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-1998a936d692fecc94ff815823165f9d8c695b2a.png) 牛,那么直接把lib.zip下载解压一下就行,这里我是直接把这些jar扔到我自己搭建的测试环境里面,让这些jar成我自己项目的依赖,经典一个jar 启动,剩余的路由之类的可能都在依赖里面。 ![2024-11-08-21-34-36-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-ac67eb8f90aec96de4fc02f85a8087e5311feefc.png) 插曲-burp插件检测到权限绕过 ---------------- 这里顺手看了眼burp插件的告警,看到了这个,可能有权限绕过,这里还有一个小伏笔。 ![2024-11-08-20-55-35-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-e40645d7a1443d2cb86089bbb11bab2d7b4b353e.png) 整体源码下载后进行审计 ----------- 这里目标其实很简单,jar项目那就找可以各类组件的漏洞、可能存在的反序列化以及可以完全控制的上传。 整体扔到jadx里面,在jadx里面搜上传的关键字,很可惜,大多数基本上都是这种路径不可控或者文件整体重命名的上传,意义不大,相关的版本如fastjson之类的也是1.2.83,只有个mysql可能在能打的范围内。 ![2024-11-08-21-46-03-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-ad1edbd387e5d7383b5a1fc2f27c699eda8c94f3.png) 这里也尝试了审之前那个下载的地方,这里很有趣,根据代码看像是这个接口上传和下载都是走的9002端口,就是在9002端口有一个服务进行文件操作 ![2024-12-12-14-39-21-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-e9e6eea26c8f72fd457f7dbcf18df922d1f29c57.png) ![2024-12-12-14-38-38-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-7c0baf9591ffd9bcf820021101011ac7e503a922.png) 这里又回去看了一下burp的包以及nginx的配置文件,确认事实就是如此 ![2024-12-12-14-37-20-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-bf0ec4f395590ec6a9045b46f47ce8379699ebaa.png) ![2024-12-12-14-37-39-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-1a1a64d6bbcde371a7feeac9f1aca25dba85f4ea.png) JDBC ---- 这里后面就开始听歌摆烂了,随手翻翻@RequestMapping,终于看到几个名字不对劲的了 ![2024-12-15-21-37-03-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-5e5d12a67cd2202ba0ae9f837ea7ae28e23f4c7c.png) 看到这个其实就有点想法了,顺手看了一下应用 打开就能非常明显的看到这几个路由,可以创建和验证数据库连接 ![2024-11-08-21-57-49-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-1c77f2bd0ac6e0a93951e719a7798b12959bf030.png) 跟一下发现验证的接口应该是存在jdbc路径可控,这里是直接传入ReportDatasource ![2024-12-12-14-55-23-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-8342d09dd8eb5fceb4c491020b1ada73660da687.png) 但是这里是根据DBTypeEnum来确定dirverclass ![2024-12-12-14-56-14-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-8734819c02d8282aa14df07a278d7b7032580d65.png) 看一眼DBTypeEnum是只有6种可选,其中存在mysql ![2024-12-12-14-57-07-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-be9ec40106d8616eb676f4d4fdb6ff2af1db8042.png) 这里又回头看了下jdbc的依赖,也符合要求 ![2024-11-08-21-58-32-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-e8f9134b393f6c20571c12e96d1222e8d113d34b.png) 但是这里还有个小问题,这里的参数可控,但是jdbcurl是已经写好的。 ![2024-12-12-15-12-03-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-bd1c1e0fff9b4d6bae528a3e84f2b09ef3126cb5.png) ![2024-12-12-15-14-02-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-85c2314fa93cec3e544d687a0d0bc94a6155bfa9.png) 也就是db后面的内容是死的,这里打jdbc需要传入dbname为 ```php midpl?&autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor ``` 但是这里后面还有问号 ```php ?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai ``` 最终jdbcurl可能就是 ```php jdbc:mysql://${ip}:${port}/${db}?&autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai ``` 所以这里还需要进行一下处理,传入参数为 ```php autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor# ``` 说实话这个是我随手试了一下试出来的,没怎么搞懂是为啥。 ![2024-12-12-15-20-54-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-4fd8b7ca44d5a2d77d73cd7e81ae62922db761a2.png) 那么根据参数进行构造,报错了。 ![2024-12-12-15-26-34-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-c26c61939592cac37f3bf0eb83e2f684df03ab21.png) 这里回到之前的actuator,这里的接口可能是转发了ngnix,和之前的疑似权限绕过是不同的。这里其实还有httptrace及heapdump端点,下载heapdump端点里面看到了token。 ![2024-12-12-15-30-23-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-07cef0571d9f1adecb6e4d8e631f92c309f62760.png) 再次尝试,这里看着是一下,其实是很多下,试探了一下是不出网(诸葛亮五丈原流泪.jpg)。 ![2024-12-12-15-31-24-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-6ab22867d3d53c29d3bfc8c16086f4cb5974f51d.png) 但是漏洞总是要验证的,网上搜了下特征,还是有的,找到个出网的。 用webchain一把梭(<https://github.com/Java-Chains/web-chains>) ![2024-12-15-20-56-29-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-7c788a05432c1b154dcad2349fcafe802ac4a1cf.png) ![2024-12-12-15-35-57-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-aab4ecd4427f3413cf60ea17e837fc4de22667ba.png) 花了点时间找到了文件服务这个端口的源码,但是可惜的是上传接口好像存在问题 ![2024-12-15-20-43-48-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-b305a25f59eb4213920b7ac99249fc27c1e8ab67.png) 说实话手艺不精,看不出来上传哪里存在问题,非常标准的拼接和cpfile ![2024-12-15-20-45-21-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-8cc9cfa4093f517e816e13b99a9dcaa940780f92.png) 本地环境搭建起来尝试了是没问题的,但是目标还是存在问题,实在是难搞,上传直接报错,尝试下载也没反应。 ![2024-12-15-20-47-49-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-3b3b3eda47da0f3215df61b3b112d8e865c5e2a8.png) 所幸看到了低版本的fastjson,可能是因为这个本身业务量很少就没升级,之前jdbc的包里面的fastjson是已经升级的版本 ![2024-12-15-21-00-44-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-11b49c5d4d69adabd2ad241a28e18663cbb35b8e.png) ![2024-12-15-21-00-57-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-8f91c6a5e2f32411b3e1a25c1c4ff47d7e4c2716.png) 这里也通过目标下载接口确认了,确实是有低版本。 ![2024-12-15-21-13-01-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-d44b2e19be2bfcc169e6353cfebbb9cbe2b1a190.png) 代码里面也刚好有个接口调用了fastjson的paseObject ![2024-12-15-21-48-15-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-ef91f03e87ac7f6f3ca6e050c76968e1e78158d6.png) ![2024-12-15-21-03-15-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-4ef88e3eb4b7f183ab3df6f84e58d06d4cd2cece.png) 这里找大哥要了一下不出网的payload,终于还是成功了,也算是了了一桩心事。 ![2024-12-15-21-02-37-image.png](https://shs3.b.qianxin.com/attack_forum/2024/12/attach-4e2c1f49d11f6110f79a6575739c577c64bc5486.png) 结语 -- 猛猛推荐web-chains,脚本小子之光!!!用了这个妈妈再也不用担心我打反序列化了!!<https://github.com/Java-Chains/web-chains>
发表于 2025-01-10 10:00:00
阅读 ( 1229 )
分类:
渗透测试
13 推荐
收藏
2 条评论
千年等一会
2025-01-10 11:01
Zcc我的神
请先
登录
后评论
hi1544
4天前
请问中间插曲用的..;绕过的插件是什么? 请问最后不出网fastjson利用的方式是bcel吗?
请先
登录
后评论
请先
登录
后评论
ZccAcc
1 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!