红队打靶:holynix打靶流程-文件包含-文件上传-修改伪设备提权(vulnhub)

目录

开头

1.主机发现和端口扫描

 2.80端口-万能密码-文件泄露

sql注入万能密码

文件泄露-读取/etc/passwd文件

sqlmap POST注入| SQL注入实现越权 | 水平越权

最后构造的sql语句,为什么这么构造嘞?

3.文件上传、文件解析漏洞利用

浏览器怎么访问家目录啊?

4.提权-修改伪设备提权

总结:


开头

学习的视频是哔哩哔哩红队笔记:

「红队笔记」靶机精讲:Holynix - 巧用SQL注入,不用大杀器;手动拦截,让Burp Suite下岗。_哔哩哔哩_bilibili

打靶时参考文章和本文借鉴文章:

红队打靶:holynix打靶思路详解(vulnhub)-CSDN博客

靶机下载链接见:

Holynix: v1 ~ VulnHub

下载成功后用vmware打开,跳出提示框请选择“我已移动该虚拟机”,然后设置为NAT模式,否则无法扫描到靶机!

1.主机发现和端口扫描

Sudo nmap -sn 10.10.10.0/24、
nmap -min-rate 10000 -p- 10.10.10.130
sudo nmap -sT -sV -O -p80 10.10.10.130
sudo nmap -sU -min-rate 10000 -p- 10.10.10.130  
sudo nmap --script=vuln -p80 10.10.10.130

 nmap搜索的信息:

1.开放端口:80;

2.nmap脚本扫描发现存在sql注入,CSRF,和一些目录文件;其中CSRF利用复杂我们不考虑,优先观察sql注入和目录文件。

 2.80端口-万能密码-文件泄露

sql注入万能密码

80端口根据web的样式分析,这不是一个CMS,给出提示只有登录后才能解锁更多的功能。在加上nmap脚本扫描存在sql注入,尝试登录窗口万能密码:

' or 1=1 #

登录成功alamo用户,接下来加上浏览功能,找可利用点。 在此之前把目录扫描做起:

dirb http://10.10.10.130/

 

浏览web时发现:

一个文件上传点,web是由php开发的,尝试上传PHPshell

万能密码登录的用户是alamo 上传文件报错说我们禁用上传主目录,当前用户的权限不够(思路:1.垂直提权,2.获取其他用户的账号密码,再来测试上传点)

 在员工列表可以看到我们登录的是软件开发的账号。

留言页有很多信息:

存在备份文件,定时任务 ,还要ssh登录需要knockknock 信息量这么大,但是这些文字信息感觉对我们帮助不是很大(但是我还是在这里浪费了很多时间,在打靶场过程,这些文字可能是提示也有可能是兔子洞,我们应该快速分析,将其信息收集起来,当把测试简单的点测试完成都没有思路后再回过头来分析,应该要多简单测试功能的接口

 

 尝试文件包含:

报错

文件泄露-读取/etc/passwd文件

发现在安全页存在选择文件类型,并显示的功能,看一下源码

可以看到它是根据后面文件进行显示的

因为这个路径是写在前端的,所有我们可以更改路径,看看它是否能包含其他路径

成功包含/etc/passwd

存在很多拥有bash的用户 

可以看到用户bash权限的用户中和员工列表中的员工想对应。

Etenenbaum用户是安全部门的,会不会有文件上传权限嘞?

尝试包含shadow文件,权限不够

拿我们怎么获得Etenenbaum密码嘞,只能通过sql注入了

sqlmap POST注入| SQL注入实现越权 | 水平越权

1.sqlmap POST注入

因为登录窗口存在SQL注入,抓取登录注册的包

Python.exe sqlmap.py -r post.txt

python.exe sqlmap.py -r post.txt  --dump -dbs –batch

一条命令直接把能获取的数据和数据库名列出来 

发现账号密码,其中etenebaum也有,获得了大量账号密码其中有点用户还拥有bash权限的,正常情况,都可以直接尝试ssh登录了,但是该靶机没有开发ssh.

 尝试登录etenenbaum用户

登录成功

2.SQL注入实现越权

在测试登录窗口是否存在注入点时报错,显示了sql语句,其中可以看出来username 是没有注入点的,输入’ 通过/ 转移 /'还是表示’但是没有起到闭合‘左右,password参数存在注入点’导致前两个‘闭合,单独最后一个‘报错,也可以通过,username和password分别 测试’

在usename 添加‘ password输入正常数字,没有报错,而且提示用户名密码错误

在usename输入正常数字 password添加‘,报错回显,这样也可以到走注入点出现在password.

通过报错回显的sql,我们尝试构造payload登录etenenbaum

SELECT * FROM accounts WHERE username='1' AND password='''
最后构造的sql语句,为什么这么构造嘞?

因为我们可以通过万能密码来分析 ‘ or 1=1 #  and并列的两个都是假(0),所有前面不执行,就只会看我们拼接or后面的,or 1=1 # or后面是一个永真判断,没有给出具体的筛选条件,所有查询了数据库中的第一条数据,登录第一条数据的用户;再看我们构造的payload,or前面输入的账号密码,数据库中都不存在,那么前面为假的不会执行,就会只看or后面的 username="etenenbaum",数据库中存在该用户为真, 密码被# 注释,所有相当于不要密码了,sql语句相当于简化为 SELECT * FROM accounts WHERE  username ='etenenbaum'

SELECT * FROM accounts WHERE username='1' AND password='1'or username ='etenenbaum'#'

登录成功 

3.Cookie水平越权

水平越权通过看数据包中cookie信息。有没有对身份的限制的参数 

alamo用户的cookie uid =1,尝试修改大小,变成其他人的权限

修改成2,刷新,登录用户变成了etenenbaum。

成功登录etenenbaum尝试上传php反弹shell文件。

3.文件上传、文件解析漏洞利用

尝试上传点是否能够上传

上传成功,但并不知道上传的位置,看看目录爆破有没有列出来

存在upload目录(访问为空) 

通过查看源码可以看到文件上传最后去的transfer.php文件,可以通过刚刚的文件泄露漏洞查看源码(如果是文件包含楼,也可以使用伪协议查看源码)看看上传文件的保存路径。

在此之前,gzip是个什么东西嘞?不懂就问GPT

哦哦,开启了这个选项,就会制动解压压缩包文件,并保存在用户家目录。那根据这个意思,上传phpshell在etenenbaum家目录里。

浏览器怎么访问家目录啊?
http://10.10.10.130/~etenenbaum/ 

是一个典型的网络地址格式,其中 10.10.10.130 是一个 IP 地址,~etenenbaum 则可能表示一个用户的家目录。在某些 Web 服务器配置中,使用 ~用户名 的方式可以直接访问该用户的家目录。

 进入etenenbaum的家目录但是我们payload.php.gz并没有自动解压啊,但是我们之前上传的payload.php还在

访问payload.php报错了,可能该靶场限制了只要通过自动解压的shell才能访问。

此时可以尝试继续越权寻找权限更高的账号。但根据红队笔记大佬的思路提示,刚刚上传的gz文件理应解压自动解压才对,因为Enable the automatic extraction of gzip archives.的意思是自动从gzip压缩文件中提取出源文件。然而实际情况我们在http://10.10.10.131/~etenenbaum/路径下却并没有看到gz文件被解压缩,这有点奇怪。我们尝试文件包含,上传文件脚本,查看源代码是如何些的

 

包含成功,能直接显示脚本文件,如果是文件包含漏洞是无法显示脚本文件的,或者这是靶场作者为了方便给出了的。

 压缩包转换的背后逻辑是用tar xzf解压,那么我们可以用tar czf打包文件,再进行上传:

tar czf shell.tar.gz php-reverse-shell.php 

然后我们上传这个shell.tar.gz文件试试,看看后台能否自动提取其中的文件:

尝试反弹shell

反弹成功。

4.提权-修改伪设备提权

python提高交互性:

 python -c "import pty;pty.spawn('/bin/bash')"

查看当前权限:

sudo -l

 可以看到当前用户有不使用root密码,就能root权限执行这些命令,其中mv命令能够为我们提权(mv可以给文件改名的特点,我们只要选择chown chgrp tar三个指令中的任意一个(这里以tar为例)改名为其他名字(tar.orgi),然后再把用于提权的su命令改名为这三个中的一个(tar),然后运行sudo 指令(sudo tar)即可提权:)

sudo mv /bin/tar /bin/tar.orgi
sudo mv /bin/su /bin/tar
sudo tar

 提权成功

 

总结:

这篇靶场存在很多漏洞,有的漏洞发现简单利用也简单,但是有的漏洞就需要根据功能点分析,测试是否存在漏洞,也给了我很多思路,在面对一个web时,任何功能点都有可能会是漏洞点,都应该对功能分析可能出现的漏洞,做简单的测试; 靶场总结:

1.主机发现&端口扫描:发现存活端口80;

2.80端口测试:登录窗口存在sql注入万能密码登录,登录成功获得更多功能点,发现文件上传,用户权限不够,在安全页面发现存在文件包含漏洞,包含/etc/passwd文件,发现除了,万能密码登录用户还存在其他用户,sql注入登录其他用户,达成切换用户(cookie水平越权);登录了etenenbaum用户,可以上传文件,勾线自动解压,上传压缩包shell,访问etenenbaum家目录反弹shell

3.提权:sudo -l查看权限,发现有mv指令的免密sudo权限,因此可以通过mv将提权指令su更名为其他任意的有sudo权限的指令即可。sudo运行su更名后的指令即可提权。

通过该靶场我学习到:

1.在面对一个web时,任何功能点都有可能会是漏洞点,都应该对功能分析可能出现的漏洞,做简单的测试;

2.文字信息,不要太过于关注,先对功能点测试完,再返回分析;

3.浏览器访问家目录~用户(服务器开启权限即可);

4.gzip自动提取-自动解压上传文件到用户家目录去;

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

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

相关文章

C语言指针—指针和指针类型

指针是什么? 指针是什么? 指针理解的2个要点: 指针是内存中一个最小单元的编号,也就是地址 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量 总结:指针就是地址,口…

Windows深度学习环境----Cuda version 10.2 pytorch3d version 0.3.0

Requirements Python version 3.8.5Pytorch version: pytorch1.6.0 torchvision0.8.2 torchaudio0.7.0 cudatoolkit10.2.89pytorch3d version 0.3.0Cuda version 10.2 感觉readme文件里的不适配,跟pytorch官网不同 以前的 PyTorch 版本 |PyTorch的 # CUDA 10.2 c…

充电桩项目,开源啦!

好,我是田哥 很多人,最近都在关注我的充电桩项目,之前建了一个微服务架构的项目,也有单体项目的代码开源。 今天,我把最新版微服务架构的充电桩项目源代码开源。 充电桩的输入端与交流电网直接连接,输出端都…

WindowServer2019远程桌面无法连接问题及处理方法

WindowServer2019远程桌面无法连接问题及处理方法 文章目录 WindowServer2019远程桌面无法连接问题及处理方法1. 问题描述1. 连接问题2. 原因分析 2. 解决方法1. 零时解决方法2. 永久解决方法1. 打开注册表编辑器2. GracePeriod的权限权限设置3. 删除REG_BINARY4. 重启 1. 问题…

VMware配置环境(安装运行问题)及系列dns端口网络类型IP远程连接学习之(详谈8000字)

安装vmware快速配置步骤 下载VMware安装包 在下载好VMware安装包之后双击运行 接受条款 关闭VMware自动更新 勾选快捷键方式 安装VMware安装 输入许可证(有需要私信小编) 安装完成 重启电脑即可 最终成功界面: 安装Linux系统 创建虚拟机 选择…

基于springboot+vue+Mysql的滴答拍摄影项目

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

Windows远程执行

Windows远程执行 前言 1、在办公环境中,利用系统本身的远程服务进行远程代码执行甚至内网穿透横向移动的安全事件是非常可怕的,因此系统本身的一些远程服务在没有必要的情况下建议关闭,防止意外发生; 2、作为安全人员&#xff0…

easyexcel处理复杂表头

需求&#xff0c;模板如下 功能如下 开始整活&#xff0c;依赖包。 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.2.1</version> </dependency>下载导入模板 1.方法 GetMapping…

【Vue】我的第一个组件

文章目录 项目简介 项目简介 项目根目录中的index.html是项目的入口文件 加载index.html&#xff0c;vite解析。指向的src下的ts文件或者js文件 最后通过vue3的createApp函数创建一个应用&#xff0c;并挂载到指定div下 App.vue结构说明 特别注意:script脚本内&#xff0…

基于单片机四路温度报警系统仿真设计

**单片机设计介绍&#xff0c; 基于单片机四路温度报警系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机四路温度报警系统仿真设计概要主要涉及一个使用单片机作为核心控制器的温度监控系统&#xff0c;该系…

【canvas】canvas的基础使用(一):创建canvas

canvas Canvas API 提供了一个通过JavaScript 和 HTML的<canvas>元素来绘制图形的方式。它可以用于动画、游戏画面、数据可视化、图片编辑以及实时视频处理等方面。 Canvas API 主要聚焦于 2D 图形。 canvas元素 <canvas> 元素可被用来通过 JavaScript&#xff…

C++ 圆周率的几种求解方法

公众号&#xff1a;编程驿站 圆周率的常见几种求解算法&#xff0c;包括但不仅仅包含特卡洛模拟、割圆法和公式法。本文讲解这几种算法的实现流程。 1. 蒙特卡洛模拟算法 假设有一个半径为1的圆&#xff0c;如图所示。先绘制一个半径为1的圆。则图中阴影部分&#xff08;1/4…

STM32 F401/411外设内部互联矩阵摘要

STM32 F401/411外设内部互联矩阵摘要 &#x1f4cd;参考文档AN4646&#xff1a;https://www.stmcu.com.cn/Designresource/detail/localization_document/709908(中译) -&#x1f4cc; 相关工程案例《HAL STM32主从定时器联级使用》、《STM32G4 TIM1触发ADC转换》 &#x1f4d…

24考研-东南大学916经验贴

文章目录 一、个人情况二、初试备考经验1.政治 67&#xff0c;客观382.英语 60&#xff0c;客观大概40左右3.数学 136&#xff0c;客观应该满分4.专业课 数据结构计网 114小分不清楚 三、复试备考经验笔试&#xff1a;C面试复试流程 附一下成绩单&#xff1a; 一、个人情况 本…

【利器篇】前端40+精选VSCode插件,总有几个你未拥有!

前言 姊妹篇&#xff1a; 【利器篇】35精选chrome插件&#xff0c;含15前端插件&#xff0c;总有一款值得你停留 关于关于 【前端工具系列】&#xff1a; 有句话&#xff0c;事半功倍&#xff0c;其必然是借助了某些思想和工具。 VSCode是我们前端开发的武器&#xff0c;本文…

嵌入式Linux系统调用执行基本流程

内核态与用户态 什么是系统调用 系统调用是怎么实现的 库函数write 库函数扩展汇编宏 int 0x80中断 调用对应的中断处理函数 检索系统调用函数表 最终执行sys_write 内核态与用户态数据交互 内核态与用户态 早期工程师们在操作系统上编写程序的时候,自己写个程序可以访问别人…

创建型模式--2.简单工厂模式【人造恶魔果实工厂1】

1. 工厂模式的特点 在海贼王中&#xff0c;作为原王下七武海之一的多弗朗明哥&#xff0c;可以说是新世界最大的流氓头子&#xff0c;拥有无上的权利和无尽的财富。他既是德雷斯罗萨国王又是地下世界的中介&#xff0c;控制着世界各地的诸多产业&#xff0c;人造恶魔果实工厂就…

windows10系统下TP-LINK万兆网卡属性配置高级说明

文章目录 打开配置属性说明ARP Offload&#xff1a;ARP地址解析协议卸载Downshift retries:降档重试次数Energy-Efficient Ethernet:高能效以太网Flow Control:流量控制Interrupt Moderation:中断调整Interrupt Moderation Rate:中断调节率IPv4 Checksum Offload:IPv4校验和卸载…

2024/4/2—力扣—连续数列

代码实现&#xff1a; 思路&#xff1a;最大子数组和 解法一&#xff1a;动态规划 #define max(a, b) ((a) > (b) ? (a) : (b))int maxSubArray(int* nums, int numsSize) {if (numsSize 0) { // 特殊情况return 0;}int dp[numsSize];dp[0] nums[0];int result dp[0];fo…

three.js零基础入门超全超细的教程整理(一)

事情是这样的&#xff1a; 有一天 我干完活 看技术文章 发现了three.js 诶&#xff01;这玩应挺有意思 盘盘 于是第一天找教程 上官网 初上手 第二天 找案例 渲模型 试VR 第三天 捋文档 然后来活了 没时间捋了 下面是集百家精华教程的整理总结 涉及到教程方面有加源作者和地址…