WordPress photogallery插件XSS漏洞复现分析与利用
WordPress起初是一款个人博客系统,后来逐步地演化成为一款内容管理系统软件。它使用PHP语言和MySQL数据库开发而成,用户可以在支持相应版本的PHP 和 MySQL数据库的服务器上方便快捷地搭建自己的博客或者网站。WordPress中的photo-gallery插件可以让用户在短短几分钟内构建十分漂亮精美的照片库。在photo-gallery|/”无法匹配类似于alert(“Hello”);的XSS测试脚本。
wp_check_invalid_utf8函数用于检查字符串中是否存在无效的utf8编码。
_wp_specialchars函数将一些特殊字符转换为其HTML实体,具体包含&, , “, and ‘.这些字符,但只是将这些特殊字符进行html编码存储,并没有将其过滤。
综上,过滤方法并未起作用,因此XSS脚本完整地保存在了MySQL数据库中,如下图所示:
漏洞修复
针对版本号 'keep' ) ); $string = wp_kses_normalize_entities( $string ); $string = wp_kses_hook( $string, $allowed_html, $allowed_protocols ); return wp_kses_split( $string, $allowed_html, $allowed_protocols ); }