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) 最经典的弹窗语句

如:    

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


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

(这个是定义Js的标签)

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

alert(1) (经典代码test)

 Javascript实际上是一个伪协议      

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

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

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

 javascript:alert(1)

事件也是可以执行JS的:   

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

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

类似的事件有很多         

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


标签法:
伪协议:555
事件法:8888

xss的本质是什么

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

xss如何执行

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

xss作用

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

如何检测xss

通过一个经典语句弹窗检测。

xss还可以通过什么来执行

通过事件,伪协议来执行

伪协议是什么

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

事件是什么

这里的事件就是指js事件,通过之歌js事件来执行 例如当图片加载错误时弹窗,以此来触发执行语句

xss一般通过什么来执行

写在

XSS大全_第3张图片

没有找到和<script>alert(123)</script>相关的结果.

 <script>alert(123)</script>

很明显<>被转义掉了

伪协议:555

XSS大全_第4张图片

伪协议也被转义掉了,成了 <a href=javascript:alert(555)>555</a>

只能尝试事件法


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

所以用的是oninput

' οninput=alert(1) // 

页面会先从

XSS大全_第5张图片

XSS大全_第6张图片

存储型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达到恶意效果吗?

获取到别人的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做一个项目,选择默认模块就够用了

XSS大全_第7张图片

然后就构建语句/index.php?c=mail&m=a

这样就可以了

XSS大全_第8张图片

flag=zKaQ-01sdfDCo0

Dom型XSS

XSS大全_第9张图片

什么是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

测试弹窗的语句并不只有可以尝试跟换大小写,以及更换其他语句来测试

为什么通过抓包来做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编码、输出到

你可能感兴趣的:(小白入坑,笔记,xss,前端,web安全)