记一次某HR管理系统漏洞挖掘

记一次某HR管理系统漏洞挖掘

原创 mkbk 小黑说安全 2024-06-05 18:22

0x01 前言

某次审计过程记录,也是比较常见的一个系统,懂得都懂。

0x02 分析与利用

权限绕过:

通过关键字关联到过滤器。

通过之前黑哥文章中提到的jar包定位工具,定位存在于哪个jar包,这里也贴一下代码吧。

import os
import zipfile
import sys

# 确保有足够的命令行参数传入
if len(sys.argv) < 3:
    print("Usage: python tqu.py <directory_to_search> <text_to_search>")
    sys.exit(1)

# 第一个命令行参数是要搜索的目录
directory_to_search = sys.argv[1]
# 第二个命令行参数是要搜索的文本
text_to_search = sys.argv[2]

# 遍历目录
for foldername, subfolders, filenames in os.walk(directory_to_search):
    for filename in filenames:
        if filename.endswith('.jar'):
            # 构造完整的文件路径
            full_path = os.path.join(foldername, filename)
            try:
                # 打开JAR文件
                with zipfile.ZipFile(full_path, 'r') as jarfile:
                    # 遍历JAR文件内的每个文件
                    for name in jarfile.namelist():
                        # 打开JAR文件内的文件
                        with jarfile.open(name) as file:
                            if text_to_search.encode() in file.read():
                                print(f"Found '{text_to_search}' in {full_path}")
                                break  # 找到文本后跳出循环
            except zipfile.BadZipFile:
                print(f"Bad zip file: {full_path}")

这里
请看图
注释

满足框选中的
任一
路径

../即可,使其为false。

满足框选中的
任一
路径

../即可,使其取反后为false。

文件上传:

一样搜索上传相关关键字。

在进入大if之前,这里需要满足
safariORFo
xType不为空,

容加密后大于8且为true
,以及时间不
为空且
d
atams参数
的内容
要满足

当前时间后
<
=120000L。

这里进来第一眼看到一个绝对路径的文件删除。

构造请求包复现,成功删除。

继续往下按走当down不为true时,会走进下面大else进入上传逻辑。

new file相关参数,以及上传内容以及后缀均可控。

但有个问题,是需要绝对路径写入的,但这里恰好就泄露了网站路径。

构造请求包复现,成功上传。

0x03 小密圈‍‍‍‍‍‍‍‍

最后送你一张优惠券,欢迎加入小密圈,好朋友。