WEB漏洞—CSRF及SSRF漏洞案例

发布时间 2023-07-23 00:47:00作者: 执小汐

CSRF:跨站请求伪造(Cross-site request forgery)CSRF是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。当用户访问含有恶意代码的网页时,会向指定正常网站发送非本人意愿的数据请求包(如转账给hack,向hack发送API等)如果此时用户恰好登录了该正常网站(也就是身份验证是正常的)就会执行该恶意代码的请求,从而造成CSRF。

#原理解释

---用户访问银行付款中,访问了黑客的站点的网页,网页获取了用户发送给银行的数据包

---黑客截取数据包,篡改信息,将付款转到自己的账户下

CSRF漏洞演示(pikachu)

#进入靶场

 #修改个人信息并抓包,复制请求地址/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=321&phonenum=00000&add=321321&email=321&submit=submit

 #在虚拟机里创建index.html,写入html脚本<script src='127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=321&phonenum=00000&add=321321&email=321&submit=submit'></script>

#用与进入靶场相同的浏览器访问虚拟机ip地址

 #可以看到这里已经请求了地址,将手机号改为了0022200,但靶场却没有发生改变,这里也不知道是什么原因

 #重新抓包利用Engagement tools-I Generate CSRF PoC,复制html

#保存在虚拟机index.html里

#再次访问虚拟机ip地址,可以看到靶场信息被修改,这里将手机号改成了18080555

 

CSRF 防御

#设置随机 Token(最有效)

 

 ---给数据包上一个编号,防止重复的数据包

---将数据包放出,再次修改抓包,发现数据包的token不同,注意:cookie中的phpsessid是一样的。

#检验 referer 来源

---请求时判断请求链接是否为当前管理员正在使用的页面(检测是否同源)

---管理员在编辑文章,黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败。

 

SSRF(服务端请求伪造)

1.  原理 

---通过外网访问服务器(不能直接访问内网),进而获取到服务区所连接的内网的服务器的一些信息。

---可以对内网进行一些信息收集

---漏洞的主要原因是,在服务器上面访问远程上传,是可以访问到内网的上信息,而在外网访问不了

#以下代码是模拟存在SSRF漏洞的php脚本

<meta http-equiv="Content-Type" content="text/html"; charset="utf-8" />
<form action=""method="post">
想翻译的网站: <input type="text" name= "url"><br>
<input type="submit" name="submit" value="Cheak!">
</form>
<?php
$_POST['url'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$_POST['url']);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_exec($ch);
curl_close($ch);
?>

各个协议调用探针:http,file,dict,ftp,gopher 等, 漏洞攻击:端口扫描,指纹识别,漏洞利用,内网探针等

#查看本地文件 file:///d:/x.txt

ssrf漏洞中的协议和版本的关系

---PHP支持的协议:http,https,file,ftp,php