xss漏洞的一些思考-思路分享社区-Web安全-赤道学院

xss漏洞的一些思考

xss漏洞的一些思考

话不多说,直接看这两个实战案例:
xss之案例一
1、某系统存在问题反馈功能,如下图:
Image description

2、这里当然可以测试文件上传,但今天的主题是XSS,故直接略过,首先随意输入,然后点击查看,便可以看到提交的问题:
Image description

3、开启Burp,抓包测试:
Image description

分析数据包:此时主要可控参数有3个,description代表反馈内容;contact代表电话;url代表上传图片的位置。
4、经测试,description和contact均已被实体化输出。所以只能转移到url参数上,查看源代码分析:
Image description

5、很明显看到它直接将url里的数据放到了<img src="">里面,所以我们将最终数据拼接为这样测试:<img src="1" onerror="alert(666)">

payload:
1" onerror="alert(666)
 

Image description

6、就当我激动的点击查看幻想弹窗时,意外发生了,它并没有弹,源码中也没有任何信息:
Image description

7、于是我又返回定位了查看的源码:
Image description
8、在这里看到了如下a标签:

<a href="javascript:void(0)" data-url="url=1" onerror="alert(666)" data-replycontent="null" data-description="test" data-moduleame="我的反馈" data-submittime="2022-07-14 19:30:41" data-replytime="null" class="feedback-detail">查看</a>
 

9、既然跳转后不行,那我们就直接在a标签里面闭合来构造XSS语句:
关键拼接处:
之前payload后是这样的:

data-url="url=1" onerror="alert(666)"
 

还原后应该是这样的:

data-url=""
 

重新构造后理想状态是这样的:

data-url=""><img src="1" onerror="alert(1)"></a>
 

payload:

"><img src="1" onerror="alert(1)"></a>
 

提交查看,成功弹窗,存储型XSS一枚
Image description

Image description

10、重新定位查看源代码:
Image description

xss之案例二
1、某系统存在自评内容,这里直接输出payload测试:
Image description

2、返回查看结果,可以看到后面的</script>被删除了:
Image description

3、怀疑是限制了显示的大小,经过查看html最多取25个:
Image description

4、那么我们用img来测试:

payload:
<img src="1" onerror="alert(1)">
 

Image description

5、可以看到img标签成功执行,但是这里的等号被编码为了&equals;
思考:这里代码可能首先会通过正则等方式去匹配=,若匹配到,则替换为&equals;
类似如下:

<?php
$str = '=';
$str2 = '<img src="1" onerror="alert(1)">';
//$str2 = '<img src="1" onerror = "alert(1)">';
$res = str_replace($str,"&equals;",$str2);
echo($res);
?>
 

Image description

6、通过尝试,将=变为[空格]=[空格]则可以干扰原有的规则,让其匹配不到=,从而绕过:
payload:

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

查看源代码如下:
Image description

7、思考:
尝试使用以上方法在代码中实现,测试了正则,字符串替换等方式,均未成功,= 均会被替换!希望有大佬能指点一二。
Image description
Image description

请登录后发表评论

    没有回复内容