前言
- 掌控安全里面的靶场漏洞挖掘与代码审计,练练手!
本地包含漏洞审计
- 环境 :http://wjbh522a.zs.aqlab.cn/
- 默认弱密码登陆 admin admin
登陆之后发现是个4.8.1的版本,其实这题做的方法太多了,也可以不用代码审计,网上有一堆payload远程文件包含,不过这个靶场说下源代码审计,那就看看。
-
下载源码:https://www.phpmyadmin.net/files/4.8.1/
-
因为提示说了文件包含,直接全局搜索include
分析了一下代码,想要文件包含的条件
1、target传参不为空
2、是字符串
3、 参数开头不为index
4、target传参内容不在blacklist中
5、checkPageValidity返回值为true
$target_blacklist = array (
'import.php', 'export.php'
);
// If we have a valid target, let's load that script instead
if (! empty($_REQUEST['target'])
&& is_string($_REQUEST['target'])
&& ! preg_match('/^index/', $_REQUEST['target'])
&& ! in_array($_REQUEST['target'], $target_blacklist)
&& Core::checkPageValidity($_REQUEST['target'])
) {
include $_REQUEST['target'];
exit;
}
定位一下checkPageValidity方法
public static function checkPageValidity(&$page, array $whitelist = [], $include = false)
{
if (empty($whitelist)) {
$whitelist = self::$goto_whitelist;
}
if (! isset($page) || !is_string($page))