首页
/ Fenjing实战手记:从漏洞发现到权限获取的渗透测试指南

Fenjing实战手记:从漏洞发现到权限获取的渗透测试指南

2026-04-29 11:56:59作者:邬祺芯Juliet

作为一名安全研究者,我经常需要面对各种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应用的安全风险。其主要优势包括:

  1. 智能WAF绕过:Fenjing内置了多种WAF绕过策略,能够根据目标WAF的特性自动调整 payload,提高漏洞利用的成功率。

  2. 全面的漏洞检测:不仅能够检测简单的SSTI漏洞,还能发现一些隐藏较深、难以察觉的漏洞点。

  3. 可视化操作界面:提供了直观的WebUI界面,使得操作更加简单方便,即使是零基础的安全新手也能快速上手。

  4. 灵活的定制化配置:支持多种参数配置,能够根据不同的测试场景进行灵活调整,满足各种复杂的测试需求。

实践篇: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 WebUI界面,展示了目标链接、请求方式、表单输入等配置选项,是进行漏洞检测和利用的主要操作平台。

实战案例:使用Fenjing进行漏洞扫描与利用

场景一:网站漏洞扫描

在进行安全审计时,首先需要对目标网站进行全面的漏洞扫描,以发现潜在的安全风险。

【操作指令】

# 使用Fenjing进行网站扫描
fenjing scan --url http://example.com --detect-mode accurate

【参数说明】

  • --url:指定目标网站的URL。
  • --detect-mode:设置检测模式,accurate 表示精准模式,全面检测,成功率更高;fast 表示快速模式,适合初步测试。

【预期结果】 Fenjing将对目标网站进行全面扫描,自动识别表单参数和API接口,发现潜在的SSTI漏洞。

Fenjing扫描命令执行示例

图: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漏洞可以采取以下措施:

  1. 输入验证与过滤:对用户输入进行严格的验证和过滤,禁止使用危险的模板语法。

  2. 使用安全的模板引擎:选择安全性较高的模板引擎,并及时更新到最新版本。

  3. 限制模板渲染权限:限制模板渲染过程中的系统调用和文件访问权限,降低漏洞利用的风险。

  4. 部署WAF防护:使用具有SSTI漏洞检测能力的WAF,对可疑请求进行拦截。

  5. 安全审计与代码审查:定期进行安全审计和代码审查,及时发现和修复潜在的漏洞。

[!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应用的安全性。

希望本文能够为安全领域的新手和进阶用户提供有价值的参考,让我们一起在安全研究的道路上不断探索和进步。

登录后查看全文
热门项目推荐
相关项目推荐