网络安全--wazuh环境配置及漏洞复现

目录

一、wazuh配置

 二、wazuh案例复现


一、wazuh配置

1.1进入官网下载OVA启动软件

Virtual Machine (OVA) - Installation alternatives (wazuh.com)

 1.2点击启动部署,傻瓜式操作

1.3通过账号:wazuh-user,密码:wazuh进入wazuh

1.4将桥接模式更改为仅nat模式 1.5更改配置之后输入重新启动命令 service network restart

查看自身ip

ip a

1.6配置已好,本地开启小皮Apache直接访问

1.7有时会因为网络问题出现如下问题,我们采用重启wazuh即可

wazuh重启:

systemctl restart wazuh-manager

 二、wazuh案例复现

2.1wazuh初体验

当我们使用本地的cmd通过ssh一直连接wazuh的时候便会出现十级报错,此次在后台可以明显的看到有爆破的提示扫描,通过分析其具体的数据包以及对应的规则理解到wuzuh在外来访问的时候,会触发到解码器,其作用是用来抓取关键信息,其中核心便是正则表达式进行正则匹配,当数据来了之后,wazuh程序会分析我们的日志,把这些日志信息发到相对应的解码器去,通过解码器去进行解码,解码完后,再发送到相应的规则,然后把解码完的数据通过规则,再次进行匹配,最终展示到仪表盘的Modules里的Security events里

复现例图:


 

2.2我们通过一道文件上传题举例其背后拦截的原理

2.2.1题目: 

2.2.2第一步:来到nginx目录下/var/www/html创建index.php并写入案例

 案例:

<?php
function fun($var): bool{$blacklist = ["\$_", "eval","copy" ,"assert","usort","include", "require", "$", "^", "~", "-", "%", "*","file","fopen","fwriter","fput","copy","curl","fread","fget","function_exists","dl","putenv","system","exec","shell_exec","passthru","proc_open","proc_close", "proc_get_status","checkdnsrr","getmxrr","getservbyname","getservbyport", "syslog","popen","show_source","highlight_file","`","chmod"];foreach($blacklist as $blackword){if(strstr($var, $blackword)) return True;}return False;
}
error_reporting(0);
//设置上传目录
define("UPLOAD_PATH", "./uploads");
$msg = "Upload Success!";
if (isset($_POST['submit'])) {
$temp_file = $_FILES['upload_file']['tmp_name'];
$file_name = $_FILES['upload_file']['name'];
$ext = pathinfo($file_name,PATHINFO_EXTENSION);
if(!preg_match("/php/i", strtolower($ext))){
die("只要好看的php");
}$content = file_get_contents($temp_file);
if(fun($content)){die("诶,被我发现了吧");
}
$new_file_name = md5($file_name).".".$ext;$img_path = UPLOAD_PATH . '/' . $new_file_name;if (move_uploaded_file($temp_file, $img_path)){$is_upload = true;} else {$msg = 'Upload Failed!';die();}echo '<div style="color:#F00">'.$msg." Look here~ ".$img_path."</div>";
}

2.2.3这是咱们的前端页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div class="light"><span class="glow"><form enctype="multipart/form-data" method="post" action="./index.php">嘿伙计,传个火,点支烟,快活人生?!<input class="input_file" type="file" name="upload_file" /><input class="button" type="submit" name="submit" value="upload" /></form></span><span class="flare"></span></div>
</body>
</html>

 2.2.4执行

 2.4.5分析

其中原因也就在这个循环判断和检测身上,而检测到底是检测什么,咱们继续往下看 

2.4.6额外补充(限制原因在此)

2.4.6.1  eval函数中的参数是字符

2.4.6.2  assert函数中的参数为表达式(不能在其中执行字符),非要用:好,上编码选择base64(原理:多加了一个eval函数)

2.4.6.3   异或取反绕过,百分号,变相取等,字符串拼接

而我们可以利用以上所说的为我们自身建造php后门进阶到shell反弹获取权限

抛出例题:

异或:

①因为代码中对字符"A"和字符"`"进行了异或操作。在PHP中,两个变量进行异或时,先会将字符串转换成ASCII值,再将ASCII值转换成二进制再进行异或,异或完,又将结果从二进制转换成了ASCII值,再将ASCII值转换成字符串

<?phpecho "A"^"`";
?>

 ②抛出真正的异或来分析

<?phpfunction B(){echo "Hello Angel_Kitty";}$_++;$__= "?" ^ "}";$__();
?>

$_++意思为下划线自增, $__="?"是跟我们①所说的一样异或运算,得到的结果进行赋值,知道这两个小东西相等那异或出B此进程也就结束,输出如上所示

其余的进阶都与这个小东西同理,换了大于小于号,其实换汤不换药,本质上都是变相取等让命令输出

异或失效:

那么当异或和取反也无法解决的代码升级问题呢:(下划线和$符禁止,自增异或取反失效)

代码如下:

<?php include'flag.php'; if(isset($_GET['code'])){ $code=$_GET['code']; if(strlen($code)>50){ die("Too Long."); } if(preg_match("/[A-Za-z0-9_]+/",$code)){ die("Not Allowed."); } @eval($code); 
}else{ highlight_file(__FILE__); 
} 

本地输出示例: 

在看代码之前我们先了解一个东西:PHP7前是不允许($a)();这样的方法来执行动态函数的,但PHP7中增加了对此的支持。所以,我们可以通过(‘phpinfo’)();来执行函数;第一个括号可以是任意PHP表达式

举个栗子:

<?php
$str = 'phpinfo';
$res = urlencode(~$str);
echo $res;
?>

输出结果:

利用php的特性

根据这个小案例总结上面咱们提出例题的问题:

如何绕过?只要PHP上传过程中,自然会生成一个临时文件,这个临时文件在/tmp/目录一下,名字大概如(PHP(随机字符)),那么我在访问文件的时候,我就可以使用文件上传(咱们可以上传,但是主机不接收,但是临时文件还是会生成)

 而文件如何执行成为了当下的一个问题:在linux下我们执行文件可以用./但是要赋予文件相应权限,而还有一种方法可以执行,那便是(点  空格   /):

新的问题出现了,如何去匹配文件呢,那不得不说linux下文件名支持用glob通配符代替

那么便就可以是/???/???????,却会出现错误,因为我们是全局匹配,这样/bin/目录下的文件好像也符合要求,那么就该有请我们的ASCII表了,我们可以利用前面额外补充提到的取反这个东西去进行取反匹配,结果呢,总不尽人意会出现一大坨一大坨,那就证明有些东西还是无法排除的掉,而glob有一个有趣的写法,那便是支持【0-9】来表示一个范围,还有所有的文件名都是小写,那么我们离答案也越来越近了,我们只需要找到一个大写字母的“glob”通配符,就能精准的找到我们所要执行的文件(. /???/???????[@-[ ]),看图二可知,这样的匹配确实是可以匹配到东西的(不看其他啥,最后一个字母是大写就已经跟我们确认过眼神了),那这样一来,我们的实现就有办法了,那么理论形成,实践开始,关注图三:

一大坨:

 图二:

 图三:我们模拟一个临时上传就会发现文件是在/tmp/目录下面的

 接下来我们通过抓包,细致研究:

 首先code接受的参数是临时文件(code匹配的值还是要放回eval),一补两操作,一个接收pose一个接收code ,最终执行在eval,要注意的是匹配的时候空格是+(回忆sql注入)

 pass:小补充(使用unbentu的一定要看)调成false,就不会生成临时文件影响咱们匹配了

 vim /etc/systemd/system/multi-user.target.wants/apache2.service

 最后一个问题:怎么样去执行才好

PHP: eval - Manual

 重点:闭合标签,echo输出(=),注意到这两点加个访问标签即可(自此成功)

 写入端口密码,蚁剑直接连接,随便写文件(wazuh出来了,全盘监控会扫描到,接下来我们继续看向wazuh),然后反弹shell,接下来重要的是提权问题(利用find)

find /bin -perm -u=s -type f 2>/dev/null
find /usr -perm -u=s -type f 2>/dev/null
find / -perm -u=s -type f 2>/dev/null

三、防御案例

1.wazuh埋点,使用ubentu代理(添加代理)

2.复制生成的代码在ubentu底下 

 3.安装刚才的服务

dpkg -i wazuh-agent.deb

4.端点重启

sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent

 5.配置完成的代表

6.埋点成功 

 

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

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

相关文章

系统架构:数据库

文章目录 数据库设计关系代数规范化理论求候选键特殊函数依赖Armstrong公理范式无损分解 数据库设计 步骤产出说明1.根据数据要求和处理要求进行需求分析数据流图、数据字典、需求说明书等分析数据流向、数据详细含义等&#xff0c;分析具体需求2.对现实世界进行抽象&#xff0…

Day3: 前端路由(基础篇)

❝ 「目标」: 持续输出&#xff01;每日分享关于web前端常见知识、面试题、性能优化、新技术等方面的内容。 ❞ ❝ 「主要面向群体&#xff1a;」前端开发工程师&#xff08;初、中、高级&#xff09;、应届、转行、培训等同学 ❞ Day3-今日话题 想必大家经常会在面试中或者工作…

AD域组策略开机脚本客户端不执行:解决方法

本例实现的计算机开机重置本地管理员的密码 1、创建组策略 2、在AD域中添加脚本 3、注意脚本的路径&#xff1a;就是打开 Show Files 目录 4、本例建了2个脚本&#xff0c;一个是用来测试的 &#xff08;1&#xff09;CreateFile.ps1 文件&#xff1a;用来在D盘创建一个 file…

Linux权限

Linux中一切皆文件&#xff0c;那么文件就应该有相对于的类型&#xff0c;而在Linux当中&#xff0c;类型不是直接看后缀来决定的。 -普通文件、文本、可执行、归档文件等d目录b块设备、block、磁盘c字符设备、键盘、显示器p管道文件s网络socket文件l链接文件 link 然后后面的九…

C++入门:引用是什么

目录 1.引用的概念 2.引用的特征 3.常引用 4.引用使用场景 5.传值&#xff0c;传引用效率比较 6.引用与指针的区别 1.引用的概念 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空 间&#xff0c;它和它引用…

Can‘t find end of central directory : is this a zip file ? at XMLHttpRequest

导出woed出现这个报错,原因其实很简单,路径写错了, 这个word首先必须是docx格式,然后必须放在public文件包下 如果放在public文件包下还没有用,则放在public包下 参考帖子: https://www.cnblogs.com/hejun26/p/13647927.html

数据结构——栈和队列

栈和队列的建立 前言一、栈1.栈的概念2.栈的实现3.代码示例&#xff08;1&#xff09;Stack.h&#xff08;2&#xff09;Stack.c&#xff08;3&#xff09;Test.c&#xff08;4&#xff09;运行结果&#xff08;5&#xff09;完整代码演示 二、队列1.队列的概念2.队列的实现3.代…

容器和云原生(三):kubernetes搭建与使用

目录 单机K8S docker containerd image依赖 kubeadm初始化 验证 crictl工具 K8S核心组件 上文安装单机docker是很简单docker&#xff0c;但是生产环境需要多个主机&#xff0c;主机上启动多个docker容器&#xff0c;相同容器会绑定形成1个服务service&#xff0c;微服务…

在vue中使用codemirror格式化JSON

1. 下载指定版本的包 (避免引发不必要的错误) yarn add codemirror^5.64.02. 导入需要的文件 import CodeMirror from codemirrorimport codemirror/addon/lint/lint.cssimport codemirror/addon/fold/foldgutter.cssimport codemirror/lib/codemirror.cssimport codemirror/t…

【C++/C 实现球球大作战】

目录 1.引言2.游戏设计&#xff1a;概述游戏的玩法和操作方式。3.游戏实现&#xff08;1&#xff09;函数 GameInit() 初始化游戏的函数。&#xff08;2&#xff09;函数 GameDraw() 用于绘制游戏场景的函数。&#xff08;3&#xff09;函数 keyControl(int speed) 负责处理键盘…

《动手学深度学习》-20卷积层里的填充和步幅

沐神版《动手学深度学习》学习笔记&#xff0c;记录学习过程&#xff0c;详细的内容请大家购买书籍查阅。 b站视频链接 开源教程链接 卷积层里的填充和步幅 应用5x5大小的卷积核&#xff0c;输入32x32&#xff0c;输出会变为28x28。 更大的卷积核更快地减小输出大小。 导致网…

鲁图中大许少辉博士八一新书《乡村振兴战略下传统村落文化旅游设计》山东省图书馆典藏

鲁图中大许少辉博士八一新书《乡村振兴战略下传统村落文化旅游设计》山东省图书馆典藏

ubuntu 安装 postgresql以及 wal回滚

安装 sudo apt install postgresql postgresql-contrib设置远程连接 修改/etc/postgresql/12/main/postgresql.conf **将listen_addresses 改成 ***修改/etc/postgresql/12/main/pg_hba.conf 找到如下信息 #IPv4 local connections: 修改为 host all all 0.0.0.0/0 md5 重启…

Git问题:解决“ssh:connect to host github.com port 22: Connection timed out”

操作系统 Windows11 使用Git IDEA 连接方式&#xff1a;SSH 今天上传代码出现如下报错&#xff1a;ssh:connect to host github.com port 22: Connection timed out 再多尝试几次&#xff0c;依然是这样。 解决 最终发现两个解决方案&#xff1a;&#xff08;二选一&#xf…

反转链表II

江湖一笑浪滔滔&#xff0c;红尘尽忘了 题目 示例 思路 链表这部分的题&#xff0c;不少都离不开单链表的反转&#xff0c;参考&#xff1a;反转一个单链表 这道题加上哨兵位的话会简单很多&#xff0c;如果不加的话&#xff0c;还需要分情况一下&#xff0c;像是从头节点开始…

淘宝Tmall1688京东API接口系列,海量数据值得get!

Api接口也就是所谓的应用程序接口&#xff0c;api接口的全称是Application Program Interface&#xff0c;通过API接口可以实现计算机软件之间的相互通信&#xff0c;开发人员可以通过API接口程序开发应用程序&#xff0c;可以减少编写无用程序&#xff0c;减轻编程任务&#x…

HJ53 杨辉三角的变形

以上三角形的数阵&#xff0c;第一行只有一个数1&#xff0c;以下每行的每个数&#xff0c;是恰好是它上面的数、左上角数和右上角的数&#xff0c;3个数之和&#xff08;如果不存在某个数&#xff0c;认为该数就是0&#xff09;。 求第n行第一个偶数出现的位置。如果没有偶数…

2023年计算机设计大赛国三 数据可视化 (源码可分享)

2023年暑假参加了全国大学生计算机设计大赛&#xff0c;并获得了国家三等奖&#xff08;国赛答辩出了点小插曲&#xff09;。在此分享和记录本次比赛的经验。 目录 一、作品简介二、作品效果图三、设计思路四、项目特色 一、作品简介 本项目实现对农产品近期发展、电商销售、灾…

删除链表的中间节点

题目&#xff1a; 示例&#xff1a; 思路&#xff1a; 这个题类似于寻找链表中间的数字&#xff0c;slow和fast都指向head&#xff0c;slow走一步&#xff0c;fast走两步&#xff0c;也许你会有疑问&#xff0c;节点数的奇偶不考虑吗&#xff1f;while执行条件写成fast&&…

「隐语小课」拆分学习之“水平拆分学习”

一、引言 拆分学习是 2018 年由 MIT 最先提出的分布式算法。本文结合该领域的相关英文文献&#xff0c;介绍水平拆分学习的基本方法&#xff0c;同时还将对比拆分模型与中心化模型、联邦模型在不同条件下模型效率和准确性。拆分学习作为主流的隐私计算学习范式之一&#xff0c…