XSS-lab通关记录

3 篇文章 0 订阅
2 篇文章 0 订阅

本文章为buuctf basic XSS-lab的通关记录,为个人学习记录,仅供参考

在学习xss-lab之前,先了解了一下xss攻击的原理,如下:

简述

人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS。
跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。
攻击者可以使用户在浏览器中执行其预定义的恶意脚本,其导致的危害可想而知,如劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖XSS蠕虫,甚至破坏网站、修改路由器配置信息等。
XSS漏洞可以追溯到上世纪90年代。大量的网站曾遭受XSS漏洞攻击或被发现此类漏洞,如Twitter、Facebook、MySpace、Orkut、新浪微博和百度贴吧。研究表明,最近几年XSS已经超过缓冲区溢出成为最流行的攻击方式,有68%的网站可能遭受此类攻击。根据开放网页应用安全计划(Open Web Application Security Project)公布的2010年统计数据,在Web安全威胁前10位中,XSS排名第2,仅次于代码注入(Injection)。

原理

HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,< title >与< /title >之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。

常见攻击方式

1、盗用cookie,获取敏感信息。
2、利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
3、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
4、利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
5、在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。

防御方法

(1)基于特征的防御。XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同。这就给XSS漏洞防御带来了困难,不可能以单一特征来概括所有XSS攻击。
传统的XSS防御在进行攻击鉴别时多采用特征匹配方式,主要是针对“javascript”这个关键字进行检索,但是这种鉴别不够灵活,凡是提交的信息中各有“javascript”时,就被硬性的被判定为XSS攻击。
(2)基于代码修改的防御。Web页面开发者在编写程序时往往会出现一些失误和漏洞,XSS攻击正是利用了失误和漏洞,因此一种比较理想的方法就是通过优化Web应用开发来减少漏洞,避免被攻击:1)用户向服务器上提交的信息要对URL和附带的的HTTP头、POST数据等进行查询,对不是规定格式、长度的内容进行过滤。2)实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。3)确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。
当然,如上操作将会降低Web业务系统的可用性,用户仅能输入少量的制定字符,人与系统间的交互被降到极致,仅适用于信息发布型站点。并且考虑到很少有Web编码人员受过正规的安全培训,很难做到完全避免页面中的XSS漏洞。
(3)客户端分层防御策略。客户端跨站脚本攻击的分层防御策略是基于独立分配线程和分层防御策略的安全模型。它建立在客户端(浏览器),这是它与其他模型最大的区别,之所以客户端安全性如此重要,客户端在接受服务器信息,选择性的执行相关内容。这样就可以使防御XSS攻击变得容易,该模型主要由三大部分组成:1)对每一个网页分配独立线程且分析资源消耗的“网页线程分析模块”;2)包含分层防御策略四个规则的用户输入分析模块;3)保存互联网上有关XSS恶意网站信息的XSS信息数据库。 [3]
XSS攻击主要是由程序漏洞造成的,要完全防止XSS安全漏洞主要依靠程序员较高的编程能力和安全意识,当然安全的软件开发流程及其他一些编程安全原则也可以大大减少XSS安全漏洞的发生。这些防范XSS漏洞原则包括:
(1)不信任用户提交的任何内容,对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、REFER、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。尽量采用POST而非GET提交表单;对“<”,“>”,“;”,“””等字符做过滤;任何内容输出到页面之前都必须加以en-code,避免不小心把htmltag显示出来。
(2)实现Session 标记(session tokens)、CAPTCHA(验证码)系统或者HTTP引用头检查,以防功能被第三方网站所执行,对于用户提交信息的中的img等link,检查是否有重定向回本站、不是真的图片等可疑操作。
(3)cookie 防盗。避免直接在cookie中泄露用户隐私,例如email、密码,等等;通过使cookie和系统IP绑定来降低cookie泄露后的危险。这样攻击者得到的cookie没有实际价值,很难拿来直接进行重放攻击。
(4)确认接收的内容被妥善地规范化,仅包含最小的、安全的Tag(没有JavaScript),去掉任何对远程内容的引用(尤其是样式表和JavaScript),使用HTTPonly的cookie。

level 1

在这里插入图片描述
可以看到网站get了一个name值为test,查看网站源码,可以看到get传入的test是在< h2 >的标签中
在这里插入图片描述
同时我们可以在上方的script中看到一个函数,这个函数告诉我们调用alert时,我们就可以运行function,所以我们在test的位置写下<script>alert("ysys")</script>
在这里插入图片描述
可以看到我们此时调用了function函数,成功过了第一关。

level 2

在这里插入图片描述
在这里插入图片描述

查看后台源码可以看到test是通过GET的方式从文本框输入,并且显示在< h2 >标签中,因此我们注入的点是在value中,但此时我们如果在value中输入script语句的话,会被当成是value的值,所以我们要先用">来过滤value的值,在通过script标签进行alert的输入,因此payload也就很简单了,"><script>alert("ysys");</script>,通过这种方式注入就可以正确进入下一关了。
在这里插入图片描述

level 3

在这里插入图片描述
在这里插入图片描述
发现我们注入的点还是在value中,是单引号闭合,因此我们不妨试一试level2中的'><script>alert("ysys")</script>,发现不行
在这里插入图片描述
这时候我们再去看源码
在这里插入图片描述
可以清晰地看到,js的标签被进行了html编码,但是标签肯定都是带有<>的,因此这里我们就不能够使用前面的js标签来进行注入,同时我们也看到单引号是没有被注释的,因此我们先通过闭合value的值,再采取事件的方式进行注入,就可以成功进入下一关了。
payload:' onclick='alert(1)
在这里插入图片描述

level 4

在这里插入图片描述
拿到题目,首先看到后台源码的value值是用双引号包起来的,因此我们先将上一题的payload单引号换成双引号注入一下试试,直接就成功了…,其实我们可以用尖括号先注入一下,发现注入是不成功的,因为尖括号被编码过了。
在这里插入图片描述

level 5

在这里插入图片描述
先用上一题的payload注入一下试试,发现,ε=(´ο`*)))唉,报错了,打开源码看看
在这里插入图片描述
发现其他都没什么问题,就是这个onclick变成了o_nclick,可以猜测onclick被过滤成了o_nclick,意味着我们不能够使用onclick这个事件,所有的js事件都带有on,所以我们不能够使用事件进行xss注入;接着我们试一试之前的js标签注入

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值