ssrf学习2——内网ip绕过

环回地址绕过

尝试访问内网 也就是127.0.0.1里面的flag.php

但是如果真的去访问127.0.0.1/flag.php 还是不行

也就是说127.0.0.1被过滤了

进制转换

127.0.0.1是点分十进制

可以用二进制八进制十六进制来绕过过滤

0x7F000001/flag.php

017700000001/flag.php(八进制前面是0)

成功绕过

也可以用八进制或者十六进制的点分式

0177.0000.0000.0001/flag.php

0x7F.0x00.0x00.0x01/flag.php 也可以只转一个0x7F.0.0.1/flag.php

添加@绕过

平常我们传入的url是url=http://127.0.0.1

如果 我们传入的url是url=http://quan9i@127.0.0.1,它此时依旧会访问127.0.0.1

示例如下 题目给出提示

在这里插入图片描述

要求必须以http://notfound.ctfhub.com开头,但我们访问内网文件的话,有这个,该怎么访问呢,这个时候就用到了@字符,我们构造payload如下

复制代码
url=http://notfound.ctfhub.com@127.0.0.1/flag.php

在这里插入图片描述

特殊数字(例如②)

有时候可以用特殊数字来绕过,构造特殊的127.0.0.1,如1②7.0.0.1

在这里插入图片描述

句号替代.绕过

来代替.

在这里插入图片描述

省略0

当过滤127.0.0.1整体时,还有一种绕过方式就是省略中间的0,这个时候也是可以访问的

特殊0

在windows中,0代表0.0.0.0,而在linux下,0代表127.0.0.1,如下所示

复制代码
url=http://0/flag.php

302重定项绕过

若传入的私网地址被限制可以使用302重定向绕过。这需要一台公网服务器和它的公网IP,在服务器中创建重定向的代码文件,提交公网IP路径下的重定向代码文件,使SSRF漏洞服务器或主机访问从而重定向到自己内网地址或本机地址。

具体步骤就是我们在自己的公网服务器上设置302重定向到127.0.0.1/flag.php

然后通过访问我们的公网ip 显示出127.0.0.1/flag.php的内容

在自己的公网服务器上创建tmp/302/index.php

并且写入代码

php 复制代码
<?php  
header('Location: http://127.0.0.1/flag.php');

然后我们监听一下7777端口

php73 -S 0.0.0.0:7777

再去访问

即可成功得到

DNS重绑定

ssrf的防御机制

对于用户请求的URL参数,首先服务器端会对其进行DNS解析,然后对于DNS服务器返回的IP地址进行判断,如果在黑名单中,就pass掉。 但是在整个过程中,第一次去请求DNS服务进行域名解析到第二次服务端去请求URL之间存在一个时间差,利用这个时间差,我们可以进行DNS 重绑定攻击。我们利用DNS Rebinding技术,在第一次校验IP的时候返回一个合法的IP,在真实发起请求的时候,返回我们真正想要访问的内网IP即可。 要完成DNS重绑定攻击,我们需要一个域名,并且将这个域名的解析指定到我们自己的DNS Server,在我们的可控的DNS Server上编写解析服务,设置TTL时间为0,这是为了防止有DNS服务器对解析结果进行缓存。这样就可以进行攻击了,完整的攻击流程为:

服务器端获得URL参数,进行第一次DNS解析,获得了一个非内网的IP 对于获得的IP进行判断,发现为非黑名单IP,则通过验证 服务器端对于URL进行访问,由于DNS服务器设置的TTL为0,所以再次进行DNS解析,这一次DNS服务器返回的是内网地址。

攻击原理:利用服务器两次解析同一域名的短暂间隙,,更换域名背后的ip达到突破同源策略或过waf进行ssrf的目的。

DNS中的机制TTL:域名和IP绑定关系的Cache存活的最长时间。

所以最理想的TTL值为0

DNS重绑定这里简单的说就是我们先提供一个ip,然后在服务端进行解析的过程中再传127.0.0.1,此时就可能会出现访问到本地文件的情况 举个栗子,我们设置一个为127.0.0.1,另一个随便写一个公网的ip

然后去访问这个域名

域名重绑定网站

rbndr.us dns rebinding service

参考:

https://www.bilibili.com/video/BV1Fw41157v4?vd_source=294c9cb943c812caed99031fabfb135d

从一文中了解SSRF的各种绕过姿势及攻击思路-腾讯云开发者社区-腾讯云

相关推荐
是翎20 分钟前
深度长文|2026产品经理AI实践手册
人工智能·深度学习·学习·自然语言处理·数据挖掘
Linux-lucky31 分钟前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
知识分享小能手1 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
AI职业加油站4 小时前
数据要素价值释放年:大数据治理工程师,站上职业新风口
人工智能·学习·职场和发展·数据分析·职场发展
啄缘之间5 小时前
1.【SVA】什么是SVA?
经验分享·学习·测试用例·verilog·sva
sunoo-2295 小时前
【嵌入式裸机开发Day04】i.MX6ULL 蜂鸣器驱动详解:从引脚地址查找到代码实现全流程
arm开发·单片机·嵌入式硬件·学习·串口·裸机
Purple Coder6 小时前
stm32
学习
边境悍匪6 小时前
蜗牛学苑 Java 智能体学习 Day45|Knife4j+SpringBoot3、书城项目整合 MyBatis 思维导图复盘
java·开发语言·vue.js·学习·spring
爱吃苹果的日记本6 小时前
离散数学第五课
学习·离散数学
外收内放7 小时前
Python与AI应用(json模块)
python·学习