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

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

发布时间:2019-06-17 15:45:54 所属栏目:建站 来源:Seas0n
导读:在网上找到一个进修 SSRF 的情形,SSRF-LABS 有一个悦目又简捷的界面,提供了最根基的 REST API 和客户端 WebHook 成果用于 SSRF 测试。前面只是或许的先容,知道就好,不损耗费过多精神相识。 SSRF 先容 处事端哀求伪造,用户通过 WEB 会见/上传/发出哀求

这个看起来不太清楚,urldecode 之后,就可以看到详细的呼吁。下面为解码之后的内容,我把要害的 redis 指令放到统一行中。

SSRF裂痕进修尝试情形保举及进程记录

在页面能看到如下的回显。

SSRF裂痕进修尝试情形保举及进程记录

为了验证是否乐成了,我在 ssrf-lab/basics 容器内里查察插入的 KEY 值。

SSRF裂痕进修尝试情形保举及进程记录

Part 2:Advance1

尝试进程

这一关用了正则表达式限定内网IP的会见,详细的代码如下。必必要吐槽一下,这个要领真的是一个很糟糕的要领,由于它现实上不能起到很好的安详防护浸染。

  1. if (preg_match('#^https?://#i', $handler) !== 1) {   
  2.     echo "Wrong scheme! You can only use http or https!";   
  3.     die(); 
  4. } else if (preg_match('#^https?://10.0.0.3#i', $handler) === 1) {   
  5.     echo "Restricted area!";   
  6.     die(); 

此刻我们就用http://10.0.0.3来测试。

SSRF裂痕进修尝试情形保举及进程记录

我们可以很明明地看到没有得到相应,可是神奇的IP地点有多种表达方法,我们可以用这些方法来绕过上面那么直白的限定。先用整数表达http://167772163发出哀求。

SSRF裂痕进修尝试情形保举及进程记录

乐成了,我们可以来看看 IP 地点的表达方法。众所周知,IP 地点是由四个字节构成的,一旦包括了小数点,就必需思量到巨细端暗示,由于这个会影响 IP 地点的理会。不外亏得全部的收集地点都是大端暗示法,只必要留意这一点即可,下面我们先容 IP 地点的表达方法。

  1. 字符串:       10.0.0.3 
  2. 二进制:       00001010 . 00000000 . 00000000 . 00000011 
  3. 十六进制:    0A.00.00.03 
  4. 整数:           167772163 

这些表达方法都能被curl呼吁理会为正确的 IP 地点,之后假如我们要会见的IP地点被简朴粗暴地过滤了就可以试试这种要领。除了上面的表达方法之外,还可以用 16 进制0x0A000003暗示IP地点,尚有一个很少人知道的绕过小姿势,就是用 8 进制取代 10 进制来暗示 IP 地点。在计较机的天下里,一旦在20前面加个0就会酿成8进制,好比http://01200000003现实上照旧http://10.0.0.3。上面两个表达方法,PHP 的 curl 模块能理会出来。

下面总结一下几种变形:

  • 十六进制: http://0x0A.0x00.0x00.0x03
  • 八进制: http://012.00.00.03
  • 八进制溢出:http://265.0.0.3

最后一个变形仿佛只合用于 NodeJS 应用的处事器,点分十进制的最大值为 255,一旦超出了这个数,将会被重置,这个时辰最后一个变形就会变回http://10.0.0.3。详细为什么可以通过这样的也许要从 TCP/IP 理会 IP 地点的逻辑入手(应用层的限定总能被奇妙地绕过,不是很靠得住)。

其他常见的绕过要领

1. DNS泛域名

xip.io和xip.name这两个 dns 泛域名,实现绕过的要领是,你在你想会见的 ip 地点后头添加这两个泛域名,这两个域名会从你发出的哀求中提取你真正想会见的 IP 地点,然后再相应报文中返回。感乐趣的可以看看 《DNS 处事系列之一:泛域名理会的安详案例》:

https://blog.51cto.com/laoxu/1282773

  • http://www.10.0.0.3.xip.io
  • http://mysite.10.0.0.3.xip.io
  • http://foo.bar.10.0.0.3.xip.io
  • http://foo.10.0.0.3.xip.name
  • http://www.10.0.0.3.xip.name

尚有许多其他的绕过方法,由于在这个情形里不能实现,以是就不在这里增补了,《SSRF 裂痕的操作与进修》:

https://uknowsec.cn/posts/notes/SSRF%E6%BC%8F%E6%B4%9E%E7%9A%84%E5%88%A9%E7%94%A8%E4%B8%8E%E5%AD%A6%E4%B9%A0.html

一文中较量全面。没有细心研究过为什么 Python 写的后端代码不能实现其他绕过,不外我猜是由于Python的 urllib 和 PHP 的 curl 理会方法差异,假现在后有机遇,会穷究一下内里到底有什么差异。

Part 2:Advance2

在安装这个情形的时辰,必然要留意端口的设置,假如呈现了ERROR: Pool overlaps with other one on this address space的报错,可以凭证 移除 docker 收集:

http://www.zizhixiaoshe.com/article/21.html

这篇文章举办操纵,记得先将 docker 给关掉。假如之后尚有要领可以停止发生这个报错,譬喻正确地修改设置文件之类的,我会增补在后头。已经实行过变动docker-compose.yml文件中的端口不起浸染了。

(编辑:湖南网)

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

热点阅读