CSRF的概念
CSRF:跨站请求伪造(Cross-site request forgery)CSRF是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。当用户访问含有恶意代码的网页时,会向指定正常网站发送非本人意愿的数据请求包(如转账给hack,向hack发送API等)如果此时用户恰好登录了该正常网站(也就是身份验证是正常的)就会执行该恶意代码的请求,从而造成CSRF。
与在XSS章节中提到的在博客里写入获取cookie的代码,在管理员登录后台查看时就会窃取其cookie有异曲同工之妙。跟跨网站脚本(XSS)相比,CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。
CSRF与XSS两者区别
pikachu靶场试验CSRF模块里登录进去抓个包看看"修改个人信息"的请求包 理论上来说 如果攻击者在自己的页面伪造了含有这个请求包的代码,一旦用户上钩点进恶意网站且pikachu属于登录状态就会触发CSRF漏洞
1)win10:pikachu靶场(模拟正常登录网站)【IP:192.168.168.1】
抓包查看请求数据包
这里是以GET方式请求 并将需要修改的数据传给服务器
ps:这里出现了Cookie,如果利用XSS漏洞在页面上插入并将Cookie发送给攻击者,那么攻击者会有机会直接登录用户的账号
2)win7:攻击者的恶意网站 【IP:192.168.168.128】
index.html
3)用户访问攻击者恶意网站且pikachu是登录状态
可以看到 用户如果没有查看将会无感的向攻击者指定的网站发送非本人的请求
且会发现该请求带上了正确的Cookie(对网站来说视为其本人发起了一个请求且通过了Cookie验证)
4)返回页面查看,发现信息已被篡改
小Tips:
如果遇到了POST型,则需要构造一个表单提交按钮欺骗用户点击
PS:超星尔雅学习通同样存在这样的CSRF,手法与该靶场演示手法类似,在校期间和同学进行实验点击链接后就可以更改其性别手机号等(当时戏称一键泰国变性XD)提交后对方以未对敏感数据造成影响打回了目前尚未修复,感兴趣的小伙伴可以自行尝试,手法及其相同,这里就不赘述了。
#CSRF防御方案
1)当用户发送重要的请求时需要输入原始密码。这样限制攻击者无法在完全无感的情况下执行CSRF,用户也会因此警觉
2)设置随机Token。Token:给用户第一次登录时设定的唯一值(且足够随机),在作出请求的时候必须携带这个Token才会生效,一方面减少了重复请求量,一方面也避免了大部分CSRF攻击
3)同源策略,检验 referer 来源。请求时判断请求链接是否为当前管理员正在使用的页面(管理员在编辑文章,黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4)设置验证码
5)限制请求方式只能为POST
SSRF的概念
SSRF:服务器端请求伪造(Server-Side Request Forgery)
SSRF是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。SSRF攻击的目标一般是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统) SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。利用的是服务端的请求伪造。ssrf是利用存在缺陷的web应用作为代理攻击远程和本地的服务器
常见漏洞点与关键字
漏洞挖掘时可以参考这些点入手
WEB功能上: 1)分享:通过URL地址分享网页内容 2)转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览 3)在线翻译:通过URL地址翻译对应文本内容 如:百度,有道 4)图片加载与下载:通过URL地址加载与下载图片 5)图片 文章收藏功能 6)未公开的API实现以及其他调用URL的功能 URL中的关键字:【结合谷歌语法找到入手点】 share wap url link src source target u 3g display sourceURL imageURL domain
实例演示自己搭建的测试环境
靶机:win7 (192.168.56.128)攻击机:win10 (192.168.56.1)
1)首先在靶机里部署一个页面模拟一个访问网站的业务(类似于翻译网页的网站 给出一个网站后它会主动去访问并翻译内容返回)再放置一个文件方便看来源
ipindex.php
1.php (用于看访问它的IP是多少)
(1)在攻击机访问靶机的ipindex.php
图示点击后就会跳转到百度这个页面(这里为了方便仅有跳转功能 真实环境的翻译等等没有做)
(2)在攻击机访问靶机的1.php
(3)在靶机的ipindex.php 里访问1.php文件
回显的IP地址是192.168.56.128,也就是靶机的IP地址,说明SSRF漏洞让攻击者以内部网络身份访问文件(也就是说这样可以让我们访问一些原本不允许外网访问的文件) 通过SSRF漏洞访问了内网资源
直接访问靶机的MySQL是不允许的
通过ipindex.php访问
各个协议调用探针:http,file,dict,ftp,gopher 等
漏洞攻击:端口扫描,指纹识别,漏洞利用,内网探针等
http://192.168.64.144/phpmyadmin/
file:///D:/www.txt
dict://192.168.64.144:3306/info
ftp://192.168.64.144:21