Generate CSRF PoC 伪造跨站请求漏洞利用产生

今天要介绍的一种骇客攻击手法「伪造跨站请求」,
英文Cross-site request forgery,通常缩写CSRF,
也被称为 one-click attack 或者 session riding 攻击。
这种攻击是让使用者在浏览器已登入的状态下去执行非本意的操作的攻击方法。
其实有些人会把XSS与CSRF搞混,重点就是要记得:
XSS 利用的是使用者对指定网站的信任;
CSRF 利用的是网站对使用者网页浏览器的信任。

关於这项攻击的细节大致如下:
攻击者通过一些技术手段欺骗使用者的
让浏览器去访问一个自己曾经认证过的网站并执行一些操作
(如新增删除项目,转帐或是买东西)。
由於浏览器曾经认证过这个网站,
所以被访问的网站会认为使用者是真的想执行这个操作。
这利用了WEB中身份验证的一个漏洞,
就是身份验证只能确保请求来自某个特定的浏览器,
却不能保证这个请求是使用者自愿发出的。

如果看完以上还是不懂的话,
让我们直接用下面的例子来说明吧!
同时也会用到我们今天的功能!!!
(不过必须先对部分人说抱歉,这个功能只有专业版才能使用XD)

首先我们登入靶机DVWA,这边必须要先有个基本的知识点,
登入时我们其实就有得到了一个session cookie,
我们在登入後浏览这个DVWA,而网站仍能知道我们在登入状态,
靠的就是这个session cookie。

我们把难度调成low,接着到CSRF这个漏洞项目,
这边是一个变更密码的功能,
我们开启Burp,拦截一下这个功能按下Change的请求内容,
我输入abc123456按下Change之後,
可以发现拦截到的请求是使用GET传递表单的参数与值,
并且可以从cookie中看到请求送出的时候会带着session cookie。

https://ithelp.ithome.com.tw/upload/images/20201008/2011411043ioTroxLJ.png

https://ithelp.ithome.com.tw/upload/images/20201008/20114110QKU07G4Sbv.png

https://ithelp.ithome.com.tw/upload/images/20201008/20114110pSns1tK25k.png

我们先把这个请求Drop掉,先不变更我们的密码,
回到CSRF的页面按下F12开发人员选项观察一下,
可以看得出来会使用GET发送这一段请求,
是因为HTML中的from action...这一段程序码,
所以假设今天有一个网站,做了一个功能,
这个功能可以送出同样的表单,并且是送到DVWA的这个网站,
这样恶意的攻击者,是不是创造一个功能,伪造一个请求了呢?
没错的!就是这样。

https://ithelp.ithome.com.tw/upload/images/20201008/20114110jSSTv1NBB4.png

https://ithelp.ithome.com.tw/upload/images/20201008/201141104U6AAO8yG6.png

我们再一次拦截这个变更密码的功能,
接着就是我们今天的主角了!
我们对这个请求点选右键,
按下Engagement tools -> Generate CSRF PoC,
这时候就会Burp就会帮我们产生一段CSRF的验证程序码,
也就是说当我们按下这个功能的时候,
会针对这个网站发送一个一样的请求功能。

https://ithelp.ithome.com.tw/upload/images/20201008/20114110RtKObf1pMA.png

https://ithelp.ithome.com.tw/upload/images/20201008/201141104K5igztvNZ.png

https://ithelp.ithome.com.tw/upload/images/20201008/201141106k282pDWG5.png

所以我们把这段程序码复制下来,
贴到我们的文字编辑器上面,然後存成HTML的档案,
用浏览器打开这个页面,记得一件重要的事情!
开启的浏览器必须是有登入DVWA的那个浏览器,
我们可以看到有一个按钮,
当我们按下按钮的时候,可以用Burp拦截观察到,
它发送了一个与刚刚我们在DVWA变更密码功能中一样的请求
(有带着参数与session cookie),
所以这个也就是所谓的伪造跨站的请求,
我们将这个请求给放行让他通过,
可以看到因为这个网站存在CSRF漏洞,所以我们的密码就成功了!

https://ithelp.ithome.com.tw/upload/images/20201008/201141102vTqNnCXq4.png

https://ithelp.ithome.com.tw/upload/images/20201008/201141104zUBrspGy2.png

https://ithelp.ithome.com.tw/upload/images/20201008/20114110zbjZ8TLRUH.png

https://ithelp.ithome.com.tw/upload/images/20201008/20114110wqiIRjOX23.png

今天的介绍就到这边啦~
伪造跨站请求对於新手来说其实是比较不好理解的漏洞,
可以的话最好是动手实作才可以更加透彻的了解!

然後虽然Burp的专业版有Generate CSRF PoC,
这个不错的功能阿,但实际上真的了解漏洞的话,
手动去构造PoC应该是要没问题的才行,
建议偶尔还是得自己手动构造PoC,或是至少有尝试成功过。


<<:  [Kata] Clojure - Day 29

>>:  Day28 语法改革!零基础新手也能读懂的JS - JS30-16 Mouse Move Shadow

30-22 之 Remote Facade

接下来这篇文章我们将要谈谈《 Patterns of Enterprise Application ...

CSS animation

前言 CSS可用来制作简单的动画,效能会比JS好很多。 属性 animation-delay 设定动...

认识HTML(四):加入图片

在HTML文件中加入图片,可以在想置入图片的地方使用img标签。 <img>是单一元素,它不用开头和...

网页框架比一比-30天学会HTML+CSS,制作精美网站

介绍完如何制作响应式网站後,当然也会想说有没有更快速的框架可以使用,所以今天就要来介绍目前最多人使用...

30天轻松学会unity自制游戏-让Player动起来

按照之前的进度制作,现在按下▶Player应该会魔性地扭动起来,但就没有其他效果了,接下来就改造Pl...