CSRF及SSRF
CSRF
跨站脚本请求
Cross-Site Request Forgery
原理
攻击者在自己的服务器上构造了攻击代码(比如知道添加管理员的数据包),受害者(管理员)用自己的身份权限在自己的浏览器去访问攻击链接
漏洞检测
利用burp抓包,并且发送至Generate CSRF PoC
这个插件
在这个页面修改信息,并生成攻击代码
copy攻击代码后,将其放在自己的服务器上
然后用受害者身份在受害者的环境去访问,若信息修改成功,则存在CSRF
靶场
防御方法
1.当用户发送重要的请求时需要输入原始密码
2.设置随机token
,检测数据报的唯一性(最有效)
3.校验Referer
来源,请求时判断请求链接是否是当前管理员正在使用的页面(管理员在编辑文章,黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4.设置验证码
5.限制请求方式只能为POST
SSRF
服务器请求伪造
Server-Side Request Forgery
原理
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等
相当于是可以将存在SSRF的服务器作为一个代理,去访问其内网服务端的资源
利用SSRF能实现以下效果:
1.扫描内网(主机信息收集,Web应用指纹识别)
2.根据所识别应用发送构造的Payload进行攻击
3.Denial of service(拒绝服务DOS)
各个协议调用探针
http
file
dict
ftp
gopher
漏洞攻击
端口扫描、指纹识别、漏洞利用、内网探针
http://192.168.xx.xx/phpmyadmin
file:///D:/www.txt
dict://192.168.xx.xx:3306/info
测试
1 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
SSRF漏洞挖掘
SSRF在各个编程语言中可以使用的协议
真实案例
地址:https://dict.youdao.com/w/http%3A%2F%2F127.0.0.1/#keyfrom=dict2.top
当输入http://127.0.0.1
与直接输入127.0.0.1
返回结果有差异,表明可能存在SSRF漏洞