首先我们先对目标靶机进行一个目录扫描
因为我们已经知道了目标靶机的ip,所以我们略过。
先进行目录扫描,目录扫描结果如下:

其中我们可以明显看到有一个名叫.index.php.swp的目录。
这个目录是vim软件编辑留下的遗留文件。
但是我们可以先选择对该目标机的80端口进行查看,发现目标端口是个登录页面

于是在这里的时候我们也可以看到下面还有一个商品界面,这里我们可以选择使用布尔盲注,但是我们这里测试了一下
'admin --
密码随意地随便输入什么,就可以进入到里面的文件上传界面了


这里我们就可以进行一个文件上传了。
在这里我们可以上传一个.htaccess的文件,这个htaccess文件的最大作用就是可以把其他文件格式交给php处理器执行,我们就可以成功的通过只有txt和jpg这种格式的上传通道。
然后我们的文件内容如下

在我们上传之后,我们可以再进行上传一个木马文件,我把他的名字直接取名为木马,内容如图

于是我们可以直接去web端口进行执行,执行了之后就像是如图一样,可以对我们输入的命令进行回显


就会上图所示了。
然后到达了这里之后我们可以对我们可以谈差的区域进行一番寻找,我们能看到一个很有意思的文件。
就是env,环境文件。
并且在环境文件中有很有意思的东西,就是mysql的用户以及密码

在我们拿到用户以及密码之后,我们就可以登录上去尝试一下看看进入数据库之后是什么样的。

但是在这里我们不能用ssl连接上去,我们必须跳过ssl,就是上图中的skipssl。
并且我们从中可以到处寻找的时候可以看到一个user的分类,我们只要进去了,就能看到一个名为admin的用户,而且他的密码就是我们寻找的flag1

我们便拿到了flag1.
那么接下来我们要寻找flag2
在flag 2的寻找过程就比flag1要困难许多,因为要活的flag2我们需要进行提权,提权的思路我们想的是给共享库添加函数,eval函数我们将之写入到数据库里面去,然后使用system执行系统命令。
我们在这里需要16进制文件并且我们需要,CREATE FUNCTION 注册
操作过程可以说是
mysql -h 192.168.104.104 -u root -p'Kp7mXz2wRn9sLqDf' --skip-ssl \
-e "DROP FUNCTION IF EXISTS sys_exec; DROP FUNCTION IF EXISTS sys_eval;"
我们先对原本的老函数进行清理
xxd -p /tmp/lib_mysqludf_sys_64.so | tr -d '\n' > /tmp/udf64_hex.txt
UDF_HEX=$(cat /tmp/udf64_hex.txt)
然后执行这个指令来转化为16进制
随后我们需要把udf64写入到mysql里
mysql -h 172.16.11.28 -u root -p'Kp7mXz2wRn9sLqDf' --skip-ssl \
-e "SELECT UNHEX('$UDF_HEX') INTO DUMPFILE '/usr/lib64/mysql/plugin/udf_final.so';"
最后在进行注册函数。

我们就可以发现执行成功。
在执行成功之后我们就可以去查看flag,然后就发现了其中的flag2

拿到2了之后,我们便是向3进攻
3的话我们可以用mysql代理出来

在其中我们也可以通过这个方式去查看到flag2

然后我们可以使用一个脚本,用这个脚本创建一个新容器,把宿主机的根目录 / 挂载到新容器的 /host
然后再另一台新的卡里中开上监听
就会收到原本机器的root权限的shell了,我们就能直接对flag3进行查看了



Comments | NOTHING