您现在的位置是:首页 > 学无止境 > Web网站首页Web CSRF(跨站请求伪造)-DVWA
CSRF(跨站请求伪造)-DVWA
- Web
- 2019-06-05
简介CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。字数
982.5
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
一、进入DVWA测试系统。
选择左侧CSRF(跨站请求伪造)菜单,内容页显示为:
CSRF(跨站请求伪造)内容页
CSRF实验(Low级别)代码分析:
后台的源程序(目录:安装目录\vulnerabilities\csrf\source\low.php)
如下:
在实验以前,请初步分析源代码存在的问题。现在我们来做实验看看
二、步骤:
2.1 CSRF(Low 级别)
a) 利用抓包工具的代理功能抓取修改密码的中间数据
进一步分析:
b)请试一试将上面密码修改成222,然后点击forword按钮,看看效果。重新访问系统,输入URL:
http://www.dvwa.com/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#
再看看效果。
请思考这样的漏洞带来了什么问题。
思考解答:攻击者可以利用这种漏洞,诱导用户去访问链接达到攻击目的
是否可以将链接嵌入到一个钓鱼页面上,尤其是色图,小说等,然后让别人去点击。如准备一个钓鱼网页,在页面里嵌入代码:
<img src="http://www.dvwa.com/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#
" border="0" style="display:none;"/>
请完成:
(1)请将文件夹Low放置安装文件夹下,然后再登录DVWA,并保持安全级别为Low的情况下,用同一个浏览器访问http://www.dvwa.com/low/1.html ,然后退出DVWA测试系统,再用原来的密码试一试,如果不行,请再试试在1.html文件中的密码试一试。
我们发现进去后是这样的
然后我们再退出登陆,发现使用自己的密码登陆不上去
思考:通过查看源码,我们发现了1.html代码里面隐藏了一个图片。由于浏览器在加载图片资源的时候,要先去访问该URL,所以就运行了一次。
(2)用2个浏览器,一个浏览器打开DVWA并保持登录,设置为Low安全级别,然后用第二个浏览器访问1.html网站,看看能否修改DVWA的密码。
不能!
(3)经过(1)和(2),请归纳总结CSRF的原理,如果能用阿里云测试最佳,或者用2个虚拟机测试也可以。
我们分析源代码,发现需要用到本地的session来验证。
2.2 CSRF(Medium 级别)
a) 利用BurpSuite工具的代理功能抓取修改密码的中间数据
可以看到,Medium级别的代码检查了保留变量 HTTP_REFERER(http包头的Referer参数的值,表示来源地址)中是否包含SERVER_NAME(http包头的Host参数,表示要访问的主机名,这里是www.dvwa.com),希望通过这种机制抵御CSRF攻击
b)自行了解HTTP请求头相关信息。
c) 尝试将1.html文件名改为www.dvwa.com.html,然后再次执行看看效果,将1.html文件放到其他的服务器上试一试。(该实验室看不出感觉来,建议将素材的两个文件部署到阿里云或者使用旁边朋友服务器试一试。)
我直接输入的地址,发现有错,他没给出来源。
所以后面我直接先访问文件夹
成功!
d)分析源代码
分析并思考
2.3 CSRF(High 级别)
a) 利用BurpSuite工具的代理功能抓取修改密码的中间数据
从上面可以看到,增加了user_token,通过查看源代码也能发现这点。
绕过思路:问题关键在于动态获取token。
源码:
函数,产生函数也在下图
使用md5( uniqid() ) uniqid函数产生ID然后MD5一下。由于技术有限,我无法完成绕过~
2.4 CSRF(Impassible 级别)
该级别基本上没法攻破,请通过查看它的源代码,总结其防御方法。
通过图片得知,改密码需要旧密码,所以这步就直接将攻击者拒绝门外了!
转载:
感谢您对莫愁个人博客网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源莫愁个人博客 https://www.mochoublog.com/study/246.html”。
- Web
- 2019-06-05
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
一、进入DVWA测试系统。
选择左侧CSRF(跨站请求伪造)菜单,内容页显示为:
CSRF(跨站请求伪造)内容页
CSRF实验(Low级别)代码分析:
后台的源程序(目录:安装目录\vulnerabilities\csrf\source\low.php)
如下:
在实验以前,请初步分析源代码存在的问题。现在我们来做实验看看
二、步骤:
2.1 CSRF(Low 级别)
a) 利用抓包工具的代理功能抓取修改密码的中间数据
进一步分析:
b)请试一试将上面密码修改成222,然后点击forword按钮,看看效果。重新访问系统,输入URL:
http://www.dvwa.com/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#
再看看效果。
请思考这样的漏洞带来了什么问题。
思考解答:攻击者可以利用这种漏洞,诱导用户去访问链接达到攻击目的
是否可以将链接嵌入到一个钓鱼页面上,尤其是色图,小说等,然后让别人去点击。如准备一个钓鱼网页,在页面里嵌入代码:
<img src="http://www.dvwa.com/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#
" border="0" style="display:none;"/>
请完成:
(1)请将文件夹Low放置安装文件夹下,然后再登录DVWA,并保持安全级别为Low的情况下,用同一个浏览器访问http://www.dvwa.com/low/1.html ,然后退出DVWA测试系统,再用原来的密码试一试,如果不行,请再试试在1.html文件中的密码试一试。
我们发现进去后是这样的
然后我们再退出登陆,发现使用自己的密码登陆不上去
思考:通过查看源码,我们发现了1.html代码里面隐藏了一个图片。由于浏览器在加载图片资源的时候,要先去访问该URL,所以就运行了一次。
(2)用2个浏览器,一个浏览器打开DVWA并保持登录,设置为Low安全级别,然后用第二个浏览器访问1.html网站,看看能否修改DVWA的密码。
不能!
(3)经过(1)和(2),请归纳总结CSRF的原理,如果能用阿里云测试最佳,或者用2个虚拟机测试也可以。
我们分析源代码,发现需要用到本地的session来验证。
2.2 CSRF(Medium 级别)
a) 利用BurpSuite工具的代理功能抓取修改密码的中间数据
可以看到,Medium级别的代码检查了保留变量 HTTP_REFERER(http包头的Referer参数的值,表示来源地址)中是否包含SERVER_NAME(http包头的Host参数,表示要访问的主机名,这里是www.dvwa.com),希望通过这种机制抵御CSRF攻击
b)自行了解HTTP请求头相关信息。
c) 尝试将1.html文件名改为www.dvwa.com.html,然后再次执行看看效果,将1.html文件放到其他的服务器上试一试。(该实验室看不出感觉来,建议将素材的两个文件部署到阿里云或者使用旁边朋友服务器试一试。)
我直接输入的地址,发现有错,他没给出来源。
所以后面我直接先访问文件夹
成功!
d)分析源代码
分析并思考
2.3 CSRF(High 级别)
a) 利用BurpSuite工具的代理功能抓取修改密码的中间数据
从上面可以看到,增加了user_token,通过查看源代码也能发现这点。
绕过思路:问题关键在于动态获取token。
源码:
函数,产生函数也在下图
使用md5( uniqid() ) uniqid函数产生ID然后MD5一下。由于技术有限,我无法完成绕过~
2.4 CSRF(Impassible 级别)
该级别基本上没法攻破,请通过查看它的源代码,总结其防御方法。
通过图片得知,改密码需要旧密码,所以这步就直接将攻击者拒绝门外了!
转载: 感谢您对莫愁个人博客网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源莫愁个人博客 https://www.mochoublog.com/study/246.html”。
下一篇:DoS攻击与DDoS攻击区别