在xss利用方法之前,先分享一个前几天友情测试的案例吧
一、XSS案例
站点就不说了,图片打码,主要看效果就可以了😄
页面上有个搜索框,输入随机值在标签中输出,不允许输入尖括号,页面会直接显示错误,但双引号可以使用
" οnclick="alert(1),直接测试,查看页面源代码发现一个问题:
就是我输入的英文小括号,输出时变成了中文括号,这样alert()函数就执行不了了。。。
于是想到,用反引号来代替小括号试试,成功弹窗,源代码显示如下:
但是这里又存在一个问题,反引号里的内容会被当成字符串处理,,比如输入
" onclick"=alert`document.cookie`
弹窗而出的是字符串“document.cookie”,而不是cookie的值,这样就很没意思了
于是又想到一个函数:setTimeout(),利用起来
" οnclick="setTimeout`alert\u0028document.cookie\u0029`
直接看结果,成功弹出cookie的值(∩_∩)
你以为这样就完了吗?弹出的cookie值好像是我自己的!难道我要用它来搞我自己嘛。。。
至此只能证明这里是存在xss漏洞的,我们要获取别人的cookie值,别人的!
接下来分享,如何利用xss漏洞获取目标受害者的信息
友情测试结束,关闭网页,毕竟咱不能去拿人家的网站做坏事,咳咳,那就自己做个实验环境来演示一下吧
二、XSS利用实验
两台虚拟机Kali(攻击者) 和 Windows server 2008(受害者)
首先制作一个表单,模拟页面环境,大致就是这个样子的:
包含三个输入框、一个文本框、一个单选按钮,一个提交按钮,准备就绪,下面开始
攻击者视角:
当攻击者去访问这个页面时,发现该页面评论区存在存储型XSS漏洞,于是插入恶意的链接,如下图:
注:链接是指向攻击者的Kali,使用POST方法提交数据,body内容是当前页面的URL和受害者IP地址;
window.location.href是为了获取受害者当前的URL,window.location.host为了获取受害者的IP地址;
该页面没有设置cookie值,所以就用URL和IP地址来展示,如果要获取cookie,在body中,输入document.cookie即可。
攻击者提交了带有恶意链接的评论,提交的数据使用php脚本来接收,处理并输出到页面上,如上图;
此时,攻击者Kali,使用自带的netcat,命令:nc -vlp 80 ,监听自己的80端口。。。等待一个有缘人上钩
两年过去了……
受害者视角
突然有一天,受害者打开了尘封已久的网页,并看到了评论的链接,怀着好奇的心情打开了它。。。于是
受害者的页面一片空白,明明啥也没有嘛~~ 于是受害者骂骂咧咧的走了
就在此时,攻击者的Kali显示一条来自80端口的POST请求,如下:
攻击者成功获取到了受害者的url和IP地址,仰天长笑三声,卒!
**未知攻,焉知防**