第一部分:漏洞分析
文件/apps/public/Lib/Action/AccountAction.class.php
此时attach_ids已经进入数据库了
下面来看看出库的地方
可以看到,取出attach_id后,通过|分割,然后再次计入了数据库
这里没有引号保护,导致sql注入
所以只要我们在attach_id插入恶意数据即可二次触发
第二部分:bypass绕过分析
来看看t函数是否能绕过
/core/OpenSociax/functions.inc.php
这里有一个real_strip_tags函数来看看
这里将html过滤掉了
综上,当恶意sql语句进入t时,首先将html标签过滤,然后进入addslashes
那么我们在sql关键字中插入html标签即可绕过全局防御了
如select=se<a>lect,这样绕过了全局,最后又变成了select,成功绕过
1、前台登陆,在个人信息处,申请认证
2、然后提交时,抓包,将attach_ids修改为:
请求如下:
3、然后回到第1步:
访问
此时在认证附件处显示管理员账户信息:
当然如果条件满足的话直接GetShell也是ok的