加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

“黑客”必学进攻之“跨站剧本进攻”

发布时间:2018-12-10 05:03:55 所属栏目:业界 来源:信息安全我来讲你来听
导读:最近许多小搭档们看了我的文章给我私信说能不能讲讲跨站剧本进攻技能,本日就以本篇文章具体讲授一下黑客常用的进攻伎俩跨站剧本进攻。 一、 什么是跨站剧本进攻? 官方界说:(Cross Site Scripting),为了反面(Cascading Style Sheets, )的缩写夹杂,故将

个中1.js源码如下:

  1. window.open("http://admin:admin@192.168.1.1/userRpm/ChangeLoginPwdRpm.htm?oldname=admin&oldpassword=admin&newname=administrator&newpassword=password&newpassword2=password&Save=%B1%A3+%B4%E6"); 

下面我们试着用登岸,功效如图所示:

“黑客”必学进攻之“跨站剧本进攻”

可见暗码已经修改乐成!

七、怎样防止"跨站剧本进攻"

防止XSS有一个原则:

宁死也不让数据酿成可执行的代码,不信赖任何用户的数据,严酷区分数据和代码

既然是将数据给注入到代码内里酿成可执行代码,那么我们就找出全部也许的处所,绝大大都XSS产生在MVC模式内里View层。

我们来看看进程:

“黑客”必学进攻之“跨站剧本进攻”

个中:A B C D E F 标志的处所则代表也许会发生XSS

我们分差异上下文来举办差异的编码函数,就可以很必定的隔离在这些处所发生XSS,只要环境不非凡(非凡如:宽字节 base64编码等),就必然可以担保安详。

A: 后端》》》CSS

输出到CSS凡是不会呈现什么XSS,可是假如CSS内里有也许的用户完全可以节制的变量,假如我可以自界说 style 属性并且没过滤,可能可以直接节制某段CSS。

  1. <p style="background-image: url(javascript:alert(/xss/));">//同理<style>#id { background-image: url(javascript:alert(/xss/));}</style> 

这样就可以操作伪协议来实现。

办理要领:

对style属性内里的数据举办严酷的搜查,而且对付用户输出到xss内里的内容举办恰当的CSS编码。

B: 后端》》》》Javascript

这种直接输出的js又不外滤的确就是老掉牙的xss裂痕。

  1. var x =""; 
  2. //假如假设用户可以节制x变量 
  3. //那么我输入 ";alert(/xss/);// 
  4. //那么这串代码会酿成 
  5. var x ="";alert(/xss/);//"; //赤色部门是用户输入的字符 
  6. //乐成弹出 提醒框,执行了特另外代码 

虽然尚有一堆要领实现各类xss,各类姿势。以是这种是最最最简朴的xss也是最轻易被操作的。

办理要领:

对其举办严酷的JavascriptEncode,将某些字符转义,如 " 酿成 " ,' 酿成 ' 等等(不止这些) 防备用户逃走你的 双(单)引号,也可以防备其他姿势注入。

C: Javascript》》》天生HTML元素或添加html元素属性

如 js 给

  1. <div> 

添加height 属性 酿成

  1. <div height="200px"> 

对付这个时辰,从js输出数据到属性或 innerHTML/document.write 等函数天生任何元素,都要视为一次也许的XSS输出。由于上下文已经纷歧样了,这次JavascriptEncode是差池的。不然你只能担保数据在js内里不会被注入,而在html的话,就不必然了。

办理要领:

应该行使 HTMLEncode 编码,担保你从js输出到HTML的元素和属性不会离开你的节制。

D: Javascript》》》输出到HTML元素内里的变乱 或其他任何动态执行js的处所

列如下列一段代码,假如foo是从js执行之后动态输出到html内里的。foo是用户可以节制的。

  1. <script>document.write("<img onload=' " + var + " '>");</script><img onload='alert("var");'> 

“黑客”必学进攻之“跨站剧本进攻”那么我完全可以跟前次一样,输入 ";alert(/xss/);//, 纵然你第一次从后端到js行使了一次jsEncode,可是很遗憾,输出到html变乱(write函数)儿女码会转义返来,以是我依然执行了。

则会酿成:

  1. <img onload='alert("";alert(/xss/);//");'> 

“黑客”必学进攻之“跨站剧本进攻”可以望见,当你加载完毕之后,恭喜执行我的恶意代码。

办理方案:

行使 JavascriptEncode,对变乱内里的js代码举办编码。这里也必需视为一次也许的XSS输出。

E:后端 》》》》输出到HTML元素内里的变乱 或其他任何动态执行js的处所

列的确可以视为跟D是千篇一律的,以是你只必要领略D环境,那么这个也就天然可以领略了。

  1. <img onload='var'> 

“黑客”必学进攻之“跨站剧本进攻”假如var是后端直接未颠末处理赏罚输出,则输入 ';alert(/xss/);// 则触发XSS

办理要领:

也是对var举办JavascriptEncode。

F:后端 》》》》天生HTML元素或添加html元素属性

与C环境也是千篇一律。只是输出源差异了罢了,道理模式都一样。

  1. <div> 
  2. $var 
  3. </div> 

假如$var是后端输出的,那么我可以输入

  1. <script>alert(/xss/)</script> 

“黑客”必学进攻之“跨站剧本进攻”

  1. <img scr='' onerror='alert(/xss/)'> 

总之这样很轻易注入XSS。

办理要领:

对var变量举办HtmlEncode,那么我就无论怎样也构建不了<>任何元素了。也就不行能有

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读