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

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

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

这些表达方式都能被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文件中的端口不起作用了。

(编辑:网站开发网_马鞍山站长网)

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