跟着Y4师傅学代码审计-emlog_6.0.0

文章发布时间:

最后更新时间:

写在前面

这是代码审计练习的第七篇。上一篇感觉难度有些大,虽说没有框架但是自己设计的WAF防不胜防。这一篇练习emlog 6.0.0,希望能来点惊喜

漏洞分析

sql注入1

位于admin/comment.php下,对ip并没有进行过滤

image-20221214172527901

并且值得注意的是,这里离checkToken会去校验一下用户认证,token可以通过用户传参进来验证

image-20221214172848817

本身token的生成其实没有问题,想要爆破很困难

image-20221214172928266

但是其token值却被放到了表单这些地方,势必存在安全隐患,例如XSS可以偷

image-20221214173001881

继续看注入部分,跟进可以看到ip直接拼接

image-20221214173105892

文件上传

位于后台插件功能处

image-20221214192200104

定位路由至/admin/plugin.php?action=upload_zip

image-20221214192417740

如果我上传一个恶意的zip包,可以看到出现回显

image-20221214192628097

定位至view视图

image-20221214192718318

对应之前的分支为-1

image-20221214192821164

跟进emUnZip()看看为啥是-1

首先可以看到回显获取一个dir作为目录(第一个条目的名字)并拼接/

之后会拼接plugin_name,后者是截取的dir全部名字,最后带上php。

image-20221214193645841

最后会将抽离的文件移动到../content/plugins/

image-20221214193817896

因此我们需要一个同名文件夹用来承载恶意文件,最后压缩上传即可

访问即可验证

image-20221214194340381

任意文件删除1

还是在刚才的admin/data.php处,没啥好说的,提交就删

image-20221214194459253

任意文件删除2

位于后台插件删除处,对应路由/admin/plugin.php?action=del&plugin=tips/tips.php

可以看到如果能成功删除文件的话就会回显302./plugin.php?activate_del=1

image-20221214194753046

关键在与能否绕过正则匹配

image-20221214195756211

经过测试只要开头是/则可以绕过正则替换

1
plugin=/../../robots.txt

这样也就是会拼接得到../content/plugins//../../robots.txt linux下则可以顺利删除掉根目录下的robots.txt文件

无惊喜,洞蛮多的,不过都被挖干净了