靶机地址:https://www.vulnhub.com/entry/pwnlab-init,158/
靶机难度:中级(CTF)
靶机发布日期:2016年8月1日
靶机描述:欢迎访问PwnLab: init,我的第一个Boot2Root虚拟机。我的意思是简单,我希望你喜欢它,也许学到了一些东西。这个CTF的目的是获取根目录并读取de flag。
目标:得到root权限&找到flag.txt
作者:DXR嗯嗯呐
nmap 扫描靶机地址
nmap扫描端口
80 http
111 rpcbind
3306 mysql
44225 RPC
先访问80端口
试了一下admin用户不行,不知道密码,没办法,dirb扫描看一下
发现upload目录
测试一下http请求方法,看看是否存在put方法,可不可以上传文件
结果不存在。
nikto扫描,发现config.php文件
说config文件中有数据库密码,但是访问什么也没有
我们再看来过来主web界面
根据这种形式的url,判断可能存在LFI漏洞
我们先用最基本的来尝试:
http://192.168.16.144/?page=../../../../../../../../../../../../etc/passwd
发现不行
这里看了前辈经验使用php://filter元封装器尝试(php:// 学习)
http://192.168.16.144/?page=php://filter/read=convert.base64-encode/resource=login
解码,login文件源码
发现之前的config文件中可能真的有数据库账号密码,而且根据login源码提示应该和login文件同级目录
确定了数据库的账号密码
$server = "localhost";
$username = "root";
$password = "H4u%QJ_H99";
$database = "Users";
连接数据库,发现users表中有几个用户
Base64解密
kent/JWzXuBJJNy
mike/SIfdsTEn6I
kane/iSv5Ym2GRo
登陆,有个文件上传,只能上传图片
看一下upload源码
对文件后缀,使用getimagesize检查图片等其他条件,看了一下应该可以使用GIF89A图片头欺骗
msfvenom生成一个php反弹shell
添加GIF89a图片头
上传成功
同时显示了文件的路径
配置msfconsole,监听本地的443端口
访问木马文件,看来没办法执行我们上传的gif文件
我们在看一下index的源码,发现一个$_COOKIE函数
根据上面的意思,意味着我们需要修改cookie,修改为lang=图片的位置,这样index.php就会去包含这个图片,执行其中的反向shell代码。
成功获得shell,看一下没有sudo权限,先去home目录看看,发现四个用户
其中kane和kent用户可以登录,在kane用户下发现了一个具有sid权限的文件,文件拥有者为mike用户
Strings 看一下文件内容
发现cat mike目录下一个文件,他有权限吗???
先执行文件,看看
报错cat不到文件,那我们正好可以找个随便找个目录,做一个骚操作
首先进入/tmp目录,将/bin/bash写入名为cat的文件中,并赋权
echo /bin/bash > cat
在修改环境变量,将环境变量中执行命令查找如下目录/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games,修改为首先查找/tmp目录下
修改前:
执行命令
export PATH=/tmp:$PATH
修改后:
修改之后,执行msgmike文件,这样执行到cat: /home/mike/msg.txt部分,优先在tmp目录查找cat命令,执行名为cat的二进制文件,实际我们在/tmp/cat文件中写入的是/bin/bash,这用等于在mike用户权限下执行了bash,获得了mike用户的shell
在mike目录发现msg2root文件具备sid权限并且文件拥有者为root
老规矩先strings看一下函数,发现fgets()函数
只读取一行?,测试一下
只输出了id,ls命令执行了
这样就很容易了,直接/bin/sh获得root权限
。。。。。。忘记了cat命令让我设置为/bin/bash了。我说的怎么读不出来。因为只是UID和GID为root权限,环境变量还是mike用户的。关于SID、UID、GID的概念我这里就不多介绍了。可兴趣的同学去度娘看看最好,提权经常用到相关概念。
滴滴滴滴,完成!!!