0x01 前言
这是近期朋友发过来的一个站,快速帮忙过了一遍,内容比较简单。
0x02 分析与利用
访问网站提示以下信息。
搜索关键字获取到代码。
拿到项目简单过了一遍,跑了一遍。
其实这里多个接口都能玩,这里就先看一个InputServlet吧,运行脚本发现在raqsoftReport.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}")
代码很简单,根据action参数的值来判断走哪块逻辑。
这里的上传路径实际只有upFileName可控,经过下方代码拼接之后,
大概是类似"var/cache/tmp_12345_example.txt"的样子。
这里习惯性的测试../,发现可能是被过滤掉了。
然后fuzz了一下,发现当输入"/"的时候居然将路径暴了出来,同时"/"居然被解释成了"\"。
于是尝试使用"..\"跳三次,居然成功了。
最后帮到底吧,上了个马发过去了。
0x03 小密圈
★
原文始发于微信公众号(渗透安全团队):实战 | 某报表系统漏洞挖掘
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论