原理:
有可控参数,并且这个可控参数可以用来访问其他网络,服务。那么就可以用这个参数,以目标主机为跳板,访问内网的资源或者访问外网。
一,内网访问
审题很重要
只有一个链接
根据提示访问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重定向原理:
- 解析 短网址指向的ip地址(也就是生成短网址的服务器ip)
- 生成短网址的服务器收到请求,拿到短链接的key去数据中查询这个key对应的原始链接
- 返回 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之间随机选择
未完待续