加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

SSRF漏洞学习实验环境推荐及过程记录

发布时间:2019-06-18 00:12:46 所属栏目:建站 来源:Seas0n
导读:在网上找到一个学习 SSRF 的环境,SSRF-LABS 有一个好看又简洁的界面,提供了最基本的 REST API 和客户端 WebHook 功能用于 SSRF 测试。前面只是大概的介绍,知道就好,不用花费过多精力了解。 SSRF 介绍 服务端请求伪造,用户通过 WEB 访问/上传/发出请求

这一关为了避免和上一关一样,代码中没有自己实现IP解析的功能,而是选择调用 python2.7 自带的库函数解析 IP 地址,具体代码如下:

  1. url=request.form['handler'] 
  2. host = urlparse.urlparse(url).hostname 
  3. if host == 'secret.corp':     
  4.     return 'Restricted Area!' 
  5. else:     
  6.     return urllib.urlopen(url).read() 

上面的代码用了 python2.7 中的 urlparse 模块来解析 url,该模块能够解析多个协议。获取了 url 中 host 参数之后,再对域进行判断。

跟第一个环境一样,我们先用http://secret.corp来测试。

SSRF漏洞学习实验环境推荐及过程记录

URL 解析器分析出这部分内容是访问已被限制的域,下面要介绍一个新的知识点了,我们先来测试一下它能不能起作用。在测试点输入http://google.com# @secret.corp。

SSRF漏洞学习实验环境推荐及过程记录

绕过这个到底是基于什么原理呢?让我们再次回顾一下 url 的结构。

  1. scheme://user:pass@host:port/path?query=value#fragment 

原来http://google.com# @secret.corp中@后面的secret.corp是真正要访问的 host,前面的google.com#绕过了 urlparse 的解析。感觉很神奇而且让人有点摸不着头脑,了解一下原理会好很多。SSRF 漏洞产生的根本原因是 url 中有空格(CRLF 注入),这让 python 中的两个模块解析 url 的时候起了冲突,urlparse 认为 host 是 google.com,而 urllib 则认为真正的 host 是 secret.corp 并且直接发出了请求。

为了进一步阐述上面漏洞利用的原理,用 python 写几行代码来验证一下,如果有点混乱,可以再看看上面的源代码,用 urlparse 解析 URL 进行判断是先于调用 urllib 发出请求的。下图为 urlparse 解析的结果,在 python2.7 和 python3.5 两个版本中都是一致的。

SSRF漏洞学习实验环境推荐及过程记录

为了能够进一步验证 urllib 能否正确接收到,在 VPS 上输入命令nc -lvvv 9444监听本地 9444 端口,再按照下面命令通过 python 发送请求:

  1. $ python 
  2. $ import urllib 
  3. $ url = "http://google.com# @[VPS的IP地址]:9444" 
  4. $ urllib.urlopen(url).read() 

之后在开启监听端口的服务器可以接收到如下的回显:

SSRF漏洞学习实验环境推荐及过程记录

验证完毕。

advanced3

advanced3 感觉作者代码不完整,感觉像在测试阶段,尝试过修改源代码,但是实际情况并不如我所想。所以这里就不丰富这部分内容了,如果之后作者对这部分题目有修改,我会对这部分内容进行补充。

ctf exp

下面是 ctf 题目获取 flag 的方法,因为我不是亚马逊的服务器,所以获取不到 ctf 最后一题的 flag,如果想尝试的,可以看看这篇文章:

https://medium.com/poka-techblog/server-side-request-forgery-ssrf-attacks-part-1-the-basics-a42ba5cc244a

最后这个题目大家可以作为练习,到最后才看 payload.....懒人就不重复说前面的内容了,来试试自己掌握了没有吧!

  • http://secret1.corp
  • file:///etc/passwd
  • http://10.38 #a000026、167772198
  • http://google.com# @secret3.corp

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读