红队打靶: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,一经查实,立即删除!

相关文章

你不知道的10个光伏冷知识!

对于光伏发电许多人都不是很了解,今天小编整理了10个光伏方面的冷知识分享。 1.光伏是如何诞生的? 1839年,19岁的法国贝克勒尔做物理实验时,发现在导电液中的两种金属电极用光照射时电流会加强,从而发现了“光生伏打…

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

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

Flutter 单例模式的多种实现方法与使用场景分析

单例模式是一种常用的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。在Flutter应用程序中,单例模式可以有效地管理全局状态、资源共享和对象的生命周期。本文将介绍Flutter中实现单例模式的多种方法,并分析它们的使…

【leetcode面试经典150题】19.最后一个单词的长度(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

loopvar 改动不同版本的影响-defer,closures

defer示例代码 package mainimport ("fmt""runtime" )func main() {fmt.Println("golang version:", runtime.Version())defer_demo() }func defer_demo() {defer println()for counter, n : 0, 0; n < 3; n {defer func(v int) {fmt.Print(…

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文件里的不适配&#xff0c;跟pytorch官网不同 以前的 PyTorch 版本 |PyTorch的 # CUDA 10.2 c…

2024-04-08 问AI: 介绍一下AI 大神 吴恩达

文心一言 吴恩达&#xff08;Andrew Ng&#xff09;是AI领域的一位重要人物&#xff0c;他的贡献和影响力在学术界、工业界以及在线教育领域都极为显著。 吴恩达出生于1976年&#xff0c;是一位华裔美国人&#xff0c;他在斯坦福大学担任计算机科学系和电子工程系的副教授&am…

充电桩项目,开源啦!

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

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安装 输入许可证&#xff08;有需要私信小编&#xff09; 安装完成 重启电脑即可 最终成功界面: 安装Linux系统 创建虚拟机 选择…

【代码随想录】【贪心算法】day36:无重叠子区间,划分字母区间,合并区间

class Solution(object):def eraseOverlapIntervals(self, intervals):""":type intervals: List[List[int]]:rtype: int"""intervals.sort(keylambda x:x[0])count0# 可以记录重叠子区间的个数&#xff0c;然后让整个数组的长度减去重叠的个数#…

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

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

Windows远程执行

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

学会了一门编程语言,如何1天入手其它编程语言?

1 语言之间都是相通的&#xff0c;核心在于计算机四大件和项目逻辑&#xff1a; 1.1 计算机专业四大件&#xff1a; 数据结构和算法、操作系统、计算机网络、计算机组成原理。 计算机组成原理、操作系统、数据结构和计算机网络融会贯通_操作系统&#xff0c;计算机网络&#…

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;该系…

新型基础设施建设(新基建)

新型基础设施建设&#xff08;新基建&#xff09;主要包括七个方面&#xff0c;即5G基站建设、特高压、城际高速铁路和城市轨道交通、新能源汽车充电桩、大数据中心、人工智能和工业互联网。 以下是新型基础设施的详细内容&#xff1a; 一、5G基站建设。5G网络的扩展和优化&a…

【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…