zzzcms php 1.7.5版本代码审计初探

2020-02-24 约 62 字 预计阅读 1 分钟

声明:本文 【zzzcms php 1.7.5版本代码审计初探】 由作者 136****5527 于 2020-02-24 09:22:03 首发 先知社区 曾经 浏览数 153 次

感谢 136****5527 的辛苦付出!

1.7.5版本

1. 后台寻找

后台寻找方法,该后台大部分admin+三位数字,所以可以采用爆破的方式获取后台地址 该后台地址为admin371

2. 验证码问题

(1) 管理员登录面验证码登录

在 admin371/login.php 19行可以看出get_cookie('adminname')不为空就可以绕过,如何获得get_cookie('adminname')的值

在24行可以看出如果存在密码的话会返回cookie中adminpass值,根据返回的adminpass的形式可以推断出adminname的值

可以看到adminpass为zzz920_adminpass,所以推断adminname为zzz920_adminname

可以看到已经在无验证码的情况下已经登录成功了

(2)验证码不刷新不过期

在inc/zzz_main.php中582行可以看到从SESSION中取code的值,在inc/imgcode.php中只要不刷新就不会重新生成code,导致验证码不过期

3. 前端XSS漏洞

http://127.0.0.1/plugins/template/login.php?backurl=1%20onmouseover%3dalert(9516)%20y%3d 该onmouseover事件在移动到登录注册时会触发

对传入的backurl并没有做任何防护

4. 登录后任意文件读取

(1)任意文件读取一

首先来看防护规则,不允许出现./

看 safe_path 只能是upload template runtime路径下的

所以构造/runtime/..\config/zzz_config.php 即可绕过防护

(2)任意文件读取

(参考文档: https://blog.dyboy.cn/websecurity/162.html)

首先来看restore函数,mysql数据库,发现path是可控的,看955行,跟进到load_file函数

在zzz_file.php文件中,如果存在该path,则通过file_get_contents读取

然后现在的想法是如何输入出来,跟进到db_exec()函数
在zzz_db.php中,看str_log把sql语句写入到了log中

在zzz.file.php中,跟进到str_log文件,看到文件的命名规则,

文件命名规则为当天时间的时间戳+数据库用户+数据库密码,并且是未授权访问

关键词:[‘技术文章’, ‘技术文章’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now