10.1 注入操作系统命令
如果硬要程序向操作系统命令传送用户提交的输入,那么就很可能会受到命令注入攻击。
10.1.1 危险函数
- PHP:exec,eval
- ASP:wscript
- 反引号:``
10.1.2 查找OS命令注入
- 应用程序调用外部进程或访问文件系统等功能
10.1.3 防止OS命令注入
- 完全避免直接调用操作系统命令
- 使用“白名单”限制用户输入
- 拒绝包含任何其他数据的输入
- 应使用命令API,而非直接向shell解释器传输命令支付串
10.2 操作文件路径
10.2.1 路径遍历漏洞
1.查找和利用路径遍历漏洞
- 确定攻击目标(用于文件上传或下载的功能)
- 探查路径遍历漏洞
- 避开攻击障碍
- 处理定制编码
- 利用遍历漏洞
2.防止路径遍历漏洞
- 对用户提交的文件名进行相关解码和规范化之后,检查该文件是否包含路径遍历或空字节
- 使用硬编码的、允许访问的文件类型列表,拒绝任何访问其他文件类型的请求
- 对用户提交的文件名进行一切必要的过滤后,使用适当的 文件系统API确认是否一切正常
10.2.2 文件包含漏洞
- 远程文件包含
- 本地文件包含
- 查找文件包含漏洞
10.3 注入XML解释器
10.3.1 注入XML外部实体
10.3.2 注入SOAP
10.3.3 查找并利用SOAP注入
10.3.4 防止SOAP注入
- 对XML元字符进行HTML编码
10.4 注入后端HTTP请求
HTTP重定向:攻击者可通过这种方法指定任意资源或URL,然后再由后端应用程序服务器请求这些资源或URL
HPI:攻击者可以通过这种方法在应用程序服务器提出的后端HTTP请求中注入任意参数
HPP:如果攻击者注入后端请求中已存在的参数,就可以利用HTTP参数污染(HPP)攻击覆盖服务器指定的原始参考值
10.4.1 服务器端HTTP重定向
- 可用于攻击互联网上的第三方系统
- 用于连接到组织内部网络中的任意主机
- 用于反向连接在应用程序服务器本身上运行的其他服务
- 通过是应用程序在响应中包含受控的内容,利用代理功能实施XSS攻击
10.4.2 HTTP参数注入
- HTTP参数污染
- 攻击URL转换