【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文件
这里我放到了桌面上