软件开发详细设计模板,梧州seo,女生适合做策划吗,普通网站建设的缺陷目录 一、wazuh配置 二、wazuh案例复现 一、wazuh配置
1.1进入官网下载OVA启动软件
Virtual Machine (OVA) - Installation alternatives (wazuh.com) 1.2点击启动部署#xff0c;傻瓜式操作
1.3通过账号#xff1a;wazuh-user#xff0c;密码#xff1a;wazuh进入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 stylecolor:#F00.$msg. Look here~ .$img_path./div;
}
2.2.3这是咱们的前端页面 !DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title
/head
bodydiv classlightspan classglowform enctypemultipart/form-data methodpost action./index.php嘿伙计,传个火,点支烟快活人生input classinput_file typefile nameupload_file /input classbutton typesubmit namesubmit valueupload //form/spanspan classflare/span/div
/body
/html2.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 includeflag.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 -us -type f 2/dev/null
find /usr -perm -us -type f 2/dev/null
find / -perm -us -type f 2/dev/null
三、防御案例
1.wazuh埋点,使用ubentu代理添加代理 2.复制生成的代码在ubentu底下 3.安装刚才的服务
dpkg -i wazuh-agent.deb4.端点重启
sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent 5.配置完成的代表 6.埋点成功