CSRF : Cross-site request forgery  跨站请求伪造
 
所用到的工具:
Firefox浏览器及其插件     HackBar(快速构造URL)     和     Tamper Data(抓包改包)  温馨提示Tamper Data安装好后位于火狐浏览器的菜单栏-工具内。菜单栏需在浏览器窗体顶部右键选中后展示,最新版默认为隐藏状态。
 
 
 
初始信息:
DVWA默认账户     admin     密码     password
登录后先通过DVWA Security页面设置DVWA的安全等级,Low最低。若发生安全等级设置失败的情况可清理浏览器的历时记录、选中并删除cookie信息。重启浏览器后再进行尝试。
图1
正常业务流程效果及发包信息
 
LOW
使用Tamper Data抓包
图2
所发送的数据包URL
?password_new=password
&password_conf=password
&Change=Change#
 
在Tamper Data响应数据包上单击右键点击reply in  browser 重放
图3
弹出如图所示窗体  把password相关两处字段修改为test后提交。网页显示成功修改密码结果。
退出账户重新登录测试新修改的密码test可用。证明存在CSRF漏洞,可以伪造用户修改密码的请求。
 
构造CSRF页面
<html>
<head>
<meta charset="utf-8">
<title>CSRF测试</title>
</head>
<body>
<input type="hidden" name="password_new" value="password" />
<input type="hidden" name="password_conf" value="password" />
<input type="hidden" name="Change" value="Change" />
<input type="submit" value="下载美女图片" />
</form>
</body>
</html>
 
利用下载美女图片按钮引诱受害者点击^_^!  不过真实情况一般使用frame嵌套静默执行让受害者察觉不到页面跳转
点击下载图片按钮后即发送修改密码请求包并跳转至密码修改成功页面。
 
图4
 
medium.
 
图5
尝试使用low等级所构造的页面已无效。抓包对比发现正常报文和CSRF页面报文区别在于referer参数。
使用Tamper Data的改包功能拦截修改CSRF测试页面所生产的请求包,发现referer参数中包含被攻击站点的域名(此处为IP地址)即可。
我们在用于攻击的站点127.0.0.1下新建一个目录192.168.3.88使得受害者浏览我们构造的CSRF页面时发出的请求包所包含的referer信息内包含192.168.3.88字段,以使得被攻击服务器接受我们的密码修改请求。
 
图6
 
 
high.
发现low等级和medium等级构造的页面都失效了,使用Tamper Data抓包发现正常的请求包中出现了token字段。
我们构造的页面无法获取到token字段信息。当同一网站存在XSS漏洞是存在利用XSS漏洞来伪造请求的可能。后续将进行补充。
 
impossible.
安全的等级,这一等级修改密码需要填写当前用户正在使用的密码。彻底堵住了漏洞。
另外可以使用验证码,不过会降低用户体验。
 
 
参考资料:邪恶的CSRF
 

最新文章

  1. jQuery事件笔记
  2. 圣诞礼物:分享几套漂亮的圣诞节 PSD 素材
  3. Node.js 使用 soap 模块请求 WebService 服务接口
  4. R语言基础:数组&amp;列表&amp;向量&amp;矩阵&amp;因子&amp;数据框
  5. asp.net mvc页面javascript代码中如何使用razor
  6. C++学习31 重载=(赋值运算符)
  7. Firefox 设置技巧
  8. WebAPi(selfhost)
  9. POJ 3321 Apple Tree(后根遍历将树转化成序列,用树状数组维护)
  10. window redis 安装配置
  11. svn跨机备份
  12. 求1e11以内的素数
  13. Java Final and Immutable
  14. Windows下Apache添加SSL模块
  15. webpack+babel项目在IE下报Promise未定义错误引出的思考
  16. 解决导入MySQL数据库提示"Unknown character set: 'utf8mb4'"错误
  17. 点击菜单选项,右侧主体区新增子界面(Tab)的实现
  18. eclipse-jee-kepler 如何设置编译compiler为1.8
  19. 一起学习造轮子(三):从零开始写一个React-Redux
  20. Scala数组小结

热门文章

  1. SQLSERVER 连接常见问题
  2. spark 任务导致tmp目录过大
  3. linux 能ping通IP但无法解析域名
  4. [大数据] hadoop全分布式安装
  5. 计蒜客 2018南京网络赛 I Skr ( 回文树 )
  6. 51 Nod 不重叠的线段
  7. scrapy项目5:爬取ajax形式加载的数据,并用ImagePipeline保存图片
  8. dependencies和devDependencies的区别?
  9. SSH上传文件出现error
  10. scrum例会报告+燃尽图02