【CVE-2018-7172】Wondercms 2.4.0 任意文件删除漏洞

  • 内容
  • 相关
漏洞位置在index.php 279行左右,

这里对删除的文件名没有任何限制,导致了可以进行目录跳转,从而删除其他目录的文件,即任意文件


private static function deleteFileThemePluginAction()
	{
		if (! wCMS::$loggedIn) {
			return;
		}
		if (isset($_REQUEST['deleteFile']) || isset($_REQUEST['deleteTheme']) || isset($_REQUEST['deletePlugin']) && isset($_REQUEST['token'])) {
			if (hash_equals($_REQUEST['token'], wCMS::generateToken())) {
				$deleteList = [
					[__DIR__.'/files', 'deleteFile'],
					[__DIR__.'/themes', 'deleteTheme'],
					[__DIR__.'/plugins', 'deletePlugin'],
				];
				foreach($deleteList as $entry) {
					list($folder, $request) = $entry;
					$filename = isset($_REQUEST[$request]) ? trim($_REQUEST[$request]) : false;
					if (!$filename || empty($filename)) {
						continue;
					}
					if ($filename == wCMS::get('config', 'theme')) {
						wCMS::alert('danger', 'Cannot delete currently active theme.');
						wCMS::redirect();
						continue;
					}
					if (file_exists("{$folder}/{$filename}")) {
						wCMS::recursiveDelete("{$folder}/{$filename}");
						wCMS::alert('success', "Deleted {$filename}.");
						wCMS::redirect();
					}
				}
			}
		}
	}
这里filename直接进行request,并且没有任何限制,因此可以使用../来进行目录的跳转

后面跟进recursiveDelete这个函数,
位于index.php 585行


	private static function recursiveDelete($file)
	{
		if (is_dir($file)) {
			$list = glob($file . '*', GLOB_MARK);
			foreach ($list as $dir) {
				wCMS::recursiveDelete($dir);
			}
			rmdir($file);
		} elseif (is_file($file)) {
			unlink($file);
		}
	}
这里的file既可以是目录,也可以是单独的文件,这里都有判断,但是页面功能为删除file目录下的文件,通过修改文件名这个参数,从而可以达到任意文件删除

下面给出利用过程(poc)

1.png

cms给出的文件上传功能,所有上传文件都在这个file目录下

2.png
点击这个删除的按钮,并进行抓包

3.png

deleteFile参数没有任何限制,导致可以跨目录删除

4 (2).png

新建了一个test.txt文件用作测试,将上面的deleteFile参数改为../test.txt,然后抓包放行

5.png

本文标签:

版权声明:若无特殊注明,本文皆为《颓废》原创,转载请保留文章出处。

收录状态:[百度已收录] | [360已收录] | [搜狗已收录]

本文链接:【CVE-2018-7172】Wondercms 2.4.0 任意文件删除漏洞 - https://www.0dayhack.com/post-792.html

严重声明:本站内容来自于互联网,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规,黑客不是骇客,黑客维护网络安全

发表评论

电子邮件地址不会被公开。 必填项已用*标注