专栏首页常见Java面试题解析wwwxml400com请拨18608765024bee-box之XSS攻击
原创

wwwxml400com请拨18608765024bee-box之XSS攻击

一个月前刷了XSSchalleng以为自己已经算是入门了XSS了,但是在我挖洞碰到有可能存在XSS漏洞网页的时候,发现我只能记起来<script>alert('xss')</script>

等等最基本的,绕过方式忘得一干二净,果然一句话说得好!对于我这种没有天赋的人,重复就是记忆它妈!!!

再就是上次刷题的我居然没有总结,那可是我第一篇博客啊!!!现在把它补回来!!!

一共十六个题目,先来分析这个系列的绕过方式:

总结(附xss-challenge)

1.无过滤

2.无弹框无提示说明代码并没有执行,闭合value属性下>即可

3-4.插入点的判断以及参数的观察分析,抓包改参即可

5.前端长度限制,修改前端允许最大长度即可

6.输入内容被HTML实体编码,添加属性点击弹窗

7.过滤双引号(那我就不用双引号!!) onmouseover就可以了

8.制作一个伪链接就可以

9、12、13.IE浏览器特性绕过(编码、反引号)

10.双写绕过

11、14.黑名单正则表达式匹配,利用特殊符号进行绕过(制表符,回车符,换行符、注释符)

15、16编码绕过

通过这些绕过方式再来总结一下攻击方面:

1.属性以及属性名插入恶意代码;(闭合标签)

2.表单和url(POST和GET)

3.抓包修改(隐含)参数

html标签注入

js代码注入

防御思路:

1.可以对用户的输入进行过滤,对输出进行html编码,使危险信息不能运行;

2.根据XSS攻击的目的是获取cookie,即让攻击的地方不能获得cookie,也就是说设置cookie的http only属性;

对于上次遗漏的总结就补充到这里,接下来要练习bee-box的xss系列了,希望自个儿又可以进步进步进步!

XSS - Reflected (GET)

low:

首先随便输入,我这里分别输入haha和xixi,页面返回如图:

其实这题和之前 做的差不多,管他的呢先做吧,总会有收获,然后再搞一个总结

直接输入

就会弹框:

medium因为这里我使用的虚拟机不知道在哪看源代码,不过看不到源代码也挺好,输入上面的语句照样可以弹框,为了实验还是换成弹别的吧(偷看网上的了的)

<script>alert('hello')</script>

说明输入的代码是无效的但是执行了,现在看不到源代码但是可以一个字符一个字符试;

分别输入< / > ( ’ 和alert script,果然

发现最后只有引号被转义,绕过转义只需要讲引号换成/(所以js里是不是 / 和 ’ 的作用是不是相似)

high:

这里应该是被HTML编码了

还有这是GET型的我当成POST的题目做了,不过差不多啦

http://192.168.11.133/bWAPP/xss_get.php?firstname=%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E&lastname=111&form=submit

可以直接在url传参,但是既然给了表格就偷个懒,get型我也就不多说啦

XSS - Reflected (JSON)JSON

与 JS 对象的关系:

(度娘说)很多人搞不清楚 JSON 和 JS 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。如var obj = {a: ‘Hello’, b: ‘World’}; //这是一个对象,注意键名也是可以使用引号包裹的var json = ‘{“a”: “Hello”, “b”: “World”}’; //这是一个 JSON 字符串,本质是一个字符串这种类型基本就是上述总结的通过闭合标签来进行攻击的:low:我们根据提示搜索movie找到关键的代码

<script>

var JSONResponseString =

'{"movies":[{"response":"111??? Sorry, we don&#039;t have that movie :("}]}';

// var JSONResponse = eval ("(" + JSONResponseString + ")");

var JSONResponse = JSON.parse(JSONResponseString);

document.getElementById("result").innerHTML=JSONResponse.movies[0].response;

</script>

闭合标签输入

"}]}';alert(1);</script>

虽然这样确实是会弹窗,但是如果仅仅这样的话,还是会报错,要想到后面的代码如何运行呢所以还有把标签加上

`"}]}';alert(1);</script><script>

Medium&High:

好像都会HTML实体编码,所以相对安全的;

XSS - Reflected (AJAX/JSON)

copy了度娘的:

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

其中呢,Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

low&medium

我们先随便输入点东西,页面直接执行了因为没有在数据库找到对应内容又回显到页面中,在源代码搜索输入的地方

接下来就是实验了,我们先输入一个图像标签让他可以换行我们看的清楚一点,我准备试着闭合

标签的,但是输入/之后发现什么都没有了,可能被过滤了,所以这里js代码注入不好整,但是可以html标签注入:

<img src=x onerror=alert('hello')>

弹窗成功,会一直异步更新所以一直会弹框刷新页面就可以了

high

JSON.parse() 方法用于将一个 JSON 字符串转换为对象。懂我意思吧····

XSS - Reflected (AJAX/XML)

发现直接输入payload并没有什么作用,要注意的是每次注入都要刷新一下页面,需要实体转码一波

&lt;img src=0 onerror=&quot;alert(1)&quot;&gt;

可以在网站在线编码将代码实体化;

high:

此时呢他又编码了一次,那我们直接输入

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

不就完事儿了

XSS - Reflected (Back Button)

low

没有表单,url也传递不了参数,只能抓包看看有什么线索

其实这里提示的很明显了,让我们返回上一次的页面,也就是需要在Referer做手脚,抓包:

构造代码时一定要闭合符号

'"><img src=a.png οnerrοr=alert('hello')>

然后改包就会弹框成功;

中高等级别单引号双引号进行了过滤,hello这里的引号倒是可以用/进行绕过,外面的我拿它没办法了;

XSS - Reflected (Custom Header)

和上一关攻击思路一样,略过

搞了这么多我突然觉得自己又可以了!!

说实话这个上面基本上找到注入点就算是成功了一大步,所以下面我都只记一下思路不截图展示了

XSS - Reflected (Eval)

low级别get类型传参就能实现弹框;

中等级别构造payload时需要用到eval函数

高等级别htmlspecialchars()函数来进行过滤

XSS - Reflected (HREF)

一看到题目就知道应该是闭合标签插入js代码

XSS - Reflected (Login Form)

这里结合了sql注入的思想,但万变不离其宗,在注入成功时可以插入payload使其被执行

ps:剩下几道XSS - Reflected我做了感觉收获不大,基本都是前面的思想,还有六道存储型的XSS:

XSS - Stored (Blog)

第一关没什么过滤,直接上代码就可以;

XSS - Stored (Change Secret)

也是比较简单的注入,注入payload,用户再次登陆的时候就会触发xss

XSS - Stored(Cookies)

据说好像只是对cookies进行篡改的一个关卡

XSS - Stored(SQLiteManager)

低等级和中等级都可以直接构造代码保存即弹框

XSS - Stored (User-Agent)

思路也是一样,抓包修改参数

到这里XSS系列完成了,原谅我后面没截图当我发现这里套路基本是一样的时候我就没有那点新鲜感了。

总结

首先针对这系列的xss题目,低等级别攻击方式只要找到插入点基本可以完成攻击;

1.script、/过滤可以用<img>或者其他标签

2.HTML实体编码

3.找到插入点 >闭合标签>抓包改参

这里中级别高级别防御方式基本上都是利用下面两个函数转义和编码

addslashes()函数 >>>>>>>>>>>>转义

htmlspecialchars()函数>>>>>>>>>>>编码

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • www6669988com请拨18687679362_环球国际Flink源码走读(一):Flink工程目录

    导语 | Flink已经成为未来流计算趋势,目前在很多大厂已经有了大规模的使用。最近在学习Flink源码,就想把自己学习的过程分享出来,希望能帮助到志同道合的朋...

    用户7106032
  • wwwyh992099com请拨18687679495_银河国际云硬盘性能测试

    云硬盘是一种高可用、高可靠、低成本、可定制化的网络块存储,可作为云服务器的独立可扩展硬盘使用。它提供数据块级别的数据存储,采用三副本的分布式机制,为云服务器提供...

    用户7106032
  • www6668088com请拨18687679362环球国际领域驱动设计(DDD)实践之路(一)

    领域驱动设计(Domain Driven Design,DDD)其实并非新理论,大家可以看看 Eric Evans 编著的《领域驱动设计》原稿首版是2003年,...

    用户7106032
  • 【XSS漏洞】一步步教你通关DVWA

    今天小编初步学习了一下XSS漏洞,顺带打通了DVWA平台上的几道XSS漏洞题,本着学习的精神,在此跟大家分享一下这几题的解法,感兴趣的同学就跟着我一起往下看吧。

    一名白帽的成长史
  • 哆啦靶场XSS挑战赛1-10关攻略

    哆啦集成了网络上常见的靶场与GitHub上比较好的靶场系统,配合一键启动模式,省去你去收集再进行搭建的时间,方便你更加快速的学习信息安全。

    周俊辉
  • XSS

    XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者...

    河湾欢儿
  • XSS跨站脚本攻击

    跨站脚本(cross site script)为了避免与样式css混淆,所以简称为XSS。

    那一叶随风
  • web安全之XSS实例解析

    跨站脚本攻击(Cross Site Script),本来缩写是 CSS, 但是为了和层叠样式表(Cascading Style Sheet, CSS)有所区分,...

    前端迷
  • 网站搭建-django-学习成绩管理-09-查询成绩之前端实现

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

    zishendianxia
  • 【工作】领导跟我说要改版,但又不提了。到底做不做?啥想法?

    事情是这样的,咱们的WEB前端读书群里有个小伙伴说,“他们领导跟他说要把管理后台的界面改个版,用bootstrap4来搞,但过了好几天了,又不提了。现在又想搞前...

    web前端教室

扫码关注云+社区

领取腾讯云代金券