CTFHub-SSRF

原理:

有可控参数,并且这个可控参数可以用来访问其他网络,服务。那么就可以用这个参数,以目标主机为跳板,访问内网的资源或者访问外网。

一,内网访问

审题很重要
在这里插入图片描述
只有一个链接
在这里插入图片描述根据提示访问127.0.0.1/flag.php就可以得到flag,但是用localhost就不行,应该是后台做了限制
在这里插入图片描述在这里插入图片描述
后台的代码应该类似这样:

<?php
   highlight_file(__FILE__);
   $url=$_GET['url'];
   $curl=curl_init($url); 
   $responseText=curl_exec($curl);
   var_dump(curl_error($curl) );
   echo $responseText;
   curl_close($curl);
?> 

通过$_GET获取前端传过来的url的值,访问指定的url。当传入的url是内网ip时就会让攻击者访问到内网的其他主机,因为内网的主机处于一个网段,大多数相互信任。
修复:

  • 限制黑白名单url的范围,比如禁止访问内部网段,或者只允许访问特定主机
  • 对返回内容进行限制,只返回特定的内容

二,伪协议读取文件

在这里插入图片描述

相关伪协议
file://协议 用于访问本地文件系统,
php:// 协议访问各个输入/输出流,php://filter用于读取源码,php://input用于执行php代码。
在利用的时候file的格式为file:///,加三个杠是因为访问的是本地文件,所以host为空
file伪协议的详细
更多伪协议

错误姿势
在这里插入图片描述
正确姿势
在这里插入图片描述
根据提示是读取web目录下面的文件。就想着用file://伪协议读取,根据网上的资料file必须用文件的绝对路径+文件名,或者文件的相对路径加文件名
相对路径+文件名:不知道是不是因为目标是linux的原因。这样不行
在这里插入图片描述绝对路径+文件名:这样就行,但是如果目标是windows,那么绝对路径就比较难猜
在这里插入图片描述还有一种做法是用http协议,http://网络路径和文件名
在这里插入图片描述好家伙,居然不行了?刚才还行的。。。

后面知道出现漏洞的php怎么写了再尝试把靶场搭建在windows上面复现一下

三,端口扫描

没什么可说的,感觉代码应该和内网访问的代码差不多,只是在这个基础上利用工具发包,根据返回的包来判断端口的开放情况。

四,urlbypass

payload:http://challenge-80b40c7bb0f917cb.sandbox.ctfhub.com:10800/?url=http://notfound.ctfhub.com@127.0.0.1/flag.php
当访问www.baiud.com@127.0.0.1 时,会直接访问@后面的地址

五,数字ipbypass

在这里插入图片描述

  • localhost绕过
  • 8进制格式:0177.00.00.01
  • 16进制格式:0x7f.0x0.0x0.0x1
  • 10进制整数格式:2130706433
  • 在linux下,0代表127.0.0.1,http://0进行请求127.0.0.1

六,302跳转

综合 利用之前的知识,进去以后是个空白界面,可以利用file://协议读取本地的文件
在这里插入图片描述发现禁了127,172,10,等内网地址。其实可以用localhost绕过,因为目标是linux,也可以用http://0来表示本地地址绕过。不过题目提示302绕过,那我们就用302来做
先用短链接生成http://127.0.0.1/flag.php的短域名
在这里插入图片描述
然后把生成的短网址传给目标服务器,目标服务器访问短网址,然后被重定向,访问本地的flag.php文件
亲测这个短网址生成器有效

短网址302重定向原理:

  1. 解析 短网址指向的ip地址(也就是生成短网址的服务器ip)
  2. 生成短网址的服务器收到请求,拿到短链接的key去数据中查询这个key对应的原始链接
  3. 返回 302 跳转,告诉浏览器跳转到新的地址 在这里插入图片描述可以看到,访问my5353.com短网址,服务器返回重定向包

七,DNS重绑定 Bypass

同源策略的定义:如果两个 URL 的 协议、域名、端口都相同的话,则这两个 URL 是同源。在浏览器中,同一个域名下的网站只能调用本域名下的资源。

原理:

输入ulr—>浏览器向DNS服务器请求解析—>DNS服务器返回恶意服务器地址,并且设置TTL为0—>浏览器访问恶意服务器—>恶意服务器返回含有而已代码的html—>恶意代码让浏览器访问之前的url—>恶意DNS服务器返回目标内网ip地址—>浏览器执行恶意代码向目标内网发送恶意数据

其实就是控制DNS服务器,诱导目标点击构造的域名,第一次访问:根据DNS的返回,访问钓鱼网站(含有恶意的js),然后恶意js让浏览器第二次访问恶意DNS服务器,这时返回内网ip,然后浏览器带着恶意请求去访问内网。
关键就是控制一个DNS服务器,然后构造恶意的js代码让浏览器执行。
浅谈DNS重绑定漏洞
详解DNS重绑定攻击
DNS重定向生成
在这里插入图片描述在这里插入图片描述多试几次,因为是再两个ip之间随机选择

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值