利用文件读取加条件竞争Getshell

前提

最近在测一个第三方网站,同时被告知这个第三方网站没有安全,那我心想这不是稳了,可以早点拿到权限交差。可整个过程下来还是有点曲折的。

Getshell过程

信息收集

按照惯例,拿到目标以后先来一波信息收集。用工具一顿扫描,拿到了一些域名和IP。

端口测试

用nmap扫描了一波IP,看到开了ssh端口,感觉有戏,拿出了我珍藏好久的字典就开始爆破,结果爆破了个寂寞,没想到他们安全意识还挺高竟然没有使用弱密码,这不像是没有安全的公司啊。

自动草稿

其它的端口暂时没有发现什么有价值的,这条路暂时走不通,只能换条路子了。拿到的域名中看到有几个后台,看看能不能从这里找到突破口。

web测试

打开后台登录页面发现是通过手机号进行登录的,那么常规的用户字典就没有什么用处了,只能再去收集跟他们公司有关的手机号,再去尝试。

自动草稿

从他们公司官网,爱企查等网站收集了一波手机号,由于没有使用验证码,那就直接开始爆破。有一个手机号使用了弱密码,成功登录后台,看到了胜利的希望。

自动草稿

简单浏览了一下后台功能,发现了几个上传点。在测试第一个的时候就发现了一个问题,他们上传是上传到OSS中的,那么通过上传这条路拿shell可能也走不通了,把上传全部看了一遍,结果都是这样。这让我严重怀疑他们真的没有安全人员嘛?

接下来又认真看了一下其它功能,在一处下载处发现了一个任意文件读取漏洞。然后就想着把刚才有上传功能的文件下载下来看看他们上传的具体逻辑是什么样的。

自动草稿

它们上传是先把文件放到本地,然后上传到OSS中,最后删除了本地文件,而且本地文件还是放在web目录内。

自动草稿

看到这里,各位可能就知道下一步要怎么去做了,没错,就是利用条件竞争去上传文件。

条件竞争Getshell

针对上传来说,条件竞争有三个利用条件:

1)文件先保存在本地

2)文件名不是随机的,或者有规律可循

3)上传的文件在web目录内

这次遇到的满足上面的条件。因此上传包含下面内容的脚本,并且在删除掉文件前访问到这个文件就可以生成另外一个shell脚本。

<?php fputs(fopen("xxx.php", "w"), '<?php eval($_POST[eeeeeeee]);?>'); ?>

花费了n多分钟,写了一个简单的脚本,用来实现这个过程。看到sucess的时候,就知道脚本已经成功的上传了。

自动草稿

成功的拿到了shell,后面就是提权了,到这里也差不多就可以交差了。

自动草稿

总结

这次的测试主要就是利用任意文件读取+条件竞争得到shell,都是一些比较基本的操作。测试过程中一定要有耐心,如果没有耐心可能测试上传发现都是到OSS的,可能就会直接放弃了。

作者:Notadmin, 转自FreeBuf.COM

黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!

如侵权请私聊我们删文


END

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容