暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

earcms 源码审计 任意文件下载

是恒恒呐 2021-07-12
1343


拿到源码安装好,注册账号登录进去存在上传功能点

点击进去发现可以上传文件,先随便填写并上传

开启数据库监控发现把数据都插入prefix_music这个表中

接下来看prefix_music表中存储的数据

这样就可以发现对应的字段的关系

然后打开phpstorm分析对应的源码/template/default/source/audio.php

此处代码是个执行下载的流程

使用readfile读取$file路径中的文件,那么如果$file我们可控的话就可以造成任意文件读取,所以跟踪$file观察是否可控

第25行发现取$row中的in_audio的数据

再跟进$row

正是数据库执行我们想要下载的音乐的结果,in_id是我们想要下载的音乐的编号,回到上面prefix_music表中字段对应的关系便知道了in_audio正是我们上传的音频地址

而第25行又使用geturl方法再跟进观察


使用了正则匹配
这里的话是data/attachment 这个作为被匹配一次
然后plugin.php可以单独被匹配,所以我们不以data/attachment开头或者路径中又plugin.php,而我们再使用geturl这个函数的时候并没有给$type赋值,所以我们可以直接返回$file


而我们也应该考虑下上传路径的时候有没有过滤

所以抓包分析下上传地址

earmusic/source/user/music/ajax.php?ac=add&name=asdadasd&classid=1&audio=asdasdasdasd&specialid=0&singerid=0&tag=

定位到此处观察

这里应该对我们audio即我们上传的路径进行过滤,跟进checkname

第266行再次过滤 过滤了 .和\  要想绕过我们需要使用绝对路径就行了

payload:D:/phpStudy/WWW/EarMusic/source/system/config.inc.php

源码很短,写的很水,大佬误喷

文章转载自是恒恒呐,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论