CSRF原理和实战利用 – 作者:zhijian

1 CSRF漏洞介绍

说明:由于最近一个月出差比较忙,所以没有更新,给大家带来不便请谅解。

CSRF(Cross-Site Request Forgery,跨站请求伪造),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF .它是一种常见的 Web攻击方式。是一种劫持用户在当前已登录的Web应用程序上执行非本意操作一种攻击.

说的直白一点就是:别人盗用(劫持)你的身份去做坏事.

(1)别人-->这里指的是攻击者
(2)你---->A站(web服务器)上注册的合法用户(客户端)
(3)做坏事--->去请求合法站点A(比如web服务器)存在CSRF攻击的URL,实现类似发送恶意邮件/转账/创建账户/修改密码等"你不希望执行"操作.

危害

以用户的名义发邮件/发消息

转换/购买商品等;

修改密码;

删除文章等

2 CSRF漏洞的原理

CSRF漏洞产生的原因

(1)http协议使用session在服务端保存用户的个人信息,客户端浏览器用cookie标识用户身份;

(2)cookie的认证只能确保是某个用户发送的请求,但是不能保证这个请求是否是”用户自愿的行为”.

(3)这时,用户登录了某个web站点,同时点击了包含CSRF恶意代码的URL,就会触发CSRF

漏洞利用的条件

(1)用户必须登录A网站,生成了cookie

(2)登录的同时访问了恶意URL(包含CSRF恶意代码的URL).

原理图图片[1]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

CSRF和XSS的不同

(1)XSS主要用户获取用户的cookie信息,达到控制客户端的目的

XSS—->把你的腰牌(用户身份象征也就是cookie)偷到手,黑客自己去搞破坏.

CSRF主要是劫持用户身份,让客户端做一些不愿意做的事.

CSRF—->拿刀劫持你,”借助你的身份”来帮黑客做事.

(2)危害上来说,XSS更大;

(3)从应用难度上来说

CSRF需要满足登录某网站的状态,同时访问了恶意的URL,应用条件比较苛刻.

XSS只要一次点击或者存储到服务器即可.

3 CSRF之GET型代码分析

根据CSRF请求方式不同,分为GET型和POST型.

GET型CSRF代码举例

图片[2]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

图片[3]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

问题:

(1)但是URL直接写用户名和密码的方式太过于明显,我们可以通过访问页面的方式进行伪装;

(2)或者通过XSS页面,直接把这个恶意URL链接发给客户端,在客户登录页面的同时访问这个恶意URL,也可以创建用户;

(3)通过伪造页面诱导客户点击

图片[4]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[5]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

4 CSRF之POST型代码分析

1.POST型CSRF举例

(1)有人说,GET方式容易出现CSRF攻击,那用post是不是就可以万无一失呢?
(2)当然不是,因为post只是提交的方式改变了,如果原始页面还是存在CSRF漏洞,我们自己创建一个POST页面来模拟用户提交数据,还是可以进行利用的

(3)post_csrf.php用来模拟存在csrf漏洞的web页面,代码如下:

图片[6]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

(4)页面显示如下:

图片[7]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

post型需要黑客自己来构造表单提交的参数
为了不易发现,提交表单的数据都直接隐藏hidden;
post.html代码如下:
图片[8]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

图片[9]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[10]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

5 DVWA中CSRF利用实战

挖掘CSRF的方法:

(1)使用burp抓包后修改Referer字段再重新提交,如果能请求就存在CSRF漏洞.

(2)其他CSRF工具,比如

CSRFTester就是通过抓取提交参数;

修改表单信息,重新提交;—–>伪造客户端请求

重新提交成功就存在CSRF漏洞.

DVWA中low级别CSRF:没有对输入做过滤,而且也没有原密码认证图片[11]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[12]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

DVWA中medium级别CSRF : 对Referer进行了检查图片[13]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[14]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

DVWA中medium级别CSRF : 对token进行了检查

(1)说明: 这里做了token防御,token会根据每次请求生成不同的随机值,从一定程度防止CSRF.

(2)但是这里的token以get方式提交,就不安全了,可以让黑客轻易获取。

(3)所以一般网站会放到cookie中,并且设置cookie为http-only,不能通过JS读取,既能防止XSS,又能防止CSRF.

(4)说明:不过这里绕过token的时候还是有一个小的注意点—>用burp抓取的第一个包要丢弃,否则一旦被提交,这个token也会失效.

图片[15]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

图片[16]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[17]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[18]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

6 Discuz脱库

Discuz安装:在www目录下创建Discuz2.5文件夹,下载Discuz2.5软件并解压,把加压后的文件放到该文件夹下.图片[19]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

根据需求修改连接数据库的信息,指定数据库IP,登录数据的用户名和密码.

我这里是本地安装,用户名和密码都是root,所以不用修改.图片[20]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

图片[21]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

在浏览器访问URL,并进行安装图片[22]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[23]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[24]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[25]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[26]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

admin登录后台,获取正确备份的URL图片[27]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[28]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[29]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[30]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

两个备份文件的URL格式如下:

http://localhost/discuz2.5/upload/uc_server/admin.php?m=db&a=operate&t=export&appid=0&backupdir=backup_200812_6lYm0Qhttp://localhost/discuz2.5/upload/uc_server/admin.php?m=db&a=operate&t=export&appid=1&backupdir=backup_200812_6lYm0Q

为了实验更加明显,我们进入对应的备份目录,把之前的备份文件删除.

这是我的路径,供大家参考

D:\phpStudy\PHPTutorial\WWW\Discuz2.5\upload\data\backup_200812_6lYm0Q

图片[31]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

注册一个普通用户,发布一个帖子; 并在帖子链接中插入之前获取的备份URL

http://192.168.10.1/discuz2.5/upload/uc_server/admin.php?m=db&a=operate&t=export&appid=0&backupdir=backup_200812_6lYm0Q%26backupfilename%3Dbbb(为了方便区分,我们给它一个文件名)图片[32]-CSRF原理和实战利用 – 作者:zhijian-安全小百科图片[33]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

结果:图片[34]-CSRF原理和实战利用 – 作者:zhijian-安全小百科

说明:这里用的是Discuz2.5版本,这个版本对备份做了优化,比如创建一个随机文件夹,多个请求URL等。有时候可能不成功,需要多测试几次——一定要注意随机文件夹会过几分钟就会改变。其实用Discuz1.5版本更容易成功,但是用的很少了。

8 CSRF漏洞防御

除了用户名和密码,添加验证码进行保护;

http头中使用referer字段

http头中使用token

修改密码时,需要原密码;

添加验证码字段

对客户来讲,不要点击来历不明的链接或图片;养成定时退出的好习惯;安装安全防护软件等

来源:freebuf.com 2020-08-25 16:58:39 by: zhijian

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论