一些web安全漏洞介绍和修复建议
高危-SQL注入
【漏洞危害】
[1] 攻击者通过SQL注入,能够直接获取数据库敏感数据,设置通过数据库执行系统命令。
【解决方法】
[1] 使用全局过滤器,过滤特殊字符,正确处理数据类型。包括但不限于以下字符及字符串:select and or like regxpfrom where update exec order by having drop delete ( ) [ ] < > , . ; : ‘“ # % + - _ = / * @。
[2] 预编译 SQL 语句,而不要动态组装 SQL 语句,否则必须确保在使用输入的数据组装成SQL 语句之前,对特殊字符进行预处理。
[3] 以最小权限执行 SQL 语句。
[4] 屏蔽错误回显。
[5] 必要时,限制长度。
高危-存储型XSS
【漏洞危害】
[1] 攻击者通过存储型XSS,不仅能够进行钓鱼,窃取用户登录会话,甚至能够直接控制浏览器,或者引发蠕虫攻击。
【解决方法】
[1] 检查网站所有用户输入数据的地方是否有进行过滤处理。过滤处理包括但不限于以下字符及字符串:Javascript script src imgonerror { } ( ) < > = , . ; : “ ‘ # ! / * \。
[2] 根据页面的输出背景环境,对输出进行编码或使用一个统一的规则和库做输出编码,使用安全框架进行安全编码。
[3] 对于富文本框,使用白名单控制输入,而不是黑名单。
高危-未授权访问
【漏洞危害】
[1] 权限控制不当,会造成网站数据非法篡改等。
[2] 泄露敏感数据。
【解决方法】
[1] 权限控制。
[2] 需登录的系统,页面的权限不可含空用户。
低危-敏感信息明文传输
【漏洞危害】
[1] 由于用户认证在传输过程中没有进行加密,第三方可以通过中途拦截非加密的HTTP连接,读取用户认证信息。攻击者获得该信息后,登录前台或后台,篡改用户前台或后台信息等。
【解决方法】
[1] 使用业界较为安全的算法,诸如非对称算法等对传输过程中的用户名、密码、银行卡号等业务敏感信息进行加密处理。
[2] 网站部署HTTPS协议。
中危-用户猜测
【漏洞危害】
[1] 攻击者能够快速定位到存在的用户,并进行针对性的攻击,进而较少攻击成本。
[2] 攻击者通过用户名猜测和验证码失效进行组合攻击。
【解决方法】
[1] 统一错误回显。
[2] 使用账号锁定策略。
[3] 使用复杂的验证码。
低危-默认报错信息
【漏洞危害】
[1] 造成信息泄露,诸如中间件版本,数据库的列名或相关的查询语句等信息,给攻击者的下一步攻击做准备。
【解决方法】
[1] 优化代码从而避免程序报错。
[2] 隐藏默认报错页面中的敏感信息,自定义错误页面来屏蔽错误信息,统一回显错误信息。
中危-CSRF跨站请求伪造
【漏洞危害】
[1] CSRF跨站请求伪造攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执行在权限保护之下的操作。
【解决方法】
[1] 在所有请求地址中添加 token 并验证。
[2] 验证 HTTP Referer 字段。
[3] 敏感操作需要验证码,更改密码需要验证老密码。
[4] 在HTTP头中自定义属性并验证。。
高危-任意文件上传
【漏洞危害】
[1] 攻击者可以上传任意文件(包括后门文件等)直接控制服务器。
【解决方法】
[1] 检测上传元信息。
[2] 服务器端严格校验文件后缀。
[3] 根据业务,正确放回响应头(Content-Type)。
[4] 校验上传文件的内容。
中危-Apache Tomcat样例目录session操纵
【漏洞危害】
[1] 攻击者可以通过操纵session获取管理员权限。
【解决方法】
[1] 删除tomcat示例文件等不必要的数据。
网站存在Apache Tomcat样例目录,又ession是全局通用的,所以用户可以通过操纵session获取管理员权限,具体利用过程可看以下链接:
http://blog.51cto.com/chenjc/1434858
ApacheTomcat样例目录session操纵漏洞-龙与小妞-51CTO博客
低危-重放攻击
【漏洞危害】
[1] 攻击者可以重放添加发起问卷的请求包,耗费后台资源。
【解决方法】
[1] 对账号新增数据包添加token唯一标识,每次成功之后必须更新toekn才能重新进行。
[2] 检验特定字段的唯一性。
中危-敏感信息泄露
【漏洞危害】
[1] 信息泄露。
【解决方法】
[1] 屏蔽敏感信息,数据返回包去掉不必要的敏感信息。
[2] 用户密码等敏感信息,不要存储在前端。
中危-登录验证码绕过
【漏洞危害】
[1] 验证码不失效,导致攻击者能够不断重放请求,爆破管理员账号。
【解决方法】
[1] 添加验证码的次数限制。
低危-使用GET方法传输业务敏感信息
【漏洞危害】
[1] 信息泄露。
【解决方法】
[1] 使用POST方法传输用户名和密码等敏感信息。
低危-目录浏览
【漏洞危害】
[1]信息泄露以及暴露网站的目录结构。
【解决方法】
[1] 页面权限控制。
[2] 关闭目录浏览功能。
高危-越权访问
【漏洞危害】
[1] 权限控制不当,会造成网站数据非法篡改等。
【解决方法】
[1] 验证一切来自客户端的参数,重点是和权限相关的参数,比如用户ID或者角色权限ID等。
[2] session ID 和认证的token做绑定,放在服务器的会话里,不发送给客户端。
[3] 对于用户登录后涉及用户唯一信息的请求,每次都要验证检查所有权,敏感信息页面加随机数的参数,防止浏览器缓存内容。
高危-服务端请求伪造攻击SSRF
【漏洞危害】
[1] 对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息。
[2] 攻击运行在内网或本地的应用程序(比如溢出)。
[3] 对内网web应用进行指纹识别,通过访问默认文件实现。
[4] 攻击内外网的web应用。
[5] 利用file协议读取本地文件等。。
【解决方法】
[1] 过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件,那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
[2] 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
[3] 限制请求的端口为http常用的端口。
[4] 黑名单内网ip,避免应用被用来获取获取内网数据,攻击内网。
[5] 禁用不需要的协议。
原文作者: à ō é
原文链接: https://laoel.github.io/2019/10/04/一些web安全漏洞介绍和修复建议/
版权声明: 转载请注明出处(必须保留原文作者署名原文链接)