内容简介:这道题目的思路来源于两篇有趣的渗透报告:
这道题目的思路来源于两篇有趣的渗透报告:
AWS takeover through SSRF in JavaScript
An interesting Google vulnerability that got me 3133.7 reward.
第一篇渗透报告里作者通过SSRF请求AWS的 Cloud Instances
获得了大量敏感信息,所以好奇的我也查了一下国内的云服务商有没有这样的接口,发现其实都是有的:
这样我们就可以通过一些仅支持http/https的SSRF获得服务器的一些敏感信息,这也是我这道题目的第一个考点。我们可以通过请求 http://metadata.tencentyun.com/latest/meta-data/mac
获得服务器的mac地址,转换为十进制后就是 uuid.getnode()
的值。
获得了mac地址后我们按照代码里写的用 PUT
请求向 upload/
路由发请求,会发现返回405:
换成GET试试:
同样是405,但是我hint也也提示了留意 差异性 ,其实说的就是这里。我们可以注意到两个405返回的页面是不同的,仔细看可以发现第一个405是nginx返回的,第二个405是flask返回的,也就是说我们的PUT请求实际上是在代理中被拦截了,没有实际发到后端。我们翻翻 flask文档 可以发现这个问题是可以解决的:
所以我们只要添加 X-HTTP-Method-Override: PUT
在GET或者POST的请求头中就可以向后端发送一个PUT请求
此时加上cookie就可以向服务器上写入文件了,注意到代码里
这里会把filename再次url解码,所以我们可以把文件名二次编码,这样就可以跨目录写入文件。
获得任意文件写之后getshell一般有三种:
- 写Webshell。但因为这道题是python web所以无效。
-
写crontab。但这道题给的权限不够。
-
写ssh公钥到
~/.ssh/authorized_keys
。这道题其实就是用这个思路,而且我还很贴心的提示大家用户名是lctf免得大家还需要猜测一下
所以最后写自己的ssh公钥到 /home/lctf/.ssh/authorized_keys
即可:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Rails 5敏捷开发
[美] Sam Ruby、[美] Dave Thomas、[美] David Heinemeier Hansson / 安道、叶炜、大疆Ruby技术团队 / 华中科技大学出版社 / 2017-12-30 / 115.00
本书以讲解“购书网站”案例为主线,逐步介绍Rails的内置功能。全书分为3部分,第一部分介绍Rails的安装、应用程序验证、Rails框架的体系结构,以及Ruby语言知识;第二部分用迭代方式构建应用程序,然后依据敏捷开发模式开展测试,最后用Capistrano完成部署;第三部分补充日常实用的开发知识。本书既有直观的示例,又有深入的分析,同时涵盖了Web开发各方面的知识,堪称一部内容全面而又深入浅出......一起来看看 《Rails 5敏捷开发》 这本书的介绍吧!