xss跨站脚本攻击

发布时间 2023-07-08 10:51:33作者: 小吕不忧伤

xss跨站脚本攻击

2023年3月29日

8:26

又叫CSS(Cross Site Script),跨站脚本攻击

原理:

指的是恶意攻击者往Web页面里插入恶意JS代码,当用户浏览该页之时,嵌入其中Web里面的JS代码会被执行,从而达到恶意的特殊目的

xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。

攻击目标:用户

XSS的攻击方式/类型

反射型XSS:

<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。一般是后端代码进行处理

存储型XSS:

<持久化> 代码是存储在服务器数据库中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。

DOM型XSS:

基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。一般是浏览器前端代码进行处理。

防御措施

(1)编码:对用户输入的数据进行HTML Entity编码

(2)过滤:移除用户上传的DOM属性,如onerror等,移除用户上传的style节点,script节点,iframe节点等。

(3)校正:避免直接对HTML Entity编码,使用DOM Prase转换,校正不配对的DOM标签

(4).验证码,/token

DVWA演示

反射型xss

Vulnerability: Reflected Cross Site Scripting (XSS)

Low

Low Reflected XSS Source  there  any  nput?

192.168.48.167 묘示  Ijl

Medium

![Medium Reflected XSS Source $_GET ) $ _r„ET

str_replace()有致命弊端,他区分大小写,我们可以使用大写绕过或者双写绕过

<SCRIPT>alert(lir)</SCRIPT> // 有一个字符大写即可

<scr<script>ipt>alert(1)</script>

漏 洞 : 反 射 式 跨 站 点 脚 本 (XSS)  你 叫 什 么 名 字 ? <SCRlPT>alertCljr)</SCRlPTl 提 交

192.168.4&167 표示  Ijl

HIGH

<?php header ("X-XSS-Protection: 0"); // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Get input $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] ); // Feedback for end user echo "<pre>Hello ${name}</pre>"; } ?>

来自 <http://192.168.48.110/dvwa/vulnerabilities/view_source_all.php?id=xss_r>

Submit  Hello 173456789e

<img src=1 onerror=alert(/ljl/)>

What's your name? <img src=l onerror=alel Submit  Hello 1234567890

![Vulnerability t Cross What's your name? Submit More Information 9192.168.48.110 Ijl/

----------------------------------------------------------------

存储型xss

攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。这就意味着只要访问了这个页面的访客,都有可能会执行这段恶意脚本,因此储存型XSS的危害会更大。因为存储型XSS的代码存在于网页的代码中,可以说是永久型的。

存储型 XSS 一般出现在网站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。

Vulnerability: Stored Cross Site Scripting (XSS

Low

Vulnerability: Stored Cross Site Scripting (XSS)  Name •  Sigl Guestbook Clear Guestbook

<script>alert(‘ljl’)</script>

192.168.48.167 교示  Ijl

Medium

str_replace()有致命弊端,他区分大小写,

我们可以使用大写绕过<Script>alert (*1j1')</Script>

也可以用双写绕过<scri<script>pt>alert(ljl)</script>

尽管对message参数进行了编码,但对于name参数仍然是简单过滤,我们希望通过大写或双写绕过,但发现name参数有长度限制

用burpsuit 改包解除长度限制

也可以直接用开发者工具改字段长度限制

θ 192.168.48.169

scirpt 标签

<script> 标签用于定义客户端脚本,比如 JavaScript。

<script>alert(1);</script>

<script>alert("xss");</script>

alert()

是显示一条弹出提示消息和确认按钮的警告框。

需要注意的是 :alert()是一个阻塞的函数,如果我们不点确认按钮,后面的内容就不会加载出来。

// 已经对<script>标签进行了严格的过滤

>

//img标签原理:插入一个没有的图片,当浏览器找不到图片时,自动执行后边的代码。

HIGH

Vulnerability: Stored Cross Site Scripting (XSS)  123456789000m cnoooo  Message •  Guestbook Clear Guest•ook  Name: test  Message This is a test coment < table  <input name-"txtName" type-"text"

把这个值改掉

分别使用双写和大写绕过都失败了

:a6essar•  •ueN  aueun.uao e sgu zobessos•l  Isal •ueN  woawono *oogusono  au•eN Name:  Message: This is a test comment  Name:  Message: I  Name:  Message: I

换用img标签

192.168.48.110  /ljl/

成功