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的各种绕过姿势及攻击思路-腾讯云开发者社区-腾讯云

相关推荐
别动我齐刘海5 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
gjf05_058 小时前
人该怎样活着呢?版本75.8
学习
li星野9 小时前
【学习记录】PCB与PCBA核心知识全解析:从设计到制造的关键细节
学习·制造
卿卿的产品经理日记10 小时前
【AI产品经理实战】Day 35|从“沉迷工具“到回归 AI 底层:Skill 收官、系统复盘与下一个 13 天
人工智能·学习·产品经理
一条泥憨鱼11 小时前
【从0开始学习计算机网络】| ARP 协议:地址解析,ARP 欺骗,链路层寻址
网络·后端·学习·计算机网络
HY小宝F11 小时前
树莓派智能摄像头系统 30 天重学计划之 Day 04 · HTTP / API:控制链入口 —— 学习总结
网络协议·学习·http
悟乙己12 小时前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:赛题解析(一)
笔记·学习·金融
霍霍的袁13 小时前
【C++】哈希表实现指南:从原理到开放定址法、链地址法的实现
c++·学习·哈希算法·散列表·visual studio
PC2005-cloud13 小时前
MySQL学习笔记:GTID 主从复制,从原理到实践,告别传统 Binlog+Position 的痛点
笔记·学习·mysql
starsky7623814 小时前
Agent学习——上下文工程(二)
学习