WEB漏洞-CSRF及SSRF漏洞案例讲解
CSRF(跨站请求伪造)
是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的
靶场测试
登录这个页面
- vince
- 123456
通过抓包获取到这个修改个人信息的地址
在当前浏览器继续访问了带有恶意请求的页面
返回查看时,靶场的个人信息被修改
漏洞防御
漏洞检测
- 核心要领就是在其他站点模拟请求提交表单,只要该网站无法识别跨站提交的表单,就认为存在漏洞
发送修改个人信息时使用抓包工具检测
获取到一段HTML代码
复制HTML代码到个人服务器上访问
点击弹窗(发现跳转到靶场),并且个人信息被修改,说明crsf漏洞存在(一般存在于修改或者添加信息,在数据库中为insert和update)
防御方案
- 当用户发送重要的请求时需要输入原始密码
- 设置随机 Token(最有效)
- 检验 referer 来源
- 设置验证码
SSRF(服务端请求伪造)
通过外网访问服务器,进而通过该服务器作为跳板去访问内网的服务器其他服务器,进而获取更多信息
靶场测试
- 源码本意是访问外网链接,来获取信息,但是服务器本身处在内网,所以原本访问外网链接的源码可以用于访问内网,从而通过该服务器访问了原本不应该被用户访问到的资源
- 一般漏洞会发生在允许填入外部链接的地方,比如远程上传图片
- 以上源码访问内部网络的测试尝试本地的3306端口
http://127.0.0.1:3306
,MySQL版本为5.5.53
- 通过服务器访问内网
漏洞利用
- 内网地址有限,可以利用字典去尝试所有的内网地址,尝试访问常用开放端口,比如22,3389
- 各个协议调用探针:http,file,dict,ftp,gopher 等, 漏洞攻击:端口扫描,指纹识别,漏洞利用,内网探针等
服务器路径查看(的确存在且内容为x)
探针内网另外一台服务器的端口
dict://192.168.102.128:3306/info
ftp文件传输协议:
ftp:// 192.168.102.128:21
(这里端口没有开放),这里能实现文件的读取(这里试了应该是环境不支持ftp协议)
ssrf漏洞中的协议和版本的关系(PHP支持的协议:http,https,file,ftp,php)
SSRF漏洞代码结合某漏洞利用测试
搭建hfs
通过ssrf漏洞访问内网8080端口
底部有版本信息
搜索引擎搜索相关漏洞(选取命令执行漏洞)
通过浏览器添加管理员
http://127.0.0.1:8080/?search==%00{.exec|cmd.exe /c net user test1234 1234 /add.}
- 用户名:test1234,密码1234
再次查看(没有添加管理员,估计是版本过高修复了漏洞)
最后一次更新于2022-01-26 13:19
0 条评论