当前位置:   article > 正文

XSS初级漏洞靶场

XSS初级漏洞靶场

一、环境的搭建

可以在githb上找靶机包,使用小皮面板搭建在自己本机

与此文章类似(放在www目录下)

二、XSS漏洞简介

1、什么是xss漏洞

当用户访问被xss注入的网页,xss代码就会被提取出来。用户浏览器就会解析这段xss代码,也就是用户被攻击了。

用户最简单的动作就是使用浏览器上网,并且浏览器中有js解释器,可以解析js,然而由于浏览器不具有人格,不会判断代码是否具有恶意行为,只要代码符合语法规则,浏览器就可以解析这段xss代码。

简单来说,xss就是通过攻击者精心构造的js代码注入到网页中,并且浏览器解释运行了这段恶意的js代码,以达到恶意攻击浏览器的效果。

xss的攻击对象是用户浏览器,属于被动攻击,因此xss攻击涉及到三个角色

  • 攻击者
  • 用户浏览器
  • 服务器

当然不要以为xss属于客户端攻击,受害者是用户,就会以为跟自己的网站、服务器安全就没有关系,网站的管理员也是用户之一,知识相对普通用户权限更高。

实现xss攻击需要具备的两个条件:

  • 需要向Web页面注入精心构造的恶意代码
  • 对用户的输入没有做果过滤,恶意代码能被浏览器成功执行

2、XSS漏洞的类型

xss漏洞的位置通常在于Web应用程序的输入验证或者输出过滤不严格的地方

类型:

  • 存储型XSS(Stored XSS):攻击者将恶意脚本存储在服务器上,当其他用户访问这些恶意脚本的网页时,就会触发XSS漏洞
  • 反射型XSS(Reflected XSS):恶意脚本作为URL参数发送给服务器,服务器将恶意脚本插入到返回的页面中,用户访问该页面就会执行该脚本
  • DOM-based XSS:攻击不涉及服务器端,而是通过修改页面的DOM结构来实现攻击,通常通过修改客户端脚本中的DOM元素来触发漏洞。

三、开始闯关

在此之前补充三个弹窗函数

  1. alert()
  2. confirm()
  3. prompt()

反射型XSS

1、level1

语句插入

 从源码可以看到,后端是get接收参数,并且没有过滤,
那么我们直接在参数的后面加上script标签

?name=test<script>alert(1)</script>

结果:

2、level2

和第一关差不多,按刚才的输入以此,看下情况

可以看到,我们的输入被原米原样输出,没有弹出警告框

看下后端源代码,我们的参数会经过这个过滤函数

htmlspecialchars()会将& (& 符号)、" (双引号)、' (单引号)、< (小于)、> (大于)等符号转换成HTML实体编码。

那么在h2标签中我们无法进行注入,但可以看到下面的input标签还有一个输出点,
在这里我们只需要绕过双引号和闭合尖括号就可以实现

效果:

test"><script>alert(0)</script>

第二种方法:鼠标点击事件onclock

也是对input标签进行操作,闭合前一个单引号,在后面加上点击事件的属性

test"onclick="alert(1)

点击一下:

3、level3

先试着用上一关的闭合单双引号试试,

这时候我们使用点击事件,来进行注入,先将单引号闭合

test'onclick='alert(1)

点击,查看效果

4、level4

我们在使用上一关的方法,直接使用利用属性,看能不能过
很明显可以直接过

看下源码,看考察的点是什么?
他在考查看我们input的闭合,会将尖括号替换为空

5、level5

我们直接在试一下上一关的方法
可以看到我们的onclick被过滤替换了

我们看源码,都替换了哪些

可以看到我们是不能再使用script标签了,带on的事件关键字也不能用了

我们不妨直接将input前面的标签闭合掉,使用a标签在href后直接使用javascript伪协议

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

6、level6

直接看源码可以看到,将我们上一关用的href也过滤掉了

在html的标签中,浏览器在解析过程中会忽略大小写的,而我们可以看到上面都是过滤小写,那我们不妨可以试试大小写绕过
(当然在javascript内部是严格区分大小写的)

1 " OnCLick="alert(1)

7、level7

我们可以看到这关是将关键词替换为空进行过滤,那么我们可以进行双写实现绕过

1"oonnclick="alert(1)

8、level8

此处添加友情链接,那么不就可以用我们a标签里href的javascript伪协议了吗

但可惜的是被过滤掉了

那我们直接使用编码就行

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

9、level9

查看源码可以看到过滤了我们很多关键字,并且必须需要加上http://才可以

那我们针对这些过滤使用实体编码来绕过

&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x27;http://;&#x27;&#x29;

很明显我们添加上了我们想要的东西

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/184613
推荐阅读
相关标签
  

闽ICP备14008679号