XSS及CSRF
思维导图
XSS原理
XSS全称:跨站脚本(Cross Site Scripting) ,为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS;攻击者会向web页面(input表单、URL、留言版等位置)插入恶意JavaScript代码,服务器对用户提交的数据过滤不严,导致浏览器把用户的输入当成了JS代码并直接返回给客户端执行,从而实现对客户端的攻击目的。
XSS攻击的危害
●1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
●2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
●3、盗窃企业重要的具有商业价值的资料
●4、非法转账
●5、强制发送电子邮件
●6、网站挂马
●7、控制受害者机器向其它网站发起攻击(重定向语句)
●8、窃取cookie的sessionid,冒充登录。
XSS攻击利用到最大就需要自己有台服务器用于窃取信息,还要利用一点社工,骗取别人点击恶意的链接。
js执行
Js是浏览器执行的前端语言,用户在存在xss漏洞的站点url后者能输入数据的部分插入js语言,服务器接收到此数据,认为是js代码,从而返回的时候执行。因此,攻击者可利用这个漏洞对站点插入任意js代码进行窃取用户的信息。
XSS分类
反射型(非持久型)
反射型XSS,又称非持久型XSS,攻击相对于受害者而言是一次性的,具体表现在受害者点击了含有的恶意JavaScript脚本的url,恶意代码并没有保存在目标网站,而Web应用程序只是不加处理的把该恶意脚本“反射”回受害者的浏览器而使受害者的浏览器执行相应的脚本。
其攻击过程如下:
小田经常浏览某个网站,此网站为小杨所拥有。小杨的站点运行小田使用用户名/密码进行登录,并存储敏感信息(比如银行帐户信息)。
攻击者发现小杨的站点包含反射性的XSS漏洞。
攻击者编写一个利用漏洞的URL,并将其冒充为来自小杨的邮件发送给小田。
小田在登录到小杨的站点后,浏览攻击者提供的URL。
嵌入到URL中的恶意脚本在小田的浏览器中执行,就像它直接来自小杨的服务器一样。此脚本盗窃敏感信息(授权、信用卡、帐号信息等)然后在小田完全不知情的情况下将这些信息发送到攻击者的Web站点。
存储型(长久型,危害最大):
存储型XSS是指应用程序通过Web请求获取不可信赖的数据,在未检验数据是否存在XSS代码的情况下,便将其存入数据库。当下一次从数据库中获取该数据时程序也未对其进行过滤,页面再次执行XSS代码持续攻击用户。存储型XSS漏洞大多出现在留言板、评论区,用户提交了包含XSS代码的留言到数据库,当目标用户查询留言时,那些留言的内容会从服务器解析之后加载出来。
该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,攻击者将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。其攻击过程如下:
Bob拥有一个Web站点,该站点允许用户发布信息/浏览已发布的信息。
Charly注意到Bob的站点具有类型C的XSS漏洞。
Charly发布一个热点信息,吸引其它用户纷纷阅读。
Bob或者是任何的其他人如Alice浏览该信息,其会话cookies或者其它信息将被Charly盗走。
DOM型(不经过服务器,前端js代码的利用):
DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式,DOM-XSS简单理解就是不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题。
本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。其攻击过程如下所示:
Alice给Bob发送一个恶意构造了Web的URL。
Bob点击并查看了这个URL。
恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在Bob电脑上。
具有漏洞的HTML页面包含了在Bob电脑本地域执行的JavaScript。
Alice的恶意脚本可以在Bob的电脑上执行Bob所持有的权限下的命令。
xss练习
讲三个关卡·
XSS总结和区别
XSS平台使用
我们可以通过在线的xss平台作为第三方工具盗取网站信息,同时也存在一些问题就是我们的渗透测试的过程当中我们获取的网站信息有可能会被这些平台白嫖,还有就是我们在网上下载的xss(或者是其他工具)很有可能是带后门的。
自己搭建一个平台
一些xss工具(beef演示)
什么是httponly
如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,但是并不能防止xss漏洞只能是防止cookie被盗取。
绕过 httponly:
浏览器未保存帐号密码:需要 xss 产生登录地址,利用表单劫持
浏览器保存帐号密码:浏览器读取帐号密
WAF绕过
标签语法替换
特殊符号干扰
提交方式更改
垃圾数据溢出
加密解密算法
结合其他漏洞绕过
XSS安全修复
过滤输入
过滤输出
开启httponly
CSRF漏洞
CSRF(Cross-Site Request Forgery),跟XSS漏洞攻击一样,存在巨大的危害性。
你可以这么来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等
假如现在我的网站添加管理员的请求是www.huihe.com/adduser.php?username=ywb&password=123456
现在有人在自己的博客www.ywb.com 首页 文件添加了下面代码
<script src="www.huihe.com/adduser.php?username=ywb&password=123456"></script>
当我网站后台现在处于登录,并且我访问了www.ywb.com这个首页后,就会自动添加了一个网站管理员
CSRF防护
1、当用户发送重要的请求时需要输入原始密码
2、设置随机 Token
3、检验 referer 来源(同源策略),请求时判断请求链接是否为当前管理员正在使用的页面(管理员在编辑文章, 黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4、设置验证码
要的请求时需要输入原始密码
2、设置随机 Token
3、检验 referer 来源(同源策略),请求时判断请求链接是否为当前管理员正在使用的页面(管理员在编辑文章, 黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4、设置验证码