本地测试使用默认的adminsoft为后台目录,使用类的构造函数验证用户的后台访问权限
后台各功能都为模版类important,该类构造函数如下:
该类为继承类,跟进父类,文件/public/class_connector.php中第14行
判断管理权限主要为代码$this->admin_purview();,跟进在该文件第330行如下:
跟上一个问题差不多,获取cookie里面的字段ecisp_admininfo,然后解密赋值,也就是说只要保证代码if (empty($this->esp_username) || empty($this->esp_adminuserid) || md5(admin_AGENT) != $this->esp_useragent || md5(admin_ClassURL) != $this->esp_softurl)不成立,则可以绕过逻辑验证,访问后台功能函数。
admin_AGENT和admin_ClassURL又为预定义数据,
由此可以伪造对应的cookie字段ecisp_admininfo,我这里使用火狐浏览器,
加密前:1|2|3|e0b858f1249c7bbe85c69dcf5eaac720|5|6|fae169abd4e73eb55567e2a202526274
内置加密函数加密一下:ZLCTsWitnWeabWVqy2WTZ5_IbciYyGqXm2tsmMSbapaZmJtsYmLhad1p4suXy2eZa8OamWeZmGiak21sbWtnl5eVk2OYmmicaJpm
添加这个cookie字段后可以绕过限制,访问任意函数了
下面我演示一下通过此漏洞利用后台文件adminsoft/control/acmessagemain.php的sql注入
文件/adminsoft/control/acmessagemain.php 第52行到63行
$limitkey直接通过$this->fun->accept('limitkey', 'R');获取未做处理,该函数默认进行gpc,htmlspecial过滤,由于此处不在引号内部,可直接忽略上述处理,
我这里不登陆直接添加上述cookie字段后,打印一下sql语句吧,