**直播系统审计#
fofa:
万能cookie#
框架问题与业务逻辑共同造成的,在框架上cookie使用了aes加密+序列化的手法,导致只要把框架扯下来看看就能找到密码,使得cookie内容用户可控,又因为业务上他把cookie解密后直接插入sql查询导致了注入
在审计的时候发现他的sql语句写的非常糙,全是随意的拼接,防御全靠htmlspecialchars和全局生效的


这里就不往下跟了 反正就是传入 编码

html实体编码过后的内容传入这里,插入sql查询

因为几乎所有的输入都被做了html实体编码,导致如果想利用sql注入就只能找数字形的注入,其实也有后面会提到
万能cookie 与反序列化入口#
在前的代码其实能看到,在登入前他会去判断adminCookie是否存在,去验证他

其中有关cookie解密的逻辑跟踪getCookie就能找到


这里要提一下,cookie在get解密之后又经过了反序列化,如果有链子能打,但框架过于小众了审计也没发现目前没有能用的

这里会使用内置可的密钥做解密,继续跟踪到Encrypt的decode

加密使用了AES-256-ECB对称加密

base64解码后丢到openssl传入方法和密钥解密至此就知道怎么解cookie了
回到前面的代码只要$adminCookie['status'] === true就会视为已登入,跳转到到定向到admin_index,到index控制器可以看到他继承自Admin_PublicController 在这里 能看到这样一行

读取了明文cookie的账户密码做查询也就是直接插入了sql,那么我们就可以构造如下cookie来打一个sql注入万能密码

数字型 sql注入#
来到roomModel


可以注意到这里是一个数字型注入,那么往前跟踪查看谁调用过他

往前跟踪可以继续跟踪到RoomController

输入来自form读代码可知它继承自Admin_publicController

测试后对应路由是是/admin_room/index/loadData-1.html/?room_id=1这里

虽然sqlmap能检测到注入的存在,但因为全局生效的safePro,依旧需要手动去注入时间关系我没去尝试
前台任意文件读取#
来到publicController

很神奇的没做任何过滤,读取文件只需要在/public/download/下构造filePath[0]=filename即可
任意文件删除#
问题位于libUpload中,这里的过滤形同虚设,导致了路径穿越

神秘代码#
这个方法疑似是远程下载图片的,但他没有调用

或者说是写错了

phpinfo
