网站常见漏洞

43 阅读4分钟

一、什么漏洞

1、一个网站的基本构成

端: JavaScript / vue / react 网关:nginx 后端:Go / Java / Node 前后端交互:HTTP / WebSocket

2.常见的安全事件

数据泄漏 X国公共卫生系统公布了一起大规模数据泄露事件,超130万人受到该事件影响。入侵网站的黑客可获取到病人的个人信息,其中包括病人的出生日期、家庭住址等。 服务瘫痪 某老牌航空公司因遭黑客攻击,官网出现技术性故障,整个系统突然崩溃中断。当天几乎所有航班均被延误,后续超188个航班受到影响。

成果失窃 某芯片制造巨头被爆遭到勒索软件攻击,入侵者成功访问并在线泄露了员工私密信息及 系统劫持 某国导弹袭击警报响彻云霄,持续了几乎一个小时,疑为网络攻击引发的误报。

3、网站攻击者 针对客户端的漏洞攻击 针对服务端漏洞的攻击 4、服务端漏洞 第三方组件漏洞 如log4j SQL 注入

[Java] Mybatis 使用 「$」 构建SQL模板

使用「#」,实际的SQL语句: SELECT id,name,pwd,age FROM t_user_info WHERE id=?不存在漏洞

使用「$」, 实际的SQL语句: SELECT id,name, pwd , age FROM t_user_.info WHERE id = 'xx '存在漏洞

防护方式: 1、尽量不要基于DB的Raw方法拼接构造SQL语句,而应该使用预编译,ORM框架 2,使用ORM框架时,应该注意框架中的特性,可能存在不安全的写法导致的SQL注入问题。 3.在复杂场景一定要使用拼接SQL,需要对外部输入进行转义。

命令执行

代码中遇到需要调用某个命令才能完成的功能时候,会涉及到命令拼接,如果命令拼接没有做好安全过滤,那么将会导致命令注入风险,服务器权限将会被控制

防护方式: 1.对动态的值尽可能设置白名单进行验证。 2.如果某些位置无法白名单,需要尝试对数据类型进行校验。 3.特殊字符黑名单的过滤,或者转义。

越权漏洞

认证:你是谁? 授权: 你能做什么? 越权:资源访问或操作时候主体权限没有进行校验就会造成越权问题,细分为: 未授权,不需要认证,拿到数据,水平越权,查询同等级别的账户信息,垂直越权,使用别的权利 水平越权: 黑灰产场景:订单查询功能提供订单id即可查询订单详情,这里攻击者可以遍历orderld获取其他用户的订单信息 防护方式: 涉及资源id尽量不要使用短id (遍历难度较小),同时最重要的一定要最好资源属主校验 垂直越权: 黑灰产场景: 攻击者可以通过开通另外的测试管理员账户抓包获取接口,或者通过逆向前端代码方式获取实际接口,然后绕过前端直接尝试访问后端接口,获取数据详情。 防护方式: 如果是简单的场景,可以将接口在路由级别进行分组,对不同的API分组引入Middleware进行权限拦截,Middleware获取当前用户角色以确定是否可以访问此接口。

SSRF

SSRF又称服务端请求伪造攻击,指攻击者利用后端服务器为跳板,让后端服务向非预期网络地址(主要指内网地址)发出恶意请求,获取敏感信息或执行恶意操作。

服务端流程: 服务端请求 stockApi,获取结果返回。 攻击者: 将stockApi参数改为内网地址,访问内网资源

文件上传漏洞

防护方案: 1.限制文件类型:如果系统只需要图片类型,可以从服务端解析文件格式,限制只能传入特定的文件格 式。 2.站库分离:应用部署的位置和上传的文件分离,一般可以使用TOS、OSS等进行文件存储。 3.防止图床:对图片访问链接进行限制,包括时间限制,访问身份限制等。