SQL注入
原理
用户在输入中混入SQL命令,改变SQL语句本来的逻辑。防御
- 匹配用户输入(长度,关键字,逻辑逻辑改变)
- 检查语句规范,拦截异常SQL语句
- 记录数据库异常
- 正则表达式算法
SSRF
原理
服务器从其他服务器应用获取数据但没有对目标地址做过滤与限制,攻击者可以伪造服务端发起请求,对服务器进行攻击。(内网)防御
- 输入参数来自用户,且为内网IP,判定为SSRF攻击
- 检查常见探测域名
- 检测私有地址
- 检查混淆(如:改变进制)
- 检查特殊协议
url重定向
- 原理
通过url重定向使用户访问其他网站,常用于钓鱼。
防御同SSRF
文件下载
- 防御
- 用户输入匹配
- 用户输入匹配+http协议
- 拦截异常协议
- 禁止访问项目外文件
- 文件探针
文件写入
- 防御
- 拦截NTFS::$DATA写入操作
- 拦截脚本文件写入操作
- 拦截通过反射、反系列化执行的文件写入操作
文件删除
原理
服务器未对用户输入进行限制,用户可以输入服务器文件路径,服务器对其进行解析后会删除服务器中的文件。防御
- 用户输入匹配,禁止
../等
- 用户输入匹配,禁止
文件重命名
- 防御
- 通过重命名方式获取WebShell
文件管理器(文件目录?)
- 防御
- 用户输入匹配
- 通过反射调用查看目录
- 查看敏感目录
文件包含
原理
利用一些文件包含函数(如include,require等)读取其他文件。利用方式
- 读取服务器文件
- 包含远程文件对服务器进行攻击
防御
- 用户输入匹配
- 检查特殊协议
文件上传
原理
利用服务器对文件上传漏洞或者服务器对文件的解析规则漏洞,用户可以通过向服务器上传攻击性的文件,服务器对其解析后执行文件。常见绕过审核方式
- 改文件后缀名绕过检查
- 上传正常拓展名文件后对数据抓包进行修改
- 在正常文件内容中嵌入攻击语句
- 0x00截断
- 多个filename属性混淆
防御措施
- 通过
COPY/MOVE方式上传脚本 - Multipart方式上传脚本
HTML/JS/DLL/EXE等文件
- 通过
XXE
原理
在DTD中引用外部XML实体构造恶意内容,可以进行读取文件内容或执行恶意命令等一系列攻击行为。防御
- 禁用外部实体加载
- 使用异常协议加载外部实体
- 使用file协议读取内容
- 过滤关键字
<!DOCTYPE,SYSTEM等
命令注入
原理
程序中不安全使用命令执行函数(如:exec,system,passthru,eval等),用户可以用来执行攻击语句。防御
- 通过反射执行命令
- 匹配用户输入
- 识别常用渗透命令(探针)
- 查找语法错误和敏感操作
- 记录或拦截所有命令执行操作
XSS
原理
用户将恶意代码写入网页,可以获取被攻击者在目标网站上的cookie等重要信息。类型
- 反射型
写入攻击代码,一次性攻击。 - 存储型
将攻击代码储存到服务器文件或数据库中,每次重新请求页面时都会执行攻击代码。
- 反射型
防御
- 拦截输出在响应里的反射XSS
- (PHP)禁止直接输出GPC参数
- (PHP)拦截PHP[中国菜刀|命令执行|文件上传|
array_map/walk/filter|LD_PRELOAD]后门