浏览器抓取网页(跨站攻击的主要原因是什么?DOM型的区别)
优采云 发布时间: 2022-02-25 18:05浏览器抓取网页(跨站攻击的主要原因是什么?DOM型的区别)
内容
跨站脚本
xss:跨站脚本攻击,无需做任何登录认证,通过合法操作(如在url输入,在评论框输入),将脚本程序注入你的页面或攻击者在网页中插入恶意脚本当用户浏览页面时,会执行嵌入在Web中的脚本代码,从而达到恶意攻击用户的目的。
攻击条件
将恶意代码注入网页
这些恶意代码可以被浏览器成功执行
攻击原理
xss漏洞的主要原因是程序对输入输出的控制不够严格,导致“构造良好”的脚本输入,在输入到前端,造成伤害。
xss 漏洞可用于进行网络钓鱼攻击、获取键盘记录、用户 cookie 等。
攻击方式
反射型xss、存储型xss、DOM型xss
1、反射也称为非持久性XSS
交互数据一般不存储在数据库中。它是一次性的,所见即所得,通常出现在查询页面上。
2、Store 也称为持久性 XSS
互动数据会被存入数据库,永久保存,一般会出现在留言板、注册等页面。
3、DOM 类型
不与后台服务器交互是前端代码通过DOM操作输出时出现的问题,也是一次性反射类型。
危害:存储 > 反射 > DOM
DOM 类型
网站 页面中有很多元素。当页面到达浏览器时,浏览器会为页面创建一个顶级的Document Object,然后生成各*敏*感*词*文档对象。每个页面元素对应一个文档对象。文档对象收录属性、方法和事件。客户端脚本程序可以通过DOM动态修改页面内容,从客户端获取DOM中的数据并在本地执行。由于 DOM 在客户端修改节点,基于 DOM 的 XSS 漏洞不需要与服务器交互,仅在客户端处理数据时发生。
攻击方式:用户请求一个特制的URL,由攻击者提交,收录XSS代码。服务器的响应不会收录任何形式的攻击者脚本。当用户的浏览器处理这个响应时,DOM 对象会处理 XSS 代码,从而导致 XSS 漏洞。
原文链接:
因为 JS 触发的 XSS 是 DOM 类型的 XSS,一般来说 DOM 类型的 XSS 是反射性的,很少存储。
如果插入XSS,一般是动态页面,但也有一些是静态页面,不会和数据库交互,大大提高了安全性,也让我们很难进行XSS。考虑到这一点,许多开发人员还假装是动态页面。把它做成静态页面,这种页面叫做:伪静态页面;
控制台输入 document.lastModified 以区分动态和伪静态页面。如果时间总是新的,那么它是动态的或伪静态的。如果时间不变,那就是静态的,不需要xss。
xss漏洞预防
这三种类型的 XSS 漏洞都可以通过过滤或编码来修复。
• 反射型XSS和存储型XSS可以在服务器端对用户输入输出的内容进行过滤和编码,过滤关键字,对关键符号进行编码。所有特殊符号如 , ” , ' , = 都可以通过实体编码或百分比编码来修复。
• 如果DOM类型的XSS与服务器交互,可以参考以上方法修复。如果不与服务器交互,则可以使用 JavaScript 等客户端脚本语言在客户端进行编码和过滤。
• 摘要:输入被过滤,输出被转义(编码)
CSRF
csrf:跨站请求伪造,是一种强制用户对当前登录的Web应用程序进行非预期操作的攻击方法。常见的攻击方式发送csrf的连接,通过伪造请求,受害者点击后会使用受害者的身份发起请求。
CSRF攻击成功的两个必要条件
1.登录到trusted网站A并在本地生成cookies。(如果用户没有登录网站A,那么网站B在感应时请求网站A的api接口时会提示你登录),以及cookies或session未过期;
2.在没有退出A的情况下,访问危险的网站B(实际上是利用网站A的漏洞)。
这里,用户 C 生成的 cookie 保证了用户可以登录,但 网站B 却无法真正获取到 cookie。
csrf 漏洞预防
添加令牌验证(常用做法):
1、在key操作中加入token参数,token值必须是随机的,每次都不一样;关于安全会话管理(避免使用会话):1、不要在客户端存储敏感信息(如身份认证信息);
2、测试直接关闭,退出时会话过期机制;
3、设置会话过期机制,例如15分钟内无操作,自动登录超时;
门禁安全管理:
1、修改敏感信息需要二次身份认证。例如修改账号时,需要确定旧密码;
2、敏感信息的修改使用post代替get;
3、通过http头中的referer限制原创页面,并添加验证码:一般用于登录(防暴力破解),也可用于表单中进行其他重要信息操作(可用性需要考虑)
SSRF
ssrf:服务器请求伪造,由攻击者构造,形成由服务器发起请求的安全漏洞。一般来说,ssrf 攻击的目标是外部世界无法访问的内部系统。对目标地址没有过滤和限制,该功能被恶意使用,有缺陷的Web应用程序可以作为代理攻击远程和本地服务器。
ssrf 危害
1、可以对外部服务器所在的内网和本地进行端口扫描,获取部分服务的banner信息。
2、攻击在内网或本地运行的应用程序。
3、通过访问默认文件对内网web应用(检测为php、asp、jsp等)进行指纹识别。
4、攻击网络内外的 Web 应用程序。sql注入、struct2、 redis等
5、使用文件协议读取本地文件等
ssrf 漏洞预防
1. 统一错误信息,防止用户根据错误信息判断远程服务器端口状态
2. 将请求端口限制为常见的HTTP端口,如80、443、8080、8088等。
3. 黑名单内网 IP。
4.禁用不必要的协议,只允许HTTP和HTTPS。(不允许文件协议等)