A. 渗透专题丨web Top10 漏洞简述(1)
web程序中对于用户提交参数没有过滤直接放到SQL语句中执行,打破了SQL语句逻辑,获取信息,执行命令等。
预防手段包括:
- 减少网站显示SQL错误信息,防止黑客获取相关信息。
- 限制用户对于数据库的操作权限。
- 对进入数据库的特殊字符进行转义处理或者编码转换。
- 网站数据层进行编码统一。
- 使用参数化查询接口。
- 限制用户输入长度。
- 确定数据库中数据类型。
SQL注入原理包括:
- 从前端传给后端的参数内容是用户可以控制的。
- 传入的参数是可以拼接到SQL语句中执行。
常规思路为:
- 手工或工具找到注入点。
- 通过注入点获取数据库信息。
- 猜测数据库表重要字段和内容。
- 通过获取信息进行登录。
手工注入思路包括:
- 判断是否存在注入,注入是字符型还是数字型。
- 猜解SQL查询语句中的字段数。
- 确定显示的字段顺序。
- 获取当前数据库。
- 获取数据库中的表。
- 获取表中的字段名。
- 查询到账户的数据。
SQL花式注入手段有:
- 延迟注入:通过“and sleep(10)”让数据库延时10秒返回,判断是否存在SQL时间注入。
- 堆叠注入:使用分号隔开多条SQL语句,构造攻击语句,实现增删改查。
- 二次注入攻击:在第一次插入脏数据后,未进行进一步检查,导致下一次查询时形成二次注入。
- 宽字节注入:开启gpc过滤特殊字符,但数据库编码错误,导致注入绕过。
- base64编码注入:通过编码绕过gpc注入拦截,解码后执行SQL攻击。
SQL绕过技术包括:
- 空格字符绕过:使用Tab、%a0、%09-%%0d等替代。
- 大小写绕过:设置字符串为大小写不敏感。
- 浮点数绕过注入:利用浮点数绕过SQL限制。
- NULL值绕过:使用NULL值绕过限制。
- 引号绕过:使用双引号代替单引号。
- 添加库名绕过:绕过库名限制。
- 去重复绕过:使用distinct去除重复值。
- 反引号绕过:绕过某些waf规则。
- 双关键词绕过:绕过转空关键词。
- 二次编码绕过:绕过二次编码解析。
文件上传漏洞简述:允许用户上传可执行动态脚本文件,如头像、OA办公文件等。
文件上传过程:验证文件、判断错误、显示信息。
预防方法:
- 权限认证。
- 禁止脚本执行。
- 设置上传白名单。
- 限制上传后缀名。
攻击方法:通过上传恶意文件突破限制。
预防措施:服务器端使用白名单防御,修复中间件漏洞,禁止可控参数,禁止脚本执行,限制后缀名,文件名随机。
XSS漏洞简介:恶意脚本植入到web网站中,用户访问时触发攻击。
危害包括:帐号盗取、控制企业数据、资料盗窃、非法转账、电子邮件强制发送、网站挂马、控制攻击。
XSS漏洞类型有:
- 反射型XSS:非持久化,需要用户点击链接触发。
- 存储型XSS:持久化,代码存储在数据库。
- DOM型XSS:基于DOM文档对象模型的反射型XSS。
XSS编码绕过方法有:
- 过滤特殊字符。
- 过滤alert函数。
- 使用ASCII编码。
- URL编码。
- Base64编码。