SSRF简单介绍,以及绕过的情况

举报
object 发表于 2024/08/22 14:55:55 2024/08/22
【摘要】 今天偶然看到了一个关于ssrf的攻击介绍,同时也一直回答了我一直想要了解的一个问题,ssrf如何绕过域名的限制,所以做个记录。一、背景SSRF服务端请求伪造攻击。指的是通过服务器访问资源时,通过绕过资源的范围限制,达到通过服务器,任意访问其他资源的场景。 二、介绍以java举例,通过服务器发送请求// 一般来说url都会进行限制,例如限定某一条url,通过配置文件。 但是某些条件下,为了方...

今天偶然看到了一个关于ssrf的攻击介绍,同时也一直回答了我一直想要了解的一个问题,ssrf如何绕过域名的限制,所以做个记录。

一、背景

SSRF服务端请求伪造攻击。指的是通过服务器访问资源时,通过绕过资源的范围限制,达到通过服务器,任意访问其他资源的场景。 

二、介绍

以java举例,通过服务器发送请求

// 一般来说url都会进行限制,例如限定某一条url,通过配置文件。  但是某些条件下,为了方便,使用了前端传入的url,就可能造成ssrf
JSONObject result = restTemplate.postForObject(url, httpEntity, JSONObject.class);

还有通过跳转等,对用户的浏览器进行跳转也是同样存在的ssrf。

// sendRedirect跳转方式
response.sendRedirect(url);

// forward方式
request.getRequestDispatcher(“url”).forward(request,response);


三、特殊情形

上面都是针对url没有任何限制的情形,直接使用了url进行了访问,不是本次的重点,本次分享的是关于绕过的情况

"@"绕过域名限制的ssrf

一般来说,后端都不会直接使用客户端传递的url,一般是进行拼接。 例如通过客户端传递的某个值拼接在写好的url后面,达到控制访问某域名下某个路由的目的,但是若未控制好拼接方式,则有极大的可能导致绕过。

// 使用@拼接在域名后,可直接绕过域名访问其他域名的请求
public JSONObject rest(String type){
  String domain= http://www.target.com;
  String url = domain + type;
  JSONObject result = restTemplate.postForObject(url, httpEntity, JSONObject.class);
}

// 上述代码中,就符合一些常用的开发逻辑,后面还可以再跟一起路由,这个不重要
// 当传入的type为 @www.baidu.com 则访问的域名就从target.com就直接改成了baidu.com
// 问题代码就是, 通过域名后面直接跟了@会以第二个域名为主。  可以直接在浏览器进行尝试访问,是一样的情况。

解决方案也简单,就是后面接一个文根,接一个 "/"也是可以的,这样@就会失效

四、SSRF危害

这个可以百度一下,每个攻击危害都挺多的,具体实例就不讲解了。

个人理解,SSRF的危害主要集中在两点:

1.暴露了内网其它服务器的问题。  可通过当前服务器访问其他内网服务器。

2.可控制用户的跳转链接,导致用户信息泄露等危害

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。