我是靠谱客的博主 秀丽哑铃,最近开发中收集的这篇文章主要介绍CTFHUB--技能树--SSRF全解(下篇)FastCGI协议Redis协议 URL Bypass数字IP Bypass 302跳转 BypassDNS重绑定 Bypass,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

接下来的这几个题是比前几个有意思的,redis库的打法不仅仅是这一种,还有好几种,技能树的redis打法也仅仅是带我们入门而已。

FastCGI协议

害,又是FastCGI,前面做的蓝帽杯、陇原战“疫“2021网络安全大赛的题目中也是利用到FastCGIpayload的构造非常的单一,没有什么灵活变化而言,所以目前我所知道对付FastCGI的解决方法一个是用已存在的那个几百行的代码运行出来的payload,另一个是用工具gopherus生成payload

想了解什么是FastCGI的可以看附件上面介绍了,这篇文章是P神写的,还是很值得读一读的。

这里最简单的还是利用gopherus直接生成gopher数据把payload打入即可。所以我们需要在Linux环境下准备一个gopherus工具。

将生成的gopher数据进行一次url编码,打入题目题目中即执行了ls命令,这里为什么要输入/var/www/html/index.php?它是什么意思?为什么/usr/local/lib/php/PEAR.php也能代替?我后面单独写一篇关于fastcgi的文章解释。这里先教怎么打,后面再讲为什么。

 利用相同的方法查看根目录的文件发现

 应该是flag了,在利用cat命令把文件读取出来,

Redis协议

这里打的redis比较简单,真正有意思的其实是那种打入内网对redis未授权进行一些操作。

没啥好分析的,题目提醒我们打redis协议,开了6379端口,我们可以直接使用gopherus脚本梭哈。

这里只需要注意两点,一点时得到的payload是经过一次比较完美的url编码,为什么说完美?因为它不需要替换%0A -->%0D%0A,所以我们只需要进行一次url编码打入题目中即可。

504网关超时?但是没关系,这不代表我们失败了,我们访问一下我们写入的码,在根目录的shell.php

 用蚁剑连接,在根目录下发现flag

 URL Bypass

这个题的考点与DNS解析有关,像我们平时输入的百度网址www.baidu.com中的www是什么意思?我们简单了解一下域名解析前缀的作用

www:二级域名解析,以百度为例,就是www.baidu.com

@ :主域名解析,即@符号后面直接跟域名,如果前面有东西,会被忽略。

 *  :是指泛解析,是指除已添加的解析记录以外的所有主机都以此为准,以百度为例,就是 12343.baidu.com

 

 

题目要求url必须以它这个东西开头,我们直接用@绕过即可,payload如下,

http://notfound.ctfhub.com@127.0.0.1:80/flag.php

 

数字IP Bypass 

hint提示127和172以及点都被过滤了,用file协议看看源码

 我们需要在127.0.0.1的条件下访问,然后就会读取到CTFHUB全局变量,但我们无法直接使用127.0.0.1来访问,因为被过滤了,所以这里有个玩意儿叫IP地址转换,

IP地址进制转换

 

用这个10进制的数代替127.0.0.1即可,

 挺简单的,不需要思考什么,了解了解这些东西即可。

 

302跳转 Bypass

这题的考点是url短地址的重定向,url短地址的目的是为了使一些比较长的url缩短,增加用户的体验以及便于记忆,它的原理是什么?短地址的重定向是什么意思?

短地址重定向即通过IP构造一个较短的地址,访问这个地址会出现302状态,而302为临时重定向。重定向可以理解为重新确定一个方向,这个方向就是另一个地址即我们真正想要访问的IP。所以这个短地址会引导我们访问我们的IP。

现在再看看题目源码,

//flag.php
<?php

error_reporting(0);

if ($_SERVER["REMOTE_ADDR"] != "127.0.0.1") {
    echo "Just View From 127.0.0.1";
    exit;
}

echo getenv("CTFHUB");
//index.php
<?php

error_reporting(0);

if (!isset($_REQUEST['url'])) {
    header("Location: /?url=_");
    exit;
}

$url = $_REQUEST['url'];

if (preg_match("/127|172|10|192/", $url)) {
    exit("hacker! Ban Intranet IP");
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);
curl_close($ch);

和上一题好像啊感觉,可以先试试IP转换

 这里除了用十进制也可以用16进制,在前面加一个0x即可。

我们还可以试试把localhost代替127.0.0.1看看,

好吧,确实也可以,但是我们这个题目是希望用短地址重定向,我们用短地址生成的工具

在线短地址转换工具-BeJSON.com 

 可惜没出来,说什么被安全软件禁止了,有点无语。

DNS重绑定 Bypass

这个考点也是和DNS解析有关,简单介绍一下DNS重绑定,先说说同源策略,

同源策略:两个URL使用相同的协议、域名、端口 (IE浏览器没有端口)三者相同则称为同源。简单来说同源就是为了使一个域名下的网站只能调用本域名下的资源,防止其它域名的访问造成一些危害。

DNS重绑定:在网页浏览过程中,用户在地址栏中输入包含域名的网址。浏览器通过DNS服务器将域名解析为IP地址,然后向对应的IP地址请求资源,最后展现给用户。而对于域名所有者,他可以设置域名所对应的IP地址。当用户第一次访问,解析域名获取一个IP地址;然后,域名持有者修改对应的IP地址;用户再次请求该域名,就会获取一个新的IP地址。对于浏览器来说,整个过程访问的都是同一域名,所以认为是安全的。(浏览器同源策略) 这就是DNS Rebinding攻击。

再来看题,

//index.php

<?php

error_reporting(0);

if (!isset($_REQUEST['url'])) {
    header("Location: /?url=_");
    exit;
}

$url = $_REQUEST['url'];

if (preg_match("/127|172|10|192/", $url)) {
    exit("hacker! Ban Intranet IP");
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
//flag.php
<?php

error_reporting(0);

if ($_SERVER["REMOTE_ADDR"] != "127.0.0.1") {
    echo "Just View From 127.0.0.1";
    exit;
}

echo getenv("CTFHUB");

还是感觉和上一题好像,我们试试之前的方法,

IP地址转换

试了一下,十进制似乎不可以,但是十六进制可以 

试了一下DNS重定向,好像还是不行。

DNS重绑定

工具:rbndr.us dns rebinding service

绑定两个IP实现DNS重绑定,

 感觉这种题目就是让我们了解了解一些细节的东西,没有特别难的题目。

参考:详解DNS重绑定攻击_PsgQ的博客-CSDN博客_dns重绑定

同源策略(Same-origin policy)是什么? - 简书

最后

以上就是秀丽哑铃为你收集整理的CTFHUB--技能树--SSRF全解(下篇)FastCGI协议Redis协议 URL Bypass数字IP Bypass 302跳转 BypassDNS重绑定 Bypass的全部内容,希望文章能够帮你解决CTFHUB--技能树--SSRF全解(下篇)FastCGI协议Redis协议 URL Bypass数字IP Bypass 302跳转 BypassDNS重绑定 Bypass所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部