Security level: Low查看代码,没有任何验证码或者Token防御(服务器只看请求里有无有效Session Cookie, 带了就执行)
你敢相信吗,在浏览器里点开了一个搞笑的图片,你在另一个网站的密码就被人偷偷改了!今天来讲一个与Cookie(盒子)、Session(账本)、BP(网线间谍)和CSRF(隔岸观火)串成的侦探故事。
- Session(账本): 藏在网站服务器的机房里。登陆成功后,服务器就会在账本上写下:【Admin用户,登陆状态】;
- Session ID(钥匙):服务器生成一传随机字符串(eg:PHPSESSID= B982…)作为钥匙,为了识别;
- Cookie(盒子):钥匙交给浏览器,放在本地缓存Cookie盒子里;
- 用BP抓包,能看到钥匙(Session ID);
- 在Inspector里修改参数,将password_new和password_conf的值直接改成其他,如543, Forward后提示Password Changed, 退出后可以用新密码登录DVWA(admin,543)
所以把一串改密码的链接做成搞笑图片 标签,发给任何一个用户,点击后,他的浏览器就会自动替他发送这串链接,并且修改密码,达到隔岸观火的效果。
Security level: Medium 查看代码,中级多了一道安检——检查HTTP请求头中的Referer字段是否包含服务器的域名或IP,但代码通常使用stripos(SERVER[′HTTPREFERER′],_SERVER['HTTP_REFERER'],SERVER[′HTTPREFERER′],_SERVER[‘SERVER_NAME’];意味着它只检查Referer字符串是否包含127.0.0.1,不在乎IP出现在什么位置,利用文件名构造法;
#1. 便携钓鱼网站代码,在Linux终端输入nano csrf_test.html 创建一个恶意网页(里面嵌入诱导型文案,并在后台用图片标签加载到目标网站的改密码URL)
复制以下代码: