记一次任意文件下载到getshell
作者:互联网
0x01 前言
某日闲来无事,上fofa搜了xx系统,想着碰碰运气,类似这样
0x02 测试过程
随便挑了一个站点打开
Em…,试试运气,反手admin admin就进去了,是一个管理系统
然后根据网站的功能点,随便点击几个,发现除了常规的操作也没啥了,翻了一会,发现有一个文件下载操作
好家伙,藏得挺深,抓包看看,请求的地址好像是一个文件
fileName改成../etc/passwd看看,好家伙,报错了
看来应该不是这个路径,随后依次尝试了../../etc/passwd和../../../etc/passwd都是500错误,到了../../../../etc/passwd的时候就能访问到了
再看看能不能读历史命令,如果可以读历史命令,可以看看有没有网站备份文件或者网站安装包,嘿嘿,改路径为/root/.bash_history,访问!….500错误
看来应该是权限不够。没办法了,从其他地方入手吧。
接下来可以F12看看网站源代码,用源代码中标志性的语句或者文件去fofa搜索相同的系统,说不定会有root权限,大概像这样
有了相同的系统之后,再次尝试弱口令
可能是最近运气不错吧,弱口令又进去了。嘿嘿
接下来尝试刚刚的操作,下载../../../../etc/passwd文件看看
再试试读历史命令/root/.bash.history
可以读到历史命令,慢慢翻,最终发现有网站源码
反手下载下来
解压一下
JSP的站,没学过java的我裂开了,先跟着历史命令把环境搭起来,于是在自己服务器上部署了一样的系统。
没学过java,自动化java审计工具还收费,就手工一个方法一个方法康康把
找了大半天,都快想放弃了…
不过这套系统有mysql,先看看数据里面的结构吧。大概长这样
随后在管理网站用户的表里面发现了一个系统自带的账户(这里用账户x表示),账户x比admin权限还要高
把密码放到cmd5查一下
要钱?我穷的一批,没钱,反手找好师傅查一查,好师傅很快啊,就回了消息
随后我用这个账户x登录自己搭建的系统,发现在网站是根本查不到这个账户存在的,也就是说可能是开发商留下的。嘿嘿,有了这个账号,其他系统都可以登录了。
随后发现系统有一个上传点可以上传文件,既然都到白盒了,那么可以部署一个文件实时监控工具,看看发生变化的文件,也可以看看等会要上传的文件是否上传了。
这里使用了FileMonitor来监控文件
上传文件、抓包改后改后缀.jsp
提示上传失败
看看文件监控,已经能上传上去了
后缀可控,但是文件名不可控,这可麻烦了,一般文件名都是以时间戳或者有特定的算法命名,再多上传几次看看,看起来也没啥规律啊
翻看一下下载的网站源码中的class文件。再看看请求的地址
应该是upload类里面的Uploadfile方法(没学过Java,不知道对不对,别喷~)
找到了Uploadfile方法一行一行的看,头晕啊,但是最后还是找到了生成文件名的方法=-=
让我看看UUID.randomUUID().toString()是个啥
三部分组成:当前日期和时间+时钟序列+全局唯一的IEEE机器识别号(网卡mac地址)
突然想了想,前两个估计还能想办法得到,但是最后一个网卡的mac地址,就很难了,任意文件下载是下载不到带有网卡mac地址的文件的,又一条路被堵死了
过了几个小时,又发现一个上传点
文件监控起来
直接传马
回显了地址
冰蝎成功连上成功
最后如法炮制,利用系统自带的账号登录系统,然后用第二个上传点传马即可。
0x03 总结
标签:文件,getshell,..,passwd,任意,系统,etc,上传,下载 来源: https://www.cnblogs.com/backlion/p/15824540.html