代码审计入门:MiniCMS详细分析 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

代码审计入门:MiniCMS详细分析

申博_新闻事件 申博 69次浏览 已收录 0个评论

写在之前

MiniCMS体积小,代码短小易读,可以详细剖析其实行流程。经由过程进修可以大抵熟习MVC框架的组织,对Web server的背景处置惩罚有一个基础相识。

简介

MiniCMS是由达达设想编写的一个针对个人网站设想的微型内容治理体系。它的特点是:

1. 不需要数据库在支撑,只需要一个可以运转PHP的Web环境。

2. 只针对个人网站设想,没有庞杂的成员治理和权限设置。

3. 没有分类只要标签,免去宣布文章时究竟该怎样分类的纠结。

4. 只要“文章”和“页面”两该个体系,没有“批评”、“插件”、“主题”,让你更专注于制造内容。

项目地点:https://github.com/bg5sbk/MiniCMS

装置

· 解压

· 复制并重定名install.txt为install.php

· 在PHP环境下,浏览器翻开install.php,填写网站途径、网站名等信息,点击装置即可(此处填写网站信息等可以注入敕令形成RCE,然则因为install.php在装置完成后会自动删除,破绽不可应用,所以并没有太大的要挟)

装置完成后的目次构造

│  build.php
│  index.php 全部项目的进口,起首引入中心库mc-core.php,然后举行路由,对路由效果举行响应的衬着,相当于MVC中的C
│  install.txt 复制为php文件后,用来装置MiniCMS
│  README.md
│
├─mc-admin 治理功用的完成
│      conf.php 用户设置页面,包括吸收和保留变动的设置
│      editor.php 编辑器的大小、款式调解的库
│      foot.php html<foot>标签组织
│      head.php token考证,html<head>标签组织;若考证失利,跳转至主页
│      index.php 背景上岸身份考证页面
│      page-edit.php 页面编写处置惩罚逻辑,包括显现编辑页面、吸收提交的页面、页面序列化贮存
│      page.php 治理页面的库,声明加载数据、删除页面、复原页面(从回收站复原)
│      post-edit.php 文章编写处置惩罚逻辑,包括显现编辑页面、吸收提交的页面、页面序列化贮存
│      post.php 治理文章的库,声明加载数据、删除文章、复原文章(从回收站复原)
│      style.css 背景用到的CSS
│
└─mc-files
    │  markdown.php 一个开源的markdown剖析库
    │  mc-conf.php 设置文件,包括用户名和暗码等敏感信息
    │  mc-core.php 引入mc-tags、mc-conf,声明404函数
    │  mc-rss.php 订购RSS的链接
    │  mc-tags.php 相当于M,引入markdown、包括一些中心函数,包括了加载种种信息的函数(网站名、文章数、行进退却等,中心有种种过滤,可以重点剖析)
    │
    ├─pages
    │  └─index
    │          delete.php 运用数组贮存了删除页面的信息(id、题目、标签等)与data文件夹内的文章数据一一对应
    │          draft.php 运用数组贮存了草稿页面的信息(id、题目、标签等)与data文件夹内的文章数据一一对应
    │          publish.php 运用数组贮存了已宣布的页面的信息(id、题目、标签等)与data文件夹内的文章数据一一对应
    │
    ├─posts
    │  ├─data 贮存了文章内容的反序列化数据(文章内容等)
    │  └─index
    │          delete.php 运用数组贮存了删除的文章的信息(id、题目、标签等)与data文件夹内的文章数据一一对应
    │          draft.php 运用数组贮存了草稿文章的信息(id、题目、标签等)与data文件夹内的文章数据一一对应
    │          publish.php 运用数组贮存了已宣布文章的信息(id、题目、标签等)与data文件夹内的文章数据一一对应
    │
    └─theme
            index.php 主题文件,决议了页面的作风,将C传入的信息显现出来,相当于V
            style.css 主题运用的CSS作风

访客端

路由与控制器(MVC-C)

· MiniCMS在index.php页面举行简朴的正则婚配和字符串对照路由,index.php会掏出$_SERVER[‘QUERY_STRING’]并举行正则婚配;重要有以下几种路由:

1. preg_match(‘|^post/([a-z0-5]{6})$|’, $qs, $matches) // 路由至检察文章功用。

2. preg_match(‘|^tag/([^/]+)/(\?page=([0-9]+)){0,1}$|’, $qs, $matches) // 路由至检察页面功用。

3. preg_match(‘|^date/([0-9]{4}-[0-9]{2})/(\?page=([0-9]+)){0,1}$|’, $qs, $matches) // 路由至按日期检察文章。

4. preg_match(‘|^archive/$|’, $qs, $matches) // 路由至按archive检察文章。

5. $qs == ‘rss/’ // 路由至返回RSS定阅。

6. preg_match(‘|^(([-a-zA-Z0-5]+/)+)$|’, $qs, $matches) // 路由至page检察文章。

7. default:index // 其他状况,路由至主页。

视图(MVC-V)

· mc_files/theme/index.php文件中,经由过程。

<div class="content"><?php mc_the_content(); ?></div>

直接衬着路由到的内容。

· 经由过程mc-files/theme/style.css修正主页的CSS作风。

模子(MVC-M)

· 模子M相干的功用重要在 mc-files/mc-tags.php中完成。 重要函数有:

1. mc_site_name 猎取网站名。

2. mc_site_desc 猎取网站题目后缀。

3. mc_site_link 猎取网站链接。

4. mc_nick_name 猎取昵称。

5. mc_theme_url 猎取主题文件途径。

6. mc_is_post 返回路由是不是是post。

7. mc_is_page 返回路由是不是是page。

8. mc_is_tag 返回路由是不是是tag。

9. mc_is_date 返回路由是不是是date。

10. mc_is_archive 返回路由是不是是archive。

11. mc_tag_name 猎取标署名。

12. mc_date_name 猎取日期。

13. mc_has_new 猎取是不是有更新的页面(页面底部的页数)。

NSA泄漏东西被用来流传加密钱银挖矿机

普通网络犯罪和针对性攻击的区别在于:普通网络犯罪会将即时的经济目标作为主要动机,而针对性攻击可能还会有其他的目标,比如窃取知识产权。此外,攻击者的思维模式也是不同的。正常的网络犯罪分子需要考虑如何入侵更多的个人设备,而针对性攻击需要计划如何入侵和获取企业网络的访问权限,并尽可能地隐蔽。 除此之外,针对性攻击活动常常包括扩展性的计划以及高度专业化的创建和使用。另一方面,正常的攻击者可能没有能力或资源来规划复杂的攻击活动,他们使用的工具更加通用,而且一般

14. mc_has_old 猎取是不是有更早的页面(页面底部的页数)。

15. mc_goto_old 打印输出更早页面的超链接。

16. mc_goto_new 打印输出更晚页面的超链接。

17. mc_date_list 打印输出日期列表。

18. mc_tag_list 打印输出标签列表。

19. mc_next_post 推断是不是有下一个post。

20. mc_the_title 打印输出题目。

21. mc_the_date 打印输出日期。

22. mc_the_time 打印输出时刻。

23. mc_the_tags 打印输出标签。

24. mc_the_content 打印输出重要内容(文章、页面)。

25. mc_the_link 打印输出超链接和其题目。

26. mc_the_url 打印输出url的超链接。

27. mc_can_comment 返回是不是可以批评。

28. mc_comment_code 猎取填入的第三方批评代码。

背景治理端

背景治理端直接用代码按功用写入文件,各文件的功用以下:

· conf.php 用户设置页面,包括吸收和保留变动的设置。

· editor.php 编辑器的大小、款式调解的库。

· foot.php html标签组织。

· head.php token考证,html标签组织;若考证失利,跳转至主页。

· index.php 背景上岸身份考证页面。

· page-edit.php 页面编写处置惩罚逻辑,包括显现编辑页面、吸收提交的页面、页面序列化贮存。

· page.php 治理页面的库,声明加载数据、删除页面、复原页面(从回收站复原)。

· post-edit.php 文章编写处置惩罚逻辑,包括显现编辑页面、吸收提交的页面、页面序列化贮存。

· post.php 治理文章的库,声明加载数据、删除文章、复原文章(从回收站复原)。

· style.css 背景用到的CSS。

CVE破绽

在MiniCMS公然时期,爆出了多个CVE破绽,而且至今未修复,重要以下(按时刻前后顺序排列):

· CVE-2018-1000638 反射型XSS 存在位置:/MiniCMS-master/mc-admin/page.php处date参数存在XSS破绽。

· CVE-2018-10227 贮存型XSS 存在位置:/MiniCMS-master/MiniCMS-master/mc-admin/conf.php 在设置中修正网站地点处存在XSS破绽,可直接贮存XSS payload。

· CVE-2018-10296 贮存型XSS 存在位置: /MiniCMS-master/mc-admin/post-edit.php 编辑文章题目处可直接贮存XSS payload。

· CVE-2018-10423 个人认为不是破绽,只是个BUG,此处的BUG只是网页中的超链接毛病地指向了网站根目次,点击后就会去接见网站根目次,这个时刻,洞主的apache设置没有关文件遍历,就误认为是CMS的破绽,显然是不对的,洞主应该是刷分的,没想到居然过了:)。

· CVE-2018-10424 物理途径泄漏 存在位置:/MiniCMS-master/mc-admin/post-edit.php处将GET的参数id改成不存在的文件名,会爆出物理地点。

· CVE-2018-15899 反射型XSS 存在位置:/minicms/mc-admin/page.php的GET参数date存在XSS(好像与CVE-2018-1000638反复了。。)。

· CVE-2018-16233 反射型XSS 存在位置:/MiniCMS-1.10/mc-admin/post-edit.php处的POST参数tags存在XSS。

· CVE-2018-16298 反射型XSS 存在位置:/MiniCMS-1.10/mc-admin/post.php的GET参数tag存在XSS。

· CVE-2018-17039 反射型XSS 存在位置:/mc-admin/index.php运用恣意GET参数并取XSS payload,可在IE浏览器中实行JS。

· CVE-2018-18890 物理途径泄漏 存在位置:post.php?delete=qe54cn&state=delete删除不存在的文章时爆出物理途径。

· CVE-2018-18891 部份文件删除(逻辑破绽,删除操纵在身份认证之前举行) 存在位置:/mc-admin/post.php?delete=qe54cn&state=delete不必上岸可直接删除文章。

· CVE-2018-18892 鸡肋的RCE 存在位置: install.php在装置时在设置处可以向设置文件直接注入PHP代码;因为在MiniCMS装置终了后此文件会自我删除,在现实状况下并没有太大的作用。

· CVE-2018-20520 反射型XSS 存在位置:类似于CVE-2018-17039,/MiniCMS1/mc-admin/post-edit.php运用恣意GET参数并取XSS payload,可在IE浏览器中实行JS。

· CVE-2018-9092 CSRF 存在位置: http://127.0.0.1//MiniCMS/mc-admin/post.php?delete=aaaaaa&state=publish&date=&tag= 此处的CSRF会致使恣意文章删除:

· CVE-2019-9603 CSRF 存在位置:/minicms/mc-admin/conf.php 此处的CSRF会致使恣意修正网站设置。

原文地点: https://www.4hou.com/technology/19138.html


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明代码审计入门:MiniCMS详细分析
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址