CSRF(跨站请求伪造)和SSRF(服务端请求伪造)

CSRF(跨站请求伪造)

CSRF是利用了服务端对客户端的信任,是一种挟制用户在当前已登录的web应用程序上执行非本意操作的攻击方法。简单来说就是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾认证过的网站并进行一些操作从而达到攻击效果。

如何利用(以DVWA靶场做例)

1、对CSRF模块用burpsuit工具进行抓包,选择bp csrf poc模块。

在这里插入图片描述
2、修改功能参数生成html。

在这里插入图片描述
3、点击Test in browser,伪造url地址。

在这里插入图片描述
4、通过浏览器打开。

在这里插入图片描述
5、诱导点击,达到修改密码的效果。

如何防御
  1. 检测referer头,设置url白名单。
  2. 使用同源策略。
  3. 随机token值需使用强加密,且有一定位数(在当前站点无XSS的情况下,最好带当前pc的mac地址、时间戳、经纬度),token值应当在请求头中,不应在cookie中。

SSRF(服务端请求伪造)

服务端提供了从其他服务器应用获取数据的功能,但没对目标地址做严格过滤和限制,导致攻击者可以通过任意网址让后端服务器对其发送请求,并返回该目标地址的请求数据。

可以用来做什么
  1. 读取敏感文件(只能读存在ssrf漏洞的服务器,即本地文件)。
http://ip/ssrf.php?url=file:///etc/passwd
  1. 读取端口。
http://ip1:port/ssrf.php?url=dict://ip2
  1. gopher协议,利用格式,构造GET、POST请求。
curl -v gopher://ip:port/_"任意文档信息"
浏览器中 url+gopher://ip:port/_"任意文档信息"
#"_"为占位符,可以为任意字符
  1. http/https协议。
http://ip1:port/ssrf.php?url=http://ip2

ssrf.php内容

<?php
function curl($url){
	$ch = curl_init();
	curl_setopt($ch,CURLOPT_URL,$url);
	curl_setopt($ch,CURLOPT_HEADER,0);
	curl_exec($ch);
	curl_close($ch);
}
$url = $_GET['url'];
curl($url);
?>
//源自网络
危害
  1. 可以通过外网访问,获取内网的操作系统(通过大小写敏感判断)、端口(服务、协议、应用)等banner信息。
  2. 可攻击内网的脆弱系统如存在rce、弱口令、空口令等。
  3. 可获取内网敏感资源、本地文件等。
如何防御
  1. 白名单限制服务器获取的资源和协议,只允许访问http和https请求。
  2. 黑名单过滤file\gopher\dict等无关协议。

*注意区分ssrf和任意url跳转漏洞302重定向
url跳转漏洞学习参考

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值