首页 > 编程知识 正文

xss漏洞原理,ssrf漏洞

时间:2023-05-06 19:15:09 阅读:147956 作者:504

目录

一. XSS漏洞原理

二. XSS漏洞的危害

三. XSS漏洞分类

1、反射式XSS

2、存储型XSS

3、DOM型XSS

4、判断是什么样的XSS

四. XSS漏洞检测和防御

1、检查

手动检测

工具检测

2、防御

另一方面,XSS漏洞原理XSS,即跨站点脚本攻击,是攻击者利用Web服务器中的APP应用或代码漏洞,使页面包含客户端脚本(通常为JavaScript编写的恶意代码,有时为也有VBScript等语言),是信任此Web服务器的用户访问网站中包含恶意脚本代码的语言

如果APP应用程序不验证用户提交的内容并对其重新编码,而是直接显示给网站访问者,则可能会触发XSS攻击。

二、XSS漏洞危害(1)窃取管理员帐号或Cookie。入侵者可以冒充管理员身份登录后台,使入侵者具有恶意操作后台数据的能力。 这包括部分信息的读取、变更、添加、删除。

(2)窃取用户的个人信息或者登录帐号例如冒充用户进行各种操作。

(3)网站挂马。将恶意攻击代码嵌入web APP应用程序中。 当用户浏览此骑马页面时,特洛伊木马会嵌入用户的计算机中。

(4)发送广告或者垃圾信息。攻击者可以利用XSS漏洞嵌入广告、发送垃圾邮件,严重影响用户的正常使用。

三. XSS漏洞分类1、反射式XSS反射式XSS又称非持久性XSS,是最常见的一种XSS。

XSS代码经常出现在URL请求上。 当用户访问带XSS代码的URL请求时,服务器端接收并处理该请求,并将带XSS代码的数据返回给浏览器。 浏览器分析并执行此段的带XSS代码的数据,整个过程看起来像一次反射,因此称为反射XSS。

这种攻击的主要特点是及时性和一次性,在用户提出请求后,响应信息会立即反馈给用户。 这种攻击经常发生在直接响应用户输入的场景中,例如搜索引擎或错误消息页面。

2、记忆型XSS记忆型XSS,也称为持久性XSS。

在存储型XSS中,XSS代码存储在服务器端,因此允许用户存储数据到服务器端的Web应用程序中可能存在此类型的XSS漏洞。 攻击者发送XSS代码时,服务器会接收并保存该代码,当其他用户访问包含该XSS代码的页面时,浏览器会分析并执行该XSS代码。

存储型XSS攻击的特点之一是提交的恶意内容会被永久存储,因而一个单独的恶意代码就会使多个用户受害,故被称为持久性XSS,它也是跨站脚本攻击中危害最的一类。二是被存储的用户提交的恶意内容不一定被页面使用,因此存在危险的响应信息不一定被立即返回,也许在访问那些在时间上和空间上没有直接关联的页面时才会引发攻击,因此存在不确定性和更好的隐蔽性。

这类攻击的一个典型场景是留言板、博客和论坛等,当恶意用户在某论坛页面发布含有恶意的Javascript代码的留言时,论坛会将该用户的留言内容保存在数据库或文件中并作为页面内容的一部分显示出来。当其他用户查看该恶意用户的留言时,恶意用户提交的恶意代码就会在用户浏览器中解析并执行。

3、DOM型XSS

DOM (Document Objet Model)指文档对象模型。

DOM常用来表示在HTML和XML中的对象。DOM可以允许程序动态的访问和更新文档的内容、结构等。客户端JavaScript可以访问浏览器的文档对象模型。也就是说,通过JavaScript代码控制DOM节点就可以不经过服务器端的参与重构HTML页面。

该类攻击是反射型XSS的变种。它通常是由于客户端接收到的脚本代码存在逻辑错误或者使用不当导致的。比如Javascript代码不正确地使用各种DOM方法(如document.write)和Javascript内部函数(如eval函数),动态拼接HTML代码和脚本代码就容易引发DOM型的跨站脚本攻击。

因此,DOM型XSS与前面两种XSS的区别就在于DOM型XSS攻击的代码不需要与服务器端进行交互,DOM型XSS的触发基于浏览器端对DOM数据的解析来完成,也就是完全是客户端的事情。

4、判断是哪一种XSS

发送一次带XSS代码的请求,若只能在当前返回的数据包里发现XSS代码,则是反射型;若以后这个页面的返回包里都会有XSS代码,则是存储型;若在返回包里找不到XSS代码,则是DOM型。

四、XSS漏洞的检测与防御 1、检测 手工检测

手工检测重点要考虑数据输入的地方,且需要清楚输入的数据输出到什么地方。

在检测的开始,可以输入一些敏感字符,比如“<、>、()”等,提交后查看网页源代码的变化以发现输入被输出到什么地方,且可以发现相关敏感字符是否被过滤。

手工检测结果相对准确,但效率较低。

工具检测

常用工具有AVWS(Acunetix Web Vulnerability Scanner)、BurpSuite等。还有一些专门针对XSS漏洞的检测工具,如:XSSer、XSSF(跨站脚本攻击框架)、BeEF(The Browser Exploitation Framework)等。

2、防御

●使用黑名单进行

●对HTML标签或特殊字符进行过滤

●使用内容安全的CSP

●使用设计上就会自动编码的框架,如:OWASP ESAPI、React JS、JSOUP等,对于JAVA而言,可以使用ESAPI.encoder().encodeForHTML()对字符串进行HTML编码。

●对于反射型和存储型XSS,可以在数据返回给客户端浏览器时,将敏感字符进行转义,如:将单引号进行编码替换(十进制编码&#39、十六进制编码&#x27、HTML编码&apos、Unicode编码u0027等)。

●对于DOM型XSS,可以使用上下文敏感数据编码。如:在PHP中的htmlspecialchars()、htmlentities()函 数可以将一些预定义的字符转换为HTML实体,如:小于转化为&lt、大于转化为&gt、双引号转化为&quot、单引号转化为&apos、与转化 为&amp等。

●启用浏览器的HttpOnly特性可以组织客户端脚本访问cookie。如:在PHP中可以通过下面的代码设置cookie并启用HttpOnly。

<?php Header("Set-Cookie:password=123456;httponly",false);>

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。