【CSRF&SSRF】---漏洞案例讲解---day29
【CSRF&SSRF】---漏洞案例讲解---day29
一、CSRF---跨站请求伪造攻击
1、解释

2、原理
①pikachu靶场演示
在pikachu的CSRF中测试get

然后进去之后点击修改个人信息

修改手机号后,抓包。

相当于发送这个请求的时候,就会修改电话号

那么,我们可以在另外新建一个网页,把这个网页放到公网服务器上,然后诱导管理员去点击这个网页,并且管理员已经登录了后台,那么执行了伪造网页中的 js代码,就会神不知鬼不觉的修改了电话号,实战中可以添加管理员。
payload
<script src='http://127.0.0.1/pikachu/vul/csrf/csrfget/……'></script>

3、测试有没有这个漏洞
burp插件

生成poc

然后把poc代码放到服务器上,本地测试就行了。
4、防御方案

①Token
最有效的方法就是设置随机Token,Token可以确定唯一地数据包。
在CSRF token里看一下数据包。


重新请求的话,token的值会变。
②Referer头
同源策略,Referer判断是否为同一个域名下的。如果不是的话,就不予以执行。
但是这个可以通过抓包修改,来伪造成同源。
二、SSRF---服务端请求伪造
1、解释:
SSRF(Server-side Request Forge, 服务端请求伪造)。
由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务。

2、危害:
扫内网
向内部任意主机的任意端口发送精心构造的Payload
DOS攻击(请求大文件,始终保持连接Keep-Alive Always)
攻击内网的web应用,主要是使用GET参数就可以实现的攻击(比如struts2,sqli等)
利用file协议读取本地文件等

3、案例演示
①代码:

②界面:

③利用
- 
本地上传 
- 
远程上传: 远程上传的时候,会让用户输入一个远程的地址,比如说http://www.xxxx.com/aaa.jpg这个地址是个图片,那么服务端就回去访问这个地址。 
如果把这个地址恶意利用,请求本地

那么服务端就会请求本地的信息。
可以请求本地的端口,比如127.0.0.1:3306,请求mysql的端口。

返回了版本号信息。
可以进行一个端口的扫描。除此之外,还可以当做内网的探针,比如说让服务器请求自己已经打开的虚拟机,类比到内网之中,就实现了内网探测。

内网ip可以用字典跑,一般都是192.168.xxx.xxx,端口用常见的端口就可以了。

dict协议,ftp协议,查看是否开放协议的这个端口。
https://www.t00ls.net/articles-41070.html
三、CSRFTester安全测试工具
教程
http://luckyzmj.cn/posts/a1b686d3.html

下载好这个cms之后,放到PHPstudy里面。


一系列的设置

数据库密码是root,害得自己猜。

登录后,先开启CSRFTester监听

完事儿之后,准提交表单奥。
在CSRFTester里找到提交的表单数据包,将其原来数据修改为admin2数据,然后点击右下角 Generate HTML 保存到指定目录,会生成一个index.html文件

这里我放到了桌面上

打开index.html将末尾form里面的代码全删除掉

修改完后,使用同个浏览器打开index.html,页面返回success


再返回查看会员列表页面,可以发现已经成功添加了admin2用户


 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号