公司近日又被攻防演练中心扫出漏洞,这次不是注入(injection),而是什么xss,一时很懵,不知道是个啥玩意。
xss(reflect)
报文:
GET /login.jsp?doWhat=viewSharedDoc&documentid=121864"><script>alert(7146)</script> HTTP/1.1
Host: xxxxxx
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; rv:11.0) like Gecko
Accept: */*
Accept-Encoding: gzip, deflate
Referer: http://xxxxxxx/?doWhat=viewSharedDoc&documentid=121864
Cookie: csweb-8000-PORTAL-PSJSESSIONID=0DJCEypyZmrkITtxaZ9P3ynrBOo5DvO7!-2068434490; PS_TOKEN=pwAAAAQDAgEBAAAAvAIAAAAAAAAsAAAABABTaGRyAk4Acwg4AC4AMQAwABRrJffFias/y+LnV/kcJcea8ndB/2cAAAAFAFNkYXRhW3icJYo7DkBQFAXHJ0qFfRA8ggU8RCHi02jeImzP4hzcYuZMci8gDHzPk2+f75KTiQPHIFo2diLLrIwXVa92jKxUJTkFHan8sqD92JBRU4n/NvK7jP54AOmmDJ4=; SignOnDefault=ZJU_GUEST; PS_TOKENEXPIRE=18_Sep_2019_01:53:35_GMT; JSESSIONID=3F488447A3EF5DA1FFCB83C9C1082CF3
Accept-Language: zh-cn
截图
经过度娘一番学习,才知道它是 Cross Site Scripting 跨站脚本的意思,它的攻击主要分三种:
一是通过URL带参数的GET方式,将参数中加入脚本,我们这次被扫出的就是这种情况,如: /login.jsp?doWhat=viewSharedDoc&documentid=<script>alert(7146)</script>。这种方式也称为“反射型”。
经测试,IE11及Chrome会自动屏蔽这类攻击,但火狐firefox仍能执行:
二是通过提交功能(如评论、留言、回复之类)将脚本上传并存储到服务器,以后每个人访问都被会执行,这是个一劳永逸的好办法。还可以上传一些诱人图片来伪装,老年人最容易上当的那种:
<img onclick="window.location.href='http://xxxxxxx'" width='300' src='img/flower.jpg'/>
三是不经过服务器处理,而是在前端实时经js解析DOM造成的。
造成的危害主要有:
1.盗取cookie:
如在textarea之类的里面输入:<img src="null" onerror='alert(document.cookie)' />
2.通过css破坏结构和显示样式
3.重定向劫持流量
4.占用服务器资源,造成正常访问缓慢
5.通过iframe、frame、XMLHttpRequest或Flash等方式,执行管理动作,或盗发微博、私信,好友等
6.利用被攻击的域,以受信来源访问其他网站,执行不允许一般来源网站执行的操作。
如何防范:
1.控制参数格式:过滤字符onerror,onclick, <iframe>, <frame>, <script>,<a>之类;对参数进行编码和长度限制;
2.保护cookie:设置httponly为true。
参考文章: