CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 百科
  3. 正文

csrf

2017年5月21日 1395点热度 0人点赞 0条评论
  • 首页
  • 分类阅读
  • 文库
  • 专栏
  • 公开课
  • 商城
  • 漏洞盒子
注册 | 登录
投稿

从零开始学CSRF

Black-Hole2015-01-13共1393223人围观 ,发现 69 个不明物体WEB安全

为什么要拿CSRF来当“攻击手法系列”的开头篇呢?因为CSRF/XSRF我个人喜爱他的程度已经超过XSS了。如果说XSS是一个老虎,那么CSRF就是隐藏在暗处的蛇。

相信现在很多人不明白CSRF是怎么运作,他和XSS的不同是在哪里。我这里就逐步为大家解释,并从浅入深的介绍CSRF。

入门

我们先来看看CSRF和XSS的工作原理,先让大家把这两个分开来。

XSS:

攻击者发现XSS漏洞——构造代码——发送给受害人——受害人打开——攻击者获取受害人的cookie——完成攻击

CSRF:

攻击者发现CSRF漏洞——构造代码——发送给受害人——受害人打开——受害人执行代码——完成攻击

而且XSS容易发现,因为攻击者需要登录后台完成攻击。管理员可以看日志发现攻击者。

而CSRF则不同,他的攻击一直是管理员自己实现的,攻击者只负责了构造代码。

我这只是简单的说明下流程。大伙应该发现CSRF少了一个 获取受害人的cookie的步骤。为什么会少了呢。因为受害人在执行代码的时候就已经完成的攻击,而攻击者并没有参与进来。

举个例子来说吧(受害者的网址是a.cn,攻击者的网址是b.cn)攻击者想要在某个网站(网站是某个开源CMS)添加上另一个管理员,但是这个网站并没有XSS漏洞。怎么办呢?这时攻击者发现了这个开源CMS后台添加管理员时并没有加入验证码或则token,只需要输入要添加的管理员账号和密码点击确定就可以添加管理员账户了。这时和我一样聪明的攻击者在自己的服务器上建立了一个html文件(假设地址是b.cn/index.html)。然后就给网站管理员发邮件等等,诱使管理员打开b.cn/index.html。当管理员打开后(这时管理员正在网站后台,或则管理员的session并没有失效的话),就可以神不知鬼不觉的在网站后台添加了一个管理员账户。

相信这时大伙已经明白CSRF和XSS的区别了,不是太明白也没事,下面还有。

接下来我先给大家介绍一个软件,在运用实例来详细的说明CSRF。

OWASP CSRFTester:

这是OWASP推出的CSRF半自动化软件,他省去了CSRF最繁琐的过程,代码构造。下面是软件的截图

这款软件是由java编写的,所以在运行软件之前需要事先安装java环境,cmd窗口是告诉我们此时软件正在监听8008端口。软件的大致介绍就到这,后文我将进一步的说明。

这里我选择了“XYCMS中心小学建站系统”

OK,我们进入后台a.cn:88/admin,账号密码默认都是admin。进入后台,我们选择“管理员管理”

我想细心的人已经发现了。他只要求你输入账号 密码 确认密码。没有发现验证码验证。我们在浏览器里代理下8008端口(虽然网站是88端口,但是还是可以监听到数据,所以不必在意网站是88,软件监听的是8008的问题。因为在浏览器里任何数据都必须要经过8008,网站虽说是88端口,但是数据还要转到8008端口)。然后用软件看下有没有token的存在(你也可以用burp、fiddler等等)。

点击开始

我们在网站里输入账号和密码。

点击提交数据后,软件就会抓到数据包了。

下面4个是傲游浏览器发送的,把他们删除。第二个是跳转,我们也把他删除。

我们发现并没有找到token的值,那么我们就可以来实现CSRF攻击了。

看到下面的Report Type了么。这些是让你选择用什么方法来进行攻击。

Forms:创建一个form表单。内容为hidden(隐藏),用户不可见(可POST、GET)

iFrame:创建一个iframe框架,高宽为0,用户不可见。(可POST、GET)

IMG:创建一个IMG标签(只能GET)。

XHR:创建一个AJAX请求(可POST、GET)

Link:创建一个a标签的超链接(只能GET)

OK,介绍完了。但是呢,这五个里,我只推荐第一个。原因有下:

第二个容易找不到对象(如果你是新手,对JavaScript不熟的话,不建议选择这个)

第三个只能发送GET请求,有限制。

第四个有跨域限制,有的浏览器不允许发送跨域请求,除非网站有设置。

第五个需要点击才能触发(当然可以修改为自动触发),还有一个是他也只能发送GET请求。

Ok,我这时选择forms选项,他会生成一个HTML文件,而且会自动打开,如果不成功不要灰心,这个软件不是特别的完整,有些地方需要改进。不成功的话就打开HTML改下源码,参照浏览器的审查元素就行。

点击Generate HTML来生成,生成好后,把生成的index.html放到b.cn下。诱使管理员打开,管理员打开后,将会是这样:

成功了,我们在后台看下。

可以看到成功添加了。

我们可以把这个index.html放到自己服务器上,又是管理员打开,然后了管理员当时正在后台,或则管理员的session没有过期,你可以在网站留言板里吧网址写上去。就可以完成CSRF攻击了。

这里我不用上面这个软件,再完成一次攻击

我想入侵一个网站,得知这个网站使用的是XYCMS,于是我在网上把XYCMS源码下载下来,分析下。我发现在后台添加管理员的地方没有token验证,于是我就走上了构造带代码一路。

F12看下添加管理员的链接是什么

打开此链接就是添加管理员的地方。

Ctrl+U 看下源代码,把form标签里的内容全部复制下来,放到本地的html文件里。去掉没用的代码。就像下面这样:

OK,现在我们来改下,把action改成目标网站(a.cn),然后在input类型为text的地方,加上Value的值,这个值就是你要添加的管理员账号和密码,改后为:

我们打开测试下,看能不能添加管理员

点击“提交数据”

添加成功了,剩下的就是自动提交了,这里就要用到JavaScript了。

打开后,自动添加了。接下来就是让表单隐藏,我们加个style让form为隐藏就行了。像下面这样:

一个csrf网页就完成了,上传到b.cn,诱使管理员打开就行了。

进阶

相信细心的人已经发现上面是一个1.html文件,需要诱使管理员打开,而且他还有弹窗。太被动了,想用ajax来发送吧,又需要跨域。怎么办呢?这里我们可以结合XSS来完成攻击。

在之前XSS系列我说过一句话“XSS就是让对方执行你的JS代码”,聪明的人已经想到了,那就是把CSRF的AJAX请求放到XSS里,以达到攻击的效果,具体怎么做到呢,看完这一节,你就会了。

首先你要挖到一个XSS漏洞(反射、储蓄都行,当然储蓄更好。因为这个CMS特别小众,几乎没人用,所以在前年挖到这个漏洞时,就一直放那没动过)。找到一个储蓄型XSS,在根目录的add_book.asp文件里。

rs("title")=trim(request.form("title"))
rs("sh")=request.form("sh")
rs("ly_name")=trim(request.form("ly_name"))
rs("tel")=trim(request.form("tel"))
rs("email")=trim(request.form("email"))
rs("body")=trim(request.form("body"))

title留言标题  ly_name姓名  tel联系电话  email联系邮箱  body留言内容存在XSS(不想吐槽了)

OK,因为上一节已经说了添加管理员无认证的漏洞了,我也就不多说了。

提交的时候抓包下,然后根据数据包来写ajax代码(之所以没用那个软件来生成,是让大家更加深刻,同时也不要太依赖软件)

下面就是我自己写的一个ajax:

var xmlhttp;
if(window.XMLHttpRequest){
  xmlhttp=new XMLHttpRequest();
  }else{
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("POST","/admin/admin_manage.asp?act=add",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("admin=123&password=admin&password3=admin&button=提交数据");

生成好后,得到地址http://xss8.pw/0IrU5I?1420780331

OK,我们去留言板上插吧。

之所以没用全插,是因为这样做的话,管理员一打开就会多插几个账号。

管理员打开后的样子,这时候其实已经在后台添加了管理员。

深入

我之前在http://www.freebuf.com/articles/web/55505.html和http://www.freebuf.com/articles/web/54686.html谈到过插件安全。这里我教大家一个猥琐的CSRF技巧。

现在的我掌握了这个CMS的CSRF漏洞,我想让所有使用这个CMS的网站全部添加管理员怎么办呢?我们可以用插件。

首先建立一个ceshi目录,在里面建立一个def.json文件,内容如下:

然后我们在同目录下建立一个test.js文件,在里面写入下面这些代码:

for的存在是让他只运行一次,只不过因为这个是在插件里,当你打开一次页面他就会重新加载这个js。也就是说,如果管理员一直刷新页面,那么就会出现和刷新次数一样的账户,之所以加for是因为如果你不加,刷新一次会添加几个账户,而不是一个。

然后用MxPacker软件打包成maxthon插件,双击安装后,就会发现已经在后台添加了账户。

如果你账务了几个CMS的CSRF漏洞,那么你可以结合到一个插件里,价格if判断是哪个CMS就用哪段CSRF攻击代码。

注意

攻击者事先要知道对方使用的是哪个CMS。像那些自己写的,网上没有的程序。几乎不可能用CSRF来完成攻击。

XYCMS下载地址:http://pan.baidu.com/s/1qWJRZGS

CSRFTester下载地址:http://pan.baidu.com/s/1qWE2tIW

index.html源码下载:http://pan.baidu.com/s/1sjJkcrj

Index.js下载:http://pan.baidu.com/s/1jG3PoGm

遨游插件结合CSRF(包括了MxPacker):http://pan.baidu.com/s/1ntJso0T

[本文作者/ Black-Hole,属FreeBuf原创文章,未经许可禁止转载]

Black-Hole

Black-Hole19 篇文章等级: 6级
|
|
  • 上一篇:偷梁换柱:对一个可疑Payload的研究
  • 下一篇:Javascript间谍脚本分析:Web恶意程序Scanbox源码分析与演示

这些评论亮了

  • kyrios回复
    已经在本站从零开始学了好几次了,什么时候能从壹开始一次呢
    )65(亮了
  • ゛银 狼(1级)回复
    我说我的xss8.pw怎么数据越来越多了。。。。你一直在用?
    )17(亮了
  • Ra8er(1级)Keep Calm and Carry On.回复
    晚上给你肥皂,爱你
    )16(亮了
  • BigCat(1级)回复
    “如果你账务了几个CMS的CSRF漏洞,那么你可以结合到一个插件里,价格if判断是哪个CMS就用哪段CSRF攻击代码。”错别字啊,错别字。
    掌握…………………………加个
    )11(亮了
  • Jumbo(6级)论坛https://www.chinabaiker.com回复
    不错,由浅而入,循循渐进,期待更精彩的文章
    )8(亮了
发表评论

已有 69 条评论

  • JackFree (8级)冒个泡,表示我还关注着FB······ 2015-01-13回复1楼

    好文章,学习学习。

    亮了(4)
  • 亚特鲁 (1级) 2015-01-13回复2楼

    很不错,支持一下。有空学习了。

    亮了(5)
  • Ra8er (1级)Keep Calm and Carry On. 2015-01-13回复3楼

    黑洞加油~

    亮了(6)
  • Ra8er (1级)Keep Calm and Carry On. 2015-01-13回复4楼

    晚上给你肥皂,爱你

    亮了(16)
    • Black-Hole (6级)FreeBuf专栏作者 2015-01-13回复

      @ Ra8er  七度空间牌的么…

      亮了(7)
  • BigCat (1级) 2015-01-13回复5楼

    “如果你账务了几个CMS的CSRF漏洞,那么你可以结合到一个插件里,价格if判断是哪个CMS就用哪段CSRF攻击代码。”错别字啊,错别字。
    掌握…………………………加个

    亮了(11)
    • Black-Hole (6级)FreeBuf专栏作者 2015-01-13回复

      @ BigCat  字打太快…失误,能看懂就行…

      亮了(6)
  • Ra8er (1级)Keep Calm and Carry On. 2015-01-13回复6楼

    写得不错,,文笔出自黑洞之手,还是那个味道。csrf的科普类不算多,作为旁观者感觉适合初学者学习

    亮了(5)
  • Jumbo (6级)论坛https://www.chinabaiker.com 2015-01-13回复7楼

    不错,由浅而入,循循渐进,期待更精彩的文章

    亮了(8)
  • Ae4c (1级) 2015-01-13回复8楼

    不错,学习了

    亮了(6)
  • 温瞳 (1级) 2015-01-13回复9楼

    文章不凑,由浅入深,学习了

    亮了(4)
  • ゛银 狼 (1级) 2015-01-13回复10楼

    我说我的xss8.pw怎么数据越来越多了。。。。你一直在用?

    亮了(17)
    • Black-Hole (6级)FreeBuf专栏作者 2015-01-13回复

      @ ゛银 狼  测试的时候用了几次,其他时间也没在用了

      亮了(7)
  • Fiend520 (7级) 2015-01-13回复11楼

    写的不错,学习了。

    亮了(7)
  • Social (3级) 2015-01-13回复12楼

    Mark

    亮了(4)
  • peterceo (1级) 2015-01-13回复13楼

    牛,我 喜欢

    亮了(5)
  • 鸢尾 (8级)打码改变人生 2015-01-13回复14楼

    mark,谢谢分享

    亮了(3)
  • Social (3级) 2015-01-13回复15楼

    看完了 好赞

    亮了(5)
  • 土鳖 (1级) 2015-01-13回复16楼

    黑洞好帅

    亮了(5)
  • 铭记白白 (1级) 2015-01-13回复17楼

    学这个需要什么基础啊。

    亮了(4)
    • Black-Hole (6级)FreeBuf专栏作者 2015-01-13回复

      @ 铭记白白  基础的html css js ajax。抓包 改包 分析。熟悉同源策略

      亮了(7)
  • zglzone (1级) 2015-01-13回复18楼

    原理介绍如果有个示意图就更给力,现在乍一看晕了

    亮了(3)
  • Gr4yTrack 2015-01-13回复19楼

    好文

    亮了(3)
  • nilin (4级) 2015-01-13回复20楼

    好文,学习了

    亮了(1)
  • 夜尽天明 (5级)千秋邈矣独留我,百战归来再读书 2015-01-13回复21楼

    我有个问题。如果是XSS漏洞,管理员触发我们的XSS代码后我们对应的平台会收到cookie信息,也就是说会有提醒说管理上钩了,可是,楼主你说的这个的话,怎么知道管理是否中招?总不能天天去尝试登陆我们构造的账号吧

    亮了(2)
    • Black-Hole (6级)FreeBuf专栏作者 2015-01-13回复

      是我的疏忽,在xss平台配置下,让他反馈当前的url就行了

      亮了(1)
  • Vim0x3c (1级)资深屌丝,第十八届青少年花式撸管大赛亚军,第三十二届花样作死... 2015-01-13回复22楼

    有了这个 妈妈在也不怕我学不会CSRF攻击了

    亮了(1)
  • 破晓 (2级)PoxTeam : http://www.secbug.or... 2015-01-13回复23楼

    还是XSS+CSRF的应用,就跟XSS GetSHELL一样,单纯的CSRF渗透有时候拼的是RP。。

    亮了(3)
  • see 2015-01-13回复24楼

    好文,good

    亮了(2)
  • chenyoufu123 (4级)upyun 安全 2015-01-13回复25楼

    不错不错

    亮了(1)
  • Nic_huu 2015-01-13回复26楼

    可以加点破token的么

    亮了(0)
  • 栋栋同學li 2015-01-13回复27楼

    码那么字,佩服

    亮了(0)
  • _Black-Hole_ 2015-01-13回复28楼

    3000字符…

    亮了(0)
  • 栋栋同學li 2015-01-13回复29楼

    就是说呀.. 佩服

    亮了(0)
  • 憨厚的王小胖 2015-01-13回复30楼

    看到了呀,谢谢提醒

    亮了(0)
  • Arctic丶z 2015-01-13回复31楼

    转发微博

    亮了(0)
  • 孤独男孩 (1级) 2015-01-14回复32楼

    学习了。谢谢

    亮了(1)
  • ISME (2级) 2015-01-14回复33楼

    真正踏实写教程的任不多啊,骚年,加油!

    亮了(1)
  • cainiao 2015-01-14回复34楼

    我晕,xss难道只是获取cookies吗?xss操作实现可以是攻击者,也可以是管理员自己,csrf是网站没有对请求来源做检测,在登录A站的情况下,点击了来自B站构造的请求,从而导致代码执行。我看楼主根本不懂xss与csrf区别。

    亮了(1)
    • Black-Hole (6级)FreeBuf专栏作者 2015-01-14回复

      @ cainiao 元芳,我没说xss只能打cookies。登A点B,我上面有说,可以用img a 来发送get请求。也可以用form iframe来发送post请求。至于xhr有一定的局限性。我欢迎你提出意见,但有时注意下措辞会更好。

      亮了(3)
      • cainiao 2015-01-14回复

        @ Black-Hole  楼主你要注意技术文章的严谨性,文中账务与价格是怎么回事?

        亮了(2)
  • 安服 (1级) 2015-01-14回复35楼

    :mrgreen:

    亮了(2)
  • kyrios 2015-01-14回复36楼

    已经在本站从零开始学了好几次了,什么时候能从壹开始一次呢

    亮了(65)
  • 凹凸 (1级) 2015-01-14回复37楼

    先mark,再慢慢学习

    亮了(2)
  • cssec (1级) 2015-01-14回复38楼

    楼主抢了我的金币!

    亮了(2)
  • handsometian (1级) 2015-01-14回复39楼

    这个原理讲的很清楚,真的是从0开始。学习了。

    亮了(1)
  • 羞羞 2015-01-14回复40楼

    恩,挺好的,要是能讲讲负数就更好了

    亮了(2)
  • lnterface (2级) 2015-01-14回复41楼

    好文章!!

    亮了(1)
  • 虾米 2015-01-15回复42楼

    百度了一下“如果你账务了几个CMS的CSRF漏洞,那么你可以结合到一个插件里” 结果你懂得。

    亮了(0)
  • 藤真 (2级)欢迎访问独自等待博客 http://www.waitalon... 2015-01-20回复43楼

    文章不错。。

    亮了(0)
  • paidir (1级) 2015-01-21回复44楼

    怎一个赞字了得,不错

    亮了(0)
  • lyplwz (1级) 2015-01-28回复45楼

    文章不错,写得我这等小菜也基本懂了。。

    亮了(0)
  • 猫友 (3级)上海云梦信息科技有限公司创始人 2015-01-29回复46楼

    mark

    亮了(0)
  • macctown (1级)IA初学者 2015-01-30回复47楼

    很有帮助~啥时候再讲讲防御。。

    亮了(1)
  • weiwei1 (1级) 2015-03-10回复48楼

    大哥啊,在我本上怎么不能用CSRFTester工具啊,,,

    亮了(0)
  • weiwei1 (1级) 2015-03-10回复49楼

    选择post之后黑窗体报java.lang.ArrayIndexOutOfBoundsException

    亮了(0)
    • Black-Hole (6级)FreeBuf专栏作者 2015-04-17回复

      @ weiwei1  java环境没安装成功吧,有图么

      亮了(0)
      • Cancer 2015-11-18回复

        @ Black-Hole  楼主是雷锋

        亮了(0)
    • 权腾蛟 2015-08-23回复

      @ weiwei1  数组越界异常

      亮了(0)
  • unicode_abc (1级) 2015-10-23回复50楼

    能问一个问题吗?为什么如果不加这个for循环,就会刷新一次插入好几次呢,然道没有加for循环,这段代码也执行好几次吗??谢谢了~~

    亮了(2)
1 2 下一页

必须您当前尚未登录。登陆?注册

必须(保密)

表情插图

取消

Black-Hole

Black-Hole

FreeBuf专栏作者

19 篇文章149 条评论

相关阅读

  • 利用Window.Opener绕过CSRF保护
  • 新手指南:DVWA-1.9全级别教程之CSRF
  • 利用csrf漏洞上传文件
  • 说说“史上最大规模的DNS劫持”
  • 漏洞科普:对于XSS和CSRF你究竟了解多少

特别推荐

关注我们 分享每日精选文章

不容错过

  • Bash破壳漏洞(ShellShock)再变身:针对邮件服务器SMTP攻击凌晨几度i2014-10-29
  • 热门游戏《英雄联盟》再曝漏洞:黑客可访问玩家账户盗取点券和金币鸢尾2015-02-04
  • StringBleed:SNMP协议“上帝模式”漏洞影响多种网络设备clouds2017-05-01
  • 腐烂的苹果:对一大波iCloud钓鱼网站的监测与分析欧阳洋葱2016-06-10

FREEBUF

  • 免责声明
  • 关于我们
  • 加入我们

广告及服务

  • 寻求报道
  • 广告合作
  • 联系我们
  • 友情链接

关注我们

  • 官方微信
  • 新浪微博
  • 腾讯微博
  • Twitter

赞助商

Copyright © 2013 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号

css.php

正在加载中...

0day

标签: 暂无
最后更新:2017年5月21日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me