seaCMS v12.9代码审计学习(上半)

打印 上一主题 下一主题

主题 880|帖子 880|积分 2640

CMS介绍

海洋cms是一款经典的开源影视建站系统,采用php语言编写。网上有很多佬已经审出0day了,海洋cms也在不停的更新,修bug,这次审计使用的是12.9的版本,非常适合php代码审计的学习。
环境搭建

phpstorm+xdebug
phpstudy
seacms v12.9安装包:https://github.com/seacms-net/CMS/
代码总览

这里文件并不多,看到文件名字差不多可以分析出这个文件内里写的是什么功能,以及我们可以找到主页index.php和普通用户的登录入口login.php。

include/webscan/webscan.php目录下存在过滤功能,可以看出过滤规则还是比较美满,可以有效预防xss和sql注入。
  1. $getfilter = "\\<.+javascript:window\\[.{1}\\\\x|<.*=(&#\\d+?;?)+?>|<.*(data|src)=data:text\\/html.*>|\\b(alert\\(|confirm\\(|expression\\(|prompt\\(|benchmark\s*?\(.*\)|sleep\s*?\(.*\)|\\b(group_)?concat[\\s\\/\\*]*?\\([^\\)]+?\\)|\bcase[\s\/\*]*?when[\s\/\*]*?\([^\)]+?\)|load_file\s*?\\()|<[a-z]+?\\b[^>]*?\\bon([a-z]{4,})\s*?=|^\\+\\/v(8|9)|\\b(and|or)\\b\\s*?([\\(\\)'"\\d]+?=[\\(\\)'"\\d]+?|[\\(\\)'"a-zA-Z]+?=[\\(\\)'"a-zA-Z]+?|>|<|\s+?[\\w]+?\\s+?\\bin\\b\\s*?\(|\\blike\\b\\s+?["'])|\\/\\*.*\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT\s*(\(.+\)\s*|@{1,2}.+?\s*|\s+?.+?|(`|'|").*?(`|'|")\s*)|UPDATE\s*(\(.+\)\s*|@{1,2}.+?\s*|\s+?.+?|(`|'|").*?(`|'|")\s*)SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE)@{0,2}(\\(.+\\)|\\s+?.+?\\s+?|(`|'|").*?(`|'|"))FROM(\\(.+\\)|\\s+?.+?|(`|'|").*?(`|'|"))|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
  2. //post拦截规则
  3. $postfilter = "<.*=(&#\\d+?;?)+?>|<.*data=data:text\\/html.*>|\\b(alert\\(|confirm\\(|expression\\(|prompt\\(|benchmark\s*?\(.*\)|sleep\s*?\(.*\)|\\b(group_)?concat[\\s\\/\\*]*?\\([^\\)]+?\\)|\bcase[\s\/\*]*?when[\s\/\*]*?\([^\)]+?\)|load_file\s*?\\()|<[^>]*?\\b(onerror|onmousemove|onload|onclick|onmouseover)\\b|\\b(and|or)\\b\\s*?([\\(\\)'"\\d]+?=[\\(\\)'"\\d]+?|[\\(\\)'"a-zA-Z]+?=[\\(\\)'"a-zA-Z]+?|>|<|\s+?[\\w]+?\\s+?\\bin\\b\\s*?\(|\\blike\\b\\s+?["'])|\\/\\*.*\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT\s*(\(.+\)\s*|@{1,2}.+?\s*|\s+?.+?|(`|'|").*?(`|'|")\s*)|UPDATE\s*(\(.+\)\s*|@{1,2}.+?\s*|\s+?.+?|(`|'|").*?(`|'|")\s*)SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE)(\\(.+\\)|\\s+?.+?\\s+?|(`|'|").*?(`|'|"))FROM(\\(.+\\)|\\s+?.+?|(`|'|").*?(`|'|"))|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
  4. //cookie拦截规则
  5. $cookiefilter = "benchmark\s*?\(.*\)|sleep\s*?\(.*\)|load_file\s*?\\(|\\b(and|or)\\b\\s*?([\\(\\)'"\\d]+?=[\\(\\)'"\\d]+?|[\\(\\)'"a-zA-Z]+?=[\\(\\)'"a-zA-Z]+?|>|<|\s+?[\\w]+?\\s+?\\bin\\b\\s*?\(|\\blike\\b\\s+?["'])|\\/\\*.*\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT\s*(\(.+\)\s*|@{1,2}.+?\s*|\s+?.+?|(`|'|").*?(`|'|")\s*)|UPDATE\s*(\(.+\)\s*|@{1,2}.+?\s*|\s+?.+?|(`|'|").*?(`|'|")\s*)SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE)@{0,2}(\\(.+\\)|\\s+?.+?\\s+?|(`|'|").*?(`|'|"))FROM(\\(.+\\)|\\s+?.+?|(`|'|").*?(`|'|"))|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";
复制代码
include/common.php目录中也有个函数来模拟已经被php废弃的maigc_quotes_gpc。代码还是不难读懂的,重要意思就是说检查是否启动了maigc_quotes_gpc,如果没有这个函数,那么就递归遍$svar中的每一个字符,每一个字符进行addslashes过滤。
addslashes()函数功能:

  1. function _RunMagicQuotes(&$svar)
  2. {
  3.         if(!get_magic_quotes_gpc())
  4.         {
  5.                 if( is_array($svar) )
  6.                 {
  7.                         foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v);
  8.                 }
  9.                 else
  10.                 {
  11.                         $svar = addslashes($svar);
  12.                 }
  13.         }
  14.         return $svar;
  15. }
  16. foreach(Array('_GET','_POST','_COOKIE','_SERVER') as $_request)
  17. {
  18.         foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);
  19. }
复制代码
毛病复现

/js/player/dmplayer/player/index.php 反射性xss(详见https://github.com/HuaQiPro/seacms/issues/28)

固然说反射性xss危害很小,但是还是可以配合钓鱼来进行骗cookie的(之前实习时有个项目联合公安做灰黑产打击就用反射型xss钓过鱼,别说还真能上当)这个目录下的问题不少,但是最重要的问题是,他的所有来自用户的变量大多数都没有经过过滤,前面写的规则他并没有引用。
poc:?color=%3C/style%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E


poc:?vid=%3C/script%3E%3Cscript%3Ealert(1)%3C/script%3E


admin_ping.php 代码实行

先登录背景,在admin_ping.php目录下可以找到功能点


归去看源码,造成代码实行的缘故原由就是没过滤


毛病太多了,整理完了下半部门一次性写完


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表