SSRF简单介绍,以及绕过的情况
【摘要】 今天偶然看到了一个关于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)