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. 防护措施总结
- 输入验证:对所有用户输入进行严格验证
- 输出编码:使用htmlspecialchars()等函数对输出进行编码
- 最小权限原则:运行Web服务的用户应具有最小必要权限
- 使用安全函数:
- escapeshellcmd() - 转义shell命令中的特殊字符
- htmlspecialchars() - 转换特殊字符为HTML实体
- 禁用危险功能:如非必要,禁用SSI等可能带来风险的功能
- 安全配置:Apache/IIS等服务器应进行安全配置
7. 漏洞利用检测方法
- 命令注入:尝试注入;、|、&等命令分隔符
- 盲注检测:使用sleep等延时命令判断是否存在漏洞
- LDAP注入:尝试注入特殊LDAP查询字符
- SMTP头注入:尝试注入换行符和额外邮件头
- SSI注入:尝试注入等SSI指令
通过理解这些漏洞原理和防护措施,开发人员可以构建更安全的Web应用程序,安全研究人员也能更有效地识别和报告这些安全问题。