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

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

image

pikachu上的概述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
场景需求:
小黑想要修改大白在购物网站tianxiewww.xx.com上填写的会员地址。
先看下大白是如何修改自己的密码的:
登录---修改会员信息,提交请求---修改成功。
所以小黑想要修改大白的信息,他需要拥有:1,登录权限 2,修改个人信息的请求。
但是大白又不会把自己xxx网站的账号密码告诉小黑,那小黑怎么办?
于是他自己跑到www.xx.com上注册了一个自己的账号,然后修改了一下自己的个人信息(比如:E-mail地址),他发现修改的请求是:
【http://www.xxx.com/edit.php?email=xiaohei@88.com&Change=Change】
于是,他实施了这样一个操作:把这个链接伪装一下,在小白登录xxx网站后,欺骗他进行点击,小白点击这个链接后,个人信息就被修改了,小黑就完成了攻击目的。
为啥小黑的操作能够实现呢。有如下几个关键点:
1.www.xxx.com这个网站在用户修改个人的信息时没有过多的校验,导致这个请求容易被伪造;
---因此,我们判断一个网站是否存在CSRF漏洞,其实就是判断其对关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造。
2.小白点击了小黑发给的链接,并且这个时候小白刚好登录在购物网上;
---如果小白安全意识高,不点击不明链接,则攻击不会成功,又或者即使小白点击了链接,但小白此时并没有登录购物网站,也不会成功。
---因此,要成功实施一次CSRF攻击,需要“天时,地利,人和”的条件。
当然,如果小黑事先在xxx网的首页如果发现了一个XSS漏洞,则小黑可能会这样做: 欺骗小白访问埋伏了XSS脚本(盗取cookie的脚本)的页面,小白中招,小黑拿到小白的cookie,然后小黑顺利登录到小白的后台,小黑自己修改小白的相关信息。
---所以跟上面比一下,就可以看出CSRF与XSS的区别:CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。因此,网站如果要防止CSRF攻击,则需要对敏感信息的操作实施对应的安全措施,防止这些操作出现被伪造的情况,从而导致CSRF。比如:
--对敏感信息的操作增加安全的token;
--对敏感信息的操作增加安全的验证码;
--对敏感信息的操作实施安全的逻辑流程,比如修改密码时,需要先校验旧密码等。

如果你没有读太明白,不要犹豫,请再读一遍啦

CSRF解释、原理:

pikachu靶场演示

CSRF(Cross-site request forgery)跨站请求伪造,由客户端发起,是一种劫持受信任用户向服务器发送非预期请求的攻击方式,与XSS相似,但比XSS更难防范,常与XSS一起配合攻击。

Snipaste_2022-05-14_19-16-37

先进行登陆,这里不知道密码,查看数据库,密码是md5加密的,解密之后是:123456

Snipaste_2022-05-14_19-17-37

Snipaste_2022-05-14_19-18-57

这里修改数据,然后用burp进行抓包

Snipaste_2022-05-14_19-19-44

这里构造一个语句,如下

1
<script src=http://192.168.88.148/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=18888888&add=shanghai&email=hahah%40qq.com&submit=submit></script>

然后,假设目标访问了你创建的这个文件的话,那么就会发生,下图

Snipaste_2022-05-14_19-33-58

和XSS的区别在:XSS是直接盗取管理员的cookie,从而实现登陆后台,但是CSRF的话就是,用了一个外部网站,然后在里面插入恶意代码,只是借用了用户的权限,跟XSS不一样

如何测试网站有没有CSRF的漏洞,使用BURP上的一个模块,如下图所示

Snipaste_2022-05-14_19-40-55

Snipaste_2022-05-14_19-41-03

可以看到上面这个图上是有一个html的模块的,可以直接复制,也可以点击右下角的 “copy html” ,然后复制到本地,本地搭建一个环境,然后要目标用户去访问这个文件,如果目标用户的信息被修改,那么就说明存在CSRF漏洞

Snipaste_2022-05-14_19-46-49

这是我目前的信息,然后我访问CSRF文件

Snipaste_2022-05-14_19-47-38

可以看到有一个按钮,当我点击这个按钮的时候,就会自动跳转到目标用户的页面,并且这个信息也进行了对应的修改

Snipaste_2022-05-14_19-48-49

可以看信息已经跟那个数据包中的数据进行了对应的修改

还有一个方法就是看数据包中是否有: “token” 这个参数

Snipaste_2022-05-14_19-55-38

这个 “token” 有什么用,抓两次包,我修改两次不同的数据,这里的 “token” 是发生了两次变化

Snipaste_2022-05-14_19-58-15

可以对比两张图,可以发现这个值发生了明显的变化

原理详解:

攻击者盗用了你的身份信息,以你的名义发送恶意请求,对服务器来说这个请求是你发起的,却完成了攻击者所期望的一个操作
XSS 利用站点内的信任用户,盗取cookie
CSRF通过伪装成受信任用户请求受信任的网站
利用目标用户的合法身份,以目标的名义执行某些非法参数
利用条件:已经登录系统,用户访问URL,已存在的网站中允许用户跳转

防御方案:

1.当用户发送重要的请求时需要输入原始密码
2.设置随机Token
3.检测referer来源,请求时判断请求连接是否为当前管理员正在使用的页面(管理员在编辑文章,黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4.设置验证码
5.限制请求方式只能为POST

SSRF

1375459-20220107144821522-2091305815

知识点

SSRF漏洞解释,原理等

1375459-20220107151627608-1260317687

SSRF漏洞检测,案例,防御等

漏洞攻击:端口扫描,指纹识别,漏洞利用,内网探针等

SSRF危害:

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

各个协议调用探针:http,file,dict,ftp,gopher等

附:常用语言支持的协议

1375459-20220107134307885-2044528033

SSRF的防御

  1. 过滤返回的信息如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
  2. 统一错误信息,避免用户可以根据错误信息来判断远程服务器的端口状态。
  3. 限制请求的端口,比如80,443,8080,8090。
  4. 禁止不常用的协议,仅仅允许http和https请求。可以防止类似于file:///,gopher:”ftp: 等引起的问题
  5. 使用DNS缓存或者Host白名单的方式。

CSRF和SSRF的区别

  • CSRF是跨站请求伪造,伪造的是客户端,即黑客盗用用户身份
  • SSRF是服务器端请求伪造,黑客盗用服务器,一般用于从外网访问内网。

漏洞修复

1
2
3
4
5
6
1.禁止跳转
2.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
3.禁用不需要的协议,仅仅允许http和https请求。可以防止类似于file://, gopher://, ftp:// 等引起的问题
4.设置URL白名单或者限制内网IP(使用gethostbyname()判断是否为内网IP)
5.限制请求的端口为http常用的端口,比如 80、443、8080、8090
6.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。

涉及资源:

https://pan.baidu.com/s/1bp96ECJ

https://www.t00ls.cc/articles-41070.html

https://blog.csdn.net/qq_50854790/article/details/122244662

某CMS案例

Snipaste_2022-05-26_14-31-35

先进入这个页面,创建一个会员用户

开启这个工具的拦截

Snipaste_2022-05-26_14-31-48

Snipaste_2022-05-26_14-34-49

创建成功

Snipaste_2022-05-26_14-32-55

Snipaste_2022-05-26_14-36-38

然后访问这个文件,网上很多都是让你删除最后面的from,emmm,这里我不推荐删掉,直接访问就可以了

Snipaste_2022-05-26_14-37-31

这里需要注意,这里如果你创建的是高级会员就不可以,需要是标准会员

Snipaste_2022-05-26_14-42-36

成功

骑士CMS案例

后台地址:http://192.168.88.154/74cms/upload/index.php?m=admin&c=index&a=login

同样是创建用户,然后进行抓包

创建一个用户,然后改包,刷新查看,这里需要注意,不推荐用渗透版火狐,我这里直接用的火狐

Snipaste_2022-05-26_15-10-04

Snipaste_2022-05-26_15-19-25

Snipaste_2022-05-26_15-17-34

看到已经创建成功了

MetinfoCMS案例

Snipaste_2022-05-26_14-47-19

同样是创建一个管理员用户,然后进行抓包

Snipaste_2022-05-26_14-47-25

Snipaste_2022-05-26_14-58-10

Snipaste_2022-05-26_15-01-26

可以看到创建成功了

Snipaste_2022-05-26_14-59-58

除此之外其实访问那个生成的html的文件,会有一个界面这个就是管理,管理员的增删的界面,是可以直接增删的