CTF自学-SSRF(3)

URL Bypass

看到网页提示url必须以特定网址开头,如果在index.php中除了检查url开头外不做任何检查,用curl直接访问这个url,那可以使用如下原理绕过:

html 复制代码
scheme://userInfo@host:port/path?query#fragment

这是一个完整的url格式,其中@前面为可选项,填写用户信息(用户名,密码等),@后面填写的才是通常url中用到的文件路径,通常访问一个url都是用不到用户信息的,所以不用填写@以及前面的部分,这里为了做绕过,可以在http://notfound.ctfhub.com后面直接加@真正要访问的文件路径,这样服务器会忽略@前面的部分,直接访问后面的文件。

数字IP Bypass

利用进制转换绕过,这里选用16进制绕过

127.0.0.1 -> 0x7f.0x0.0x0.0x1 或者 0x7f000001

302跳转 Bypass

由前面的题目对index.php源码的分析可知curl中开启了跟踪跳转,所以让其访问一个具有跳转效果的网页即可,这里我再利用本地的服务器完成跳转。

通过如下页面实现跳转

顺带一提这题用IP Bypass依然有效

附上本题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);

DNS重绑定 Bypass

Domain Name System即域名系统,提供域名到IP地址的转换的服务器即DNS服务器。如果一台服务器信任一台DNS服务器,只在第一次查询一个新域名时检查DNS返回的ip是否合法,我们就可以利用DNS重绑定攻击,第一次查询域名时返回合法IP,此后再次查询时返回非法IP(如127.0.0.1)。

访问该网页可以直接实现DNS重绑定(这里)。如图所示,在下面分别输入我们需要访问的IP和一个合法IP,该然后当我们查询下面的域名时,该DNS服务器就会在两个IP之间来回横跳。

将两个IP设置好后,把下面的域名拷贝到题目中跳转的URL后面,并记得补全路径

这样就成功实现了DNS重绑定

另外,本题依然可以用16进制(0x7f000001)绕过,不过不支持点分16进制(0x7f.0x0.0x0.0x1)

相关推荐
见青..10 小时前
phpMyAdmin权限提升
web安全·网络安全·phpmyadmin
数据知道11 小时前
邮件安全实战:SPF/DKIM/DMARC 配置与钓鱼绕过
网络·安全·web安全·网络安全·邮件安全
世界尽头与你15 小时前
Android Root 检测原理
android·安全·网络安全·渗透测试
kp0000015 小时前
如何平衡模型输出的“有用性”和“安全性
人工智能·安全·网络安全·信息安全·ai安全
世界尽头与你17 小时前
iOS 越狱检测原理
安全·网络安全·ios·信息安全·渗透测试
kp000001 天前
大模型输出造成信息泄露类型
人工智能·网络安全·信息安全·ai安全
kp000001 天前
System Prompt Leakage(系统提示词泄露)及安全防御
网络·安全·网络安全·信息安全·prompt·ai安全
X7x51 天前
攻防对抗的结构化思维:深度拆解网络杀伤链(Kill Chain)与现代防御演进
网络安全·网络攻击模型·安全架构·网络杀伤链·kill chain
kp000001 天前
AI大模型,如何区分善意提问与Prompt注入攻击
人工智能·网络安全·信息安全·prompt·ai安全
kp000002 天前
AI系统输入安全基线
人工智能·安全·网络安全·信息安全·ai安全