主页 > 网络知识 > 利用sql渗透

利用sql渗透

事情是这样的,在某次省hw的时候,对目标进行打点的时候,发现ip下存在四个域名,在一个域名中发现了beifen.zip文件,而网址的功能是一个社区类型的网址。

下载后打开,发现是程序的源码,sql文件都在里面。

 

报告,我已打入地方内部

 

找程序中找到的数据库的ip、账号、密码等信息,试试能不能连接。

 

报告,我已打入地方内部

 

 

报告,我已打入地方内部

 

审计源码,发现漏洞

既然连接不上,那么只能审计一下源码了,先拿工具扫一下。

 

报告,我已打入地方内部

 

 

经过查看,发现/application/index/controller/system/SystemUpgradeclient.php中的setcopydel方法可以任意提交参数。

 

报告,我已打入地方内部

 

可以看到以post方式接收了俩个参数,一个是id,一个是ids

if (is_array($post['ids'])) {    foreach ($post['ids'] as $file) {        $fileservice->del_dir(ROOT_PATH . 'public' . DS . 'copyfile' . $file);    } } if ($post['id']) {    $copyFile = ROOT_PATH . 'public' . DS . 'copyfile' . $post['id'];    // echo $copyFile;exit;    $fileservice->del_file($copyFile); }

ids是需要数组的,然后拼接路径,传入$fileservice->del_dir()方法中。id没有类型判断,直接拼接路径传入$fileservice->del_file()方法中。那来看看这俩个方法中做了什么事情。$fileservice->del_dir()方法是删除目录

 

报告,我已打入地方内部

 

删除目录,看来这是一个任意文件删除漏洞,分析下源码。

static function del_dir($dirName) {    if (!file_exists($dirName)) # 判断文件或目录是否存在,不存在就返回false    {        return false;    }    $dir = opendir($dirName);   # 打开一个目录,读取它的内容    while ($fileName = readdir($dir))    {        $file = $dirName . '/' . $fileName;        if ($fileName != '.' && $fileName != '..')        {            if (is_dir($file))  # 判断是不是目录,是目录就在调用一次本身方法            {                self::del_dir($file);            }            else            {                unlink($file);  # 删除文件            }        }    }    closedir($dir);    return rmdir($dirName);     # 删除目录 }

$fileservice->del_file()方法是删除文件

 

报告,我已打入地方内部

 

这就没有什么好说的了,判断文件是否存在,然后删除。但是,这是hw啊,这漏洞什么用都没有啊,只能继续找其他漏洞了。
经过漫长的查找终于在applicationadmincontrollersettingSystemConfig.php中的发现了view_upload上传的方法。 提取码请登录后查看!
  • 全部评论(0
    还没有评论,快来抢沙发吧!