一.什么是xss

     XSS全称(Cross Site Scripting)跨站脚本攻击,为了避免和CSS层叠样式表名称冲突,所以改为了XSS,是最常见的Web应用程序安全漏洞之一,XSS是指攻击者在网页中嵌入客户端脚本,通常是JavaScript编写的危险代码,当用户使用浏览器浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。

    从上面中的一段话,可以得知,XSS属于客户端攻击,受害者最终是用户,但特别要注意的是网站管理人员也属于用户之一。这就意味着XSS可以进行“服务端”攻击,因为管理员要比普通用户的权限大得多,一般管理员都可以对网站进行文件管理,数据管理等操作,而攻击者一般也是靠管理员身份作为“跳板”进行实施攻击。
        比如恶意脚本代码:<script>alert("jaden")</script>
    XSS攻击最终目的是在网页中嵌入客户端恶意脚本代码,最常用的攻击代码是javascript语言,但也会使用其它的脚本语言,例如:ActionScript、VBscript。而如今的互联网客户端脚本基本是基于Javascript,所以如果想要深入研究XSS,必须要精通Javascript

xss主要流程

什么叫cookie:Cookie 是网站存在你浏览器里的一小段文本数据,相当于你访问网站时的“临时通行证”。

二.XSS出现的原因

程序对输入和输出的控制不够严格,导致“精心构造”的脚本输入后,在输出到前端时被浏览器当作有效代码解析执行从而产生危害。

三.XSS的主要危害

1.Cookie 劫持与账号盗用

  攻击者通过注入脚本读取用户浏览器里的  document.cookie (尤其是包含  sessionID  的会话 Cookie),再偷偷把 Cookie 发送到自己控制的服务器,拿到 Cookie 后,攻击者可以直接冒充用户登录网站,无需知道账号密码,就能操作用户的账号、修改信息、发消息等

2. 钓鱼与页面伪造(“框架钓鱼”)

  攻击者利用 JS 篡改页面 DOM,伪造出和正常网站一模一样的虚假界面。比如在原网站里嵌入假的登录框、支付页面,用户输入的账号密码、支付信息,会被脚本直接发送到攻击者服务器,用户以为自己在正常网站操作,实际所有信息都被窃取了

3.  挂马与水坑攻击

   通过 XSS 注入恶意脚本,让访问页面的用户自动下载木马、恶意程序。攻击者可以利用浏览器漏洞,在用户不知情的情况下执行恶意代码。最终实现远程控制用户电脑、窃取本地文件、植入病毒等目的

5.  前端页面篡改与网站污损

   直接修改页面内容,破坏网站的正常使用和公信力。比如替换网站文字、图片,发布虚假信息、恶意广告。或者在页面中插入跳转链接,把用户导向其他恶意网站。对企业网站来说,这会直接影响品牌形象和用户信任

四.XSS分类

1.反射型

与服务端交互,但是交互的数据一般不会被存在数据库中,一次性,所见即所得,一般出现在查询类页面等。

如果是一个真实网站,就可以改成以下代码,等别人访问后,cookie会被自动发送到攻击者手里

2.存储型

交互的数据会被存在数据库中,永久性存储,一般出现在留言板,注册等页面。

后面每次点到这个存储型XSS就会弹出上面这界面,所以说这是一个存在存储型XSS漏洞

3.DOM型

不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的漏洞,大部分属于反射型,少部分属于存储型。(与前端发生交互,也就是客户端)
 
关于非持久型,持久型,Dom型xss
 
非持久型xss攻击:顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问同一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户浏览器执行,从而达到攻击目的。
 
持久型xss攻击:持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。
 
而Dom型xss属于有可能是持久也可能是非持久型。

HTMLDOM:

DOMXSS的作用流程图:

实列:

把地址栏改成:http://localhost/dvwa/vulnerabilities/xss_d/?default=<script>alert(1)</script>

然后就出现以下漏洞了:

五.XSS整体防范:

1. 输入过滤:对用户输入的内容做白名单校验,过滤  < > & " '  等特殊字符。
2. 输出编码:根据输出位置做转义,比如 HTML 输出用 HTML 实体编码,JS 输出用 JS 转义。
3. 安全的 DOM 操作:不用  innerHTML ,改用  innerText / textContent ,避免解析 HTML 标签。
4. CSP(内容安全策略):配置 HTTP 头  Content-Security-Policy ,限制脚本执行来源,禁止内联脚本。
5. HttpOnly Cookie:给 Cookie 加上  HttpOnly  标记,防止 XSS 窃取 Cookie。
6. 禁用危险 API:比如禁止  eval() 、 setTimeout()  传入字符串,防止动态执行

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐