跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

记一次任意文件下载到getshell

精选回复

发布于

0x01 前言

某日闲来无事,上fofa搜了xx系统,想着碰碰运气,类似这样

1049983-20220119225612527-1364655911.jpg

0x02 测试过程

随便挑了一个站点打开

1049983-20220119225613163-1439267662.jpg

Em…,试试运气,反手admin admin就进去了,是一个管理系统

1049983-20220119225613562-313120700.jpg

然后根据网站的功能点,随便点击几个,发现除了常规的操作也没啥了,翻了一会,发现有一个文件下载操作

1049983-20220119225613876-1349432502.jpg


好家伙,藏得挺深,抓包看看,请求的地址好像是一个文件

1049983-20220119225614402-159575045.jpg


fileName改成../etc/passwd看看,好家伙,报错了

1049983-20220119225614938-1294885574.jpg

看来应该不是这个路径,随后依次尝试了../../etc/passwd../../../etc/passwd都是500错误,到了../../../../etc/passwd的时候就能访问到了

1049983-20220119225615472-1186122569.jpg


再看看能不能读历史命令,如果可以读历史命令,可以看看有没有网站备份文件或者网站安装包,嘿嘿,改路径为/root/.bash_history,访问!….500错误

1049983-20220119225615994-2012918871.jpg

看来应该是权限不够。没办法了,从其他地方入手吧。

接下来可以F12看看网站源代码,用源代码中标志性的语句或者文件去fofa搜索相同的系统,说不定会有root权限,大概像这样

1049983-20220119225616528-1337144661.jpg

有了相同的系统之后,再次尝试弱口令

1049983-20220119225616920-100761018.jpg

可能是最近运气不错吧,弱口令又进去了。嘿嘿

1049983-20220119225617369-1237355266.jpg

接下来尝试刚刚的操作,下载../../../../etc/passwd文件看看

1049983-20220119225617822-1470359648.jpg


再试试读历史命令/root/.bash.history

1049983-20220119225618270-857525528.jpg

可以读到历史命令,慢慢翻,最终发现有网站源码

1049983-20220119225618653-1742935129.jpg

反手下载下来

1049983-20220119225618998-757262743.jpg

解压一下

1049983-20220119225619315-1947083995.jpg
1049983-20220119225619680-1165688496.jpg

JSP的站,没学过java的我裂开了,先跟着历史命令把环境搭起来,于是在自己服务器上部署了一样的系统。

没学过java,自动化java审计工具还收费,就手工一个方法一个方法康康把

1049983-20220119225620165-708289661.jpg

找了大半天,都快想放弃了…

不过这套系统有mysql,先看看数据里面的结构吧。大概长这样

1049983-20220119225620586-481103708.jpg

随后在管理网站用户的表里面发现了一个系统自带的账户(这里用账户x表示),账户x比admin权限还要高

1049983-20220119225621169-770288268.jpg

把密码放到cmd5查一下

1049983-20220119225621575-1976315723.jpg

要钱?我穷的一批,没钱,反手找好师傅查一查,好师傅很快啊,就回了消息

1049983-20220119225621999-891368438.jpg

随后我用这个账户x登录自己搭建的系统,发现在网站是根本查不到这个账户存在的,也就是说可能是开发商留下的。嘿嘿,有了这个账号,其他系统都可以登录了。

随后发现系统有一个上传点可以上传文件,既然都到白盒了,那么可以部署一个文件实时监控工具,看看发生变化的文件,也可以看看等会要上传的文件是否上传了。

这里使用了FileMonitor来监控文件

1049983-20220119225622414-783233812.jpg

上传文件、抓包改后改后缀.jsp

1049983-20220119225622849-1570156655.jpg

提示上传失败

1049983-20220119225623276-2048107424.jpg


看看文件监控,已经能上传上去了

1049983-20220119225623680-1104630029.jpg

后缀可控,但是文件名不可控,这可麻烦了,一般文件名都是以时间戳或者有特定的算法命名,再多上传几次看看,看起来也没啥规律啊

1049983-20220119225624147-1308714869.jpg

翻看一下下载的网站源码中的class文件。再看看请求的地址

Image

应该是upload类里面的Uploadfile方法(没学过Java,不知道对不对,别喷~)

找到了Uploadfile方法一行一行的看,头晕啊,但是最后还是找到了生成文件名的方法=-=

1049983-20220119225625149-1811091206.jpg



让我看看UUID.randomUUID().toString()是个啥

1049983-20220119225625633-667069781.jpg

三部分组成:当前日期和时间+时钟序列+全局唯一的IEEE机器识别号(网卡mac地址)

突然想了想,前两个估计还能想办法得到,但是最后一个网卡的mac地址,就很难了,任意文件下载是下载不到带有网卡mac地址的文件的,又一条路被堵死了

过了几个小时,又发现一个上传点

1049983-20220119225626147-800504049.jpg


文件监控起来

1049983-20220119225626548-1854421406.jpg

直接传马

1049983-20220119225627041-1428346929.jpg

回显了地址

1049983-20220119225627401-450524635.jpg


冰蝎成功连上成功

1049983-20220119225627845-114544922.jpg


最后如法炮制,利用系统自带的账号登录系统,然后用第二个上传点传马即可。

1049983-20220119225628330-1035735350.jpg


0x03  总结

1.通过fofa搜索某个开源CMS系统,点击任意一个目标站点,输入弱口令admin/admin进入系统
2.在后台的文件下载处,出现http://www.xxx.com/&filenam=xxxx.xls,那么这些链接存在任意文件下载漏洞
3.通过bp进行fuzz路径,尝试读取../../etc/passwd和../../../etc/passwd都是500错误,../../../../etc/passwd能读取到内容。那么换成../../../../root/.bash_history,显示500错误。
4.该测试的任意目标网站是不能读取到history记录,那么通过fofa搜索其他几个类似的开源cms系统,输入相同的弱口令admin/admin可进入系统,然后也能正常读取到../../../../root/.bash_history内容。
显示读取出目标管理员操作的记录,包括对目标站点进行备份的压缩包名称以及是保存到网站的根目录下
5.可直接下载根目录下的源码压缩包到本地,对其进行代码审计。
6.发现目标源码中包含了网站的配置文件以及mysql数据库的备份文件。
7.通过在本地搭建环境,让目标系统在本地能正常运行,同时也通过FileMonitor(https://github.com/TheKingOfDuck/FileMonitor)来监控文件变化,并通过phpmyadmin管理数据库,在数据库表中发现系统自带的账号system,以及对应的密码hash值,通过md5进行成功解密,并通过system账号登录到本地环境系统后台。
8.在后台的文件上传处,存在文件上传漏洞,上传test.jsp,提示上传成功,但是在FileMonitor监控显示已有新文件建立,虽搜索上传文件名并没有搜索到,证明是没有上传成功。
9.通过搜索源代码中的upload关键字,可以知道上传后成功的文件名的规则为:当前日期和时间+时钟序列+全局唯一的IEEE机器识别号(网卡mac地址)
10.在本地环境系统后台的另一处又发现一处文件上传,可成功上传a.jsp,并返回了上传的文件名,搜索该文件名,可知道保存的路径。
12.最后如法炮制,利用系统自带的账号system登录到目标系统后台,然后用第二处上传点传马即可。

原文链接:
https://mp.weixin.qq.com/s?__biz=Mzg4NTUwMzM1Ng==&mid=2247493857&idx=1&sn=f7db570914d9e4b4f517ab05b5e5d380&chksm=cfa54cf2f8d2c5e41b2636bb3e6a9961617324182a2dd93b52a1fa3bea9dd42d8ed96b377bb4&scene=178&cur_album_id=1553386251775492098#rd




创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。