MyBB是国际上非常优秀的免费论坛软件,最大的特色是简单但是功能却出奇的强大。支持多国语言,可以分别设置前台后台的语言,每个用户都可以设置自己使用何种语言访问论坛包括自己的时区等,自定义功能强大到没有做不到只有想不到。
漏洞影响多个版本
本次影响版本:1.6x & 1.8x
测试版本:1.8.3 (最新), 以及1.6.16 (1.6系列最新)
正是因为其强大影响力,我便开始肆意玩耍MyBB以及监控请求,在此期间我注意到一些极有可能导致漏洞出现的东西,这些都已经在多个站点上进行了测试。
测试过程
首先损坏MyBB很简单。当你去发布一个新的帖子,在提交时它会请求一些东西,以下为来自Hackforums论坛post请求的示例:
POST http://www.hackforums.net/newreply.php?tid=4602700&processed=1 HTTP/1.1
Host: www.hackforums.net
User-Agent: Mozilla/5.0 (Windows NT 5.3; rv:34.0) Gecko/20100101 Firefox/34.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://www.hackforums.net/newreply.php?tid=4602700
Cookie: *
Connection: keep-alive
Content-Type: multipart/form-data; boundary=------71842462512788
Content-Length: 1588
------71842462512788
Content-Disposition: form-data; name="my_post_key"
****** ------71842462512788 Content-Disposition: form-data; name="message_new" Hey dude, I love your site Omni. Can I get a free upgrade? ------71842462512788 Content-Disposition: form-data; name="message" Hey dude, I love your site Omni. Can I get a free upgrade? ------71842462512788 Content-Disposition: form-data; name="submit" Post Reply ------71842462512788 Content-Disposition: form-data; name="action" do_newreply ------71842462512788 Content-Disposition: form-data; name="replyto" ------71842462512788 Content-Disposition: form-data; name="posthash" ******
------71842462512788
Content-Disposition: form-data; name="attachmentaid"
------71842462512788
Content-Disposition: form-data; name="attachmentact"
------71842462512788
Content-Disposition: form-data; name="subject"
*
------71842462512788
Content-Disposition: form-data; name="quoted_ids"
------71842462512788
Content-Disposition: form-data; name="tid"
4602700
------71842462512788--
对于MyBB这个系统我们已经了解它的一些字段了,其中第一个就是post key,如果没有这个字段,我们就不能发送任何帖子。获取这个key十分简单,稍后我们会进行详细解释。现在我们需要获取的是posthash,posthash仅仅只是一个MD5字符串,只需创建一个有效的MD5字符串就可以绕过它。我可以告诉你这是因为占位符的原因,但是深究其内在不是我们今天要讨论的问题。