WEB漏洞-CSRF及SSRF漏洞案例讲解

d55090c796bcef101a64c5bffe331fba2621bcd7.png

CSRF(跨站请求伪造)

是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的

靶场测试

登录这个页面

  • vince
  • 123456

QQ截图20220126105008.jpg

通过抓包获取到这个修改个人信息的地址

QQ截图20220126110703.jpg

在当前浏览器继续访问了带有恶意请求的页面

QQ截图20220126110859.jpg

返回查看时,靶场的个人信息被修改

QQ截图20220126110942.jpg

漏洞防御

漏洞检测

  • 核心要领就是在其他站点模拟请求提交表单,只要该网站无法识别跨站提交的表单,就认为存在漏洞

发送修改个人信息时使用抓包工具检测

QQ截图20220126111554.jpg

获取到一段HTML代码

QQ截图20220126111615.jpg

复制HTML代码到个人服务器上访问

QQ截图20220126111639.jpg

点击弹窗(发现跳转到靶场),并且个人信息被修改,说明crsf漏洞存在(一般存在于修改或者添加信息,在数据库中为insert和update)

QQ截图20220126111701.jpg

防御方案

  1. 当用户发送重要的请求时需要输入原始密码
  2. 设置随机 Token(最有效)
  3. 检验 referer 来源
  4. 设置验证码

SSRF(服务端请求伪造)

通过外网访问服务器,进而通过该服务器作为跳板去访问内网的服务器其他服务器,进而获取更多信息

QQ截图20220126112148.jpg

QQ截图20220126112225.jpg

靶场测试

  • 源码本意是访问外网链接,来获取信息,但是服务器本身处在内网,所以原本访问外网链接的源码可以用于访问内网,从而通过该服务器访问了原本不应该被用户访问到的资源
  • 一般漏洞会发生在允许填入外部链接的地方,比如远程上传图片

QQ截图20220126113004.jpg

  • 以上源码访问内部网络的测试尝试本地的3306端口http://127.0.0.1:3306,MySQL版本为5.5.53

QQ截图20220126113123.jpg

  • 通过服务器访问内网

QQ截图20220126113201.jpg

漏洞利用

  1. 内网地址有限,可以利用字典去尝试所有的内网地址,尝试访问常用开放端口,比如22,3389
  2. 各个协议调用探针:http,file,dict,ftp,gopher 等, 漏洞攻击:端口扫描,指纹识别,漏洞利用,内网探针等

QQ截图20220126113350.jpg

服务器路径查看(的确存在且内容为x)

QQ截图20220126113420.jpg

探针内网另外一台服务器的端口dict://192.168.102.128:3306/info

QQ截图20220126131408.jpg

QQ截图20220126131347.jpg

ftp文件传输协议:ftp:// 192.168.102.128:21(这里端口没有开放),这里能实现文件的读取(这里试了应该是环境不支持ftp协议)

QQ截图20220126131451.jpg

ssrf漏洞中的协议和版本的关系(PHP支持的协议:http,https,file,ftp,php)

QQ截图20220126131527.jpg

SSRF漏洞代码结合某漏洞利用测试

搭建hfs

QQ截图20220126131620.jpg

通过ssrf漏洞访问内网8080端口

QQ截图20220126131642.jpg

底部有版本信息

QQ截图20220126131702.jpg

搜索引擎搜索相关漏洞(选取命令执行漏洞)

QQ截图20220126131739.jpg

通过浏览器添加管理员

  • http://127.0.0.1:8080/?search==%00{.exec|cmd.exe /c net user test1234 1234 /add.}
  • 用户名:test1234,密码1234

QQ截图20220126131758.jpg

再次查看(没有添加管理员,估计是版本过高修复了漏洞)

QQ截图20220126131840.jpg