CSRF漏洞学习记录

本文仅作学习记录,如有侵权,请联系删除!

一、CSRF漏洞介绍

漏洞原理:

CSRF跨站请求伪造是一种伪造受害者的请求以达成某种目的的攻击手法,可以理解为hacker像操控木偶一样让受害者做各种敏感操作,以受害者的名义修改个人信息、添加管理员、重置密码等。

危害:

导致用户、管理员信息泄露;

修改用户、管理员账户安全设置;

盗取用户、管理员账号;

欺骗用户进行危险操作;

CSRF蠕虫;

与XSS漏洞结合提高漏洞危害。(比如我在存在XSS漏洞的网站发送恶意XSS代码获取cookie,xss平台接收到cookie后配合CSRF漏洞直接通过get的方式请求更改数据。)

CSRF蠕虫:

如某个社交网站存在CSRF蠕虫,某个用户查看恶意页面后,会向所有好友发送短信,短信内容包含该恶意页面。好友点击访问,又将其发送给其好友,就这样不断的传播下去。


CSRF攻击前提:

(1)网站存在CSRF漏洞;

(2)用户登录网站,生成cookie;

(3)用户在不登出网站的前提下,访问恶意站点。

CSRF与XSS的不同:

(1)XSS利用的是用户对指定网站的信任;

CSRF利用的是网站对用户网页浏览器的信任;

(2)XSS攻击过程:

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

CSRF攻击过程:

hacker发现CSRF漏洞—构造代码发送给受害者—受害者打开的同时执行了恶意代码—完成攻击

(3)XSS容易被发现,管理员可以查看日志发现攻击者;

CSRF的攻击是管理员自己实现的,攻击者只负责构造了代码。

CSRF分类:

CSRF本质就是伪造一个HTTP请求,常见的也就GET、POST:

所以:

CSRF分为GET型和POST型。

get型参数在URL后,post型需要表单等提交。

二、CSRF漏洞挖掘

再理一下如何利用CSRF漏洞?

(1)hacker构造一个某网站(如:www.aaa.com)的恶意POC(如修改密码功能的POC、支付订单功能的POC、添加管理员功能的POC),在这里我以添加管理员为例,

即hacker构造了www.aaa.com网站添加管理员功能的恶意代码,代码的作用是在获取网站www.aaa.com的cookie后自动执行添加管理员账号操作;

(2)受害者已经登录了网站www.aaa.com并生成了cookie;

(3)此时hacker发送给受害者他构造的POC,受害者点击后,因为浏览器上存储的有受害者登录www.aaa.com的cookie,网站成功执行添加管理员操作!

CSRF的核心在于跨域+伪造数据包。

(1)跨域:服务端对HTTP请求头Referer字段进行检查;

HTTP Referer是header的一部分,当浏览器向Web服务器发送请求的时候,一般会带上      Referer,告诉服务器我是从哪个页面链接过来的。

但是Referer也可以绕过。

如果服务器通过判断Referer字段判断是否存在网站关键词(如target.com),那我们可以通过在网站(或者vps)中建立一个target.com目录,再把CSRF利用页面放在该目录下;

如果服务器是判断Referer字段是否存在某域名以及子域名,并没有验证根域名为target.com,所以可以构造子域名target.com.evil.com来进行绕过;

如果后端对请求类型判断不严格,可以修改post请求为get请求,直接通过URL引导受害者访问恶意链接即可;

尝试无referer是否可以请求成功。

(2)伪造数据包:通过burp的Generate CSRF poc模块。

         CSRF伪造核心:请求中的所有参数都可以事先预测。

无法伪造请求的特殊情况:

网站不使用cookie进行验证,而是添加Authorization请求头来识别用户,比如basic认证、digest认证等。

敏感请求添加了难以猜解的字段。比如重置密码时需要验证的原密码;修改个人配置信息时需要输入图形验证码;添加管理员时在URL中加入随机校验值:token、sign等。hacker如果无法事先获取到这类校验值,请求就会失败。

三、CSRF漏洞案例

挖掘技巧:

(1)对目标敏感部位抓包分析,比如修改信息、转账、添加信息等等。

(2)通常一个数据包HTTP请求头里面都会有一个referer,

没有的话直接测试CSRF漏洞(burp抓取功能点数据包再右键—》Engagement Tools—》Generate CSRF POC去验证);

有的话,去掉referer字段,看结果是否有变化。如果没变化意味着这里服务器端未对Referer进行验证验证,那就可以使用burp的Generate CSRF POC去验证了。

小tips:在用户进行数据增删改的地方,很容易出CSRF漏洞。

案例一:

某CMS存在CSRF漏洞,管理员在登录网站后,可以进入到“系统”-“网络管理员”-“添加管理员”中,进行添加管理员操作。


使用burp在添加管理员这步抓包,然后右键找到Generate CSRF poc,生成一个CSRF poc:


点击Test in browser,copy网址到浏览器,点击Submit request按钮显示添加管理员成功:


案例二:

某网站个人信息处存在CSRF漏洞,用户可以通过此漏洞修改性别信息。

网页如下:


可以看到,个人信息性别为男,结合burp的Generate CSRF poc模块,我们利用CSRF漏洞修改性别“男”为“女”。

点击性别修改功能抓取数据包,然后右键点击Generate CSRF poc,生成一个CSRF poc,再把修改性别的包丢弃,copy burp生成的网址到浏览器,点击按钮,显示资料修改成功。


再次访问网页,发现性别修改成功:


你可能感兴趣的:(CSRF漏洞学习记录)