2.bWAPP OS Command Injection(Blind)&PHP Code Injection 系统命令执行
字数 1301 2025-08-24 16:48:07

Web安全漏洞详解:命令注入、LDAP注入、邮件头注入与SSI注入

1. OS Command Injection (操作系统命令注入)

1.1 基本概念

操作系统命令注入是一种攻击技术,攻击者能够在应用程序中注入并执行操作系统命令,通常通过Web应用程序的输入字段实现。

1.2 漏洞示例

低级防护示例

漏洞URL: http://range.anhunsec.cn:82/commandi.php
Payload: www.nsa.gov;whoami
原理: 在DNS查询之后再执行dir命令

中级防护示例

查看源码发现commandi_check_1函数替换了&和;,但仍可使用|
Payload: www.nsa.gov | whoami

高级防护示例

使用escapeshellcmd()函数跳过字符串中的特殊符号,防止恶意用户破解服务器系统

1.3 盲注(Blind)变种

漏洞URL: http://range.anhunsec.cn:82/commandi_blind.php
特点: 注入后没有返回信息,需根据反应时间判断命令是否成功执行
Payload示例: 127.0.0.1 || whoami `sleep 5`

2. LDAP Injection (LDAP注入)

2.1 基本概念

LDAP (Lightweight Directory Access Protocol)是轻量级目录访问协议,用于访问目录信息。许多企业使用LDAP存储部门信息、成员信息等结构化数据。

2.2 攻击原理

当网站提供LDAP查询接口且未对输入严格过滤时,攻击者可以构造特殊查询语句,导致非预期的目录信息泄露或修改。

3. Mail Header Injection (SMTP头注入)

3.1 基本概念

网站通常使用联系表单发送电子邮件,这些表单会设置SMTP头(From, Reply-to等)。如果未验证用户输入就直接插入SMTP头,可能导致SMTP头注入。

3.2 攻击原理

攻击者可以注入额外的SMTP头,使SMTP服务器执行与预期不同的指令,例如将邮件转发给攻击者或修改邮件内容。

4. PHP Code Injection (PHP代码注入)

4.1 漏洞示例

漏洞URL: http://range.anhunsec.cn:82/phpi.php
低级防护Payload: ?message=phpinfo();
中高级防护: 使用htmlspecialchars()函数防止注入

5. Server-Side Includes (SSI) Injection (服务器端包含注入)

5.1 基本概念

SSI (Server Side Includes)是用于向HTML页面提供动态内容的指令,类似于CGI但更轻量。它允许在页面加载前或可视化时执行操作。

5.2 攻击原理

攻击者可以通过注入SSI指令来执行任意代码或脚本。常见于.stm、.shtm和.shtml文件,但缺少这些文件类型不意味着不存在SSI漏洞。

5.3 防护等级分析

低级防护
无任何防护措施,可直接注入XSS或SSI指令

中级防护

function xss_check_4($data){
    return addslashes($data); // 在特殊字符前加反斜线
}

高级防护

function xss_check_3($data, $encoding = "UTF-8"){
    return htmlspecialchars($data, ENT_QUOTES, $encoding); // 将特殊字符转换为HTML实体
}

6. 防护措施总结

  1. 输入验证:对所有用户输入进行严格验证
  2. 输出编码:使用htmlspecialchars()等函数对输出进行编码
  3. 最小权限原则:运行Web服务的用户应具有最小必要权限
  4. 使用安全函数
    • escapeshellcmd() - 转义shell命令中的特殊字符
    • htmlspecialchars() - 转换特殊字符为HTML实体
  5. 禁用危险功能:如非必要,禁用SSI等可能带来风险的功能
  6. 安全配置:Apache/IIS等服务器应进行安全配置

7. 漏洞利用检测方法

  1. 命令注入:尝试注入;、|、&等命令分隔符
  2. 盲注检测:使用sleep等延时命令判断是否存在漏洞
  3. LDAP注入:尝试注入特殊LDAP查询字符
  4. SMTP头注入:尝试注入换行符和额外邮件头
  5. SSI注入:尝试注入等SSI指令

通过理解这些漏洞原理和防护措施,开发人员可以构建更安全的Web应用程序,安全研究人员也能更有效地识别和报告这些安全问题。

Web安全漏洞详解:命令注入、LDAP注入、邮件头注入与SSI注入 1. OS Command Injection (操作系统命令注入) 1.1 基本概念 操作系统命令注入是一种攻击技术,攻击者能够在应用程序中注入并执行操作系统命令,通常通过Web应用程序的输入字段实现。 1.2 漏洞示例 低级防护示例 : 中级防护示例 : 高级防护示例 : 1.3 盲注(Blind)变种 2. LDAP Injection (LDAP注入) 2.1 基本概念 LDAP (Lightweight Directory Access Protocol)是轻量级目录访问协议,用于访问目录信息。许多企业使用LDAP存储部门信息、成员信息等结构化数据。 2.2 攻击原理 当网站提供LDAP查询接口且未对输入严格过滤时,攻击者可以构造特殊查询语句,导致非预期的目录信息泄露或修改。 3. Mail Header Injection (SMTP头注入) 3.1 基本概念 网站通常使用联系表单发送电子邮件,这些表单会设置SMTP头(From, Reply-to等)。如果未验证用户输入就直接插入SMTP头,可能导致SMTP头注入。 3.2 攻击原理 攻击者可以注入额外的SMTP头,使SMTP服务器执行与预期不同的指令,例如将邮件转发给攻击者或修改邮件内容。 4. PHP Code Injection (PHP代码注入) 4.1 漏洞示例 5. Server-Side Includes (SSI) Injection (服务器端包含注入) 5.1 基本概念 SSI (Server Side Includes)是用于向HTML页面提供动态内容的指令,类似于CGI但更轻量。它允许在页面加载前或可视化时执行操作。 5.2 攻击原理 攻击者可以通过注入SSI指令来执行任意代码或脚本。常见于.stm、.shtm和.shtml文件,但缺少这些文件类型不意味着不存在SSI漏洞。 5.3 防护等级分析 低级防护 : 无任何防护措施,可直接注入XSS或SSI指令 中级防护 : 高级防护 : 6. 防护措施总结 输入验证 :对所有用户输入进行严格验证 输出编码 :使用htmlspecialchars()等函数对输出进行编码 最小权限原则 :运行Web服务的用户应具有最小必要权限 使用安全函数 : escapeshellcmd() - 转义shell命令中的特殊字符 htmlspecialchars() - 转换特殊字符为HTML实体 禁用危险功能 :如非必要,禁用SSI等可能带来风险的功能 安全配置 :Apache/IIS等服务器应进行安全配置 7. 漏洞利用检测方法 命令注入 :尝试注入;、|、&等命令分隔符 盲注检测 :使用sleep等延时命令判断是否存在漏洞 LDAP注入 :尝试注入特殊LDAP查询字符 SMTP头注入 :尝试注入换行符和额外邮件头 SSI注入 :尝试注入 等SSI指令 通过理解这些漏洞原理和防护措施,开发人员可以构建更安全的Web应用程序,安全研究人员也能更有效地识别和报告这些安全问题。