emlog签名爆破利用
1674701160110592 WEB安全 181浏览 · 2025-02-23 06:44

环境搭建



这边下载的是2.5.3版本的源码



源码审计



在install.php处,有一个生成cookie的方法



简化这个函数发现就是这个样子的,

意思就是循环遍历32次,每一次都利用mt_rand在0~61之间,截取chars的一个字符

然后再拼接到randStr变量,最后返回。

然后再拼接一个前缀EM_AUTHCOOKIE_和一个分号

传递到AUTH_COOKIE_NAME

怎么获取这段明文信息呢?

方法一:



登录的时候也会返回,但前提是我们知道账号和密码,要么就是能重写在前台注册一个新的账号登陆

但是注册账号默认是被封禁的,除非被管理员开启。

方法二:

在用户登出的时候会返回这串变量





利用:

此时就会返回用户的一串AUTH_COOKIE_NAME

这里我很奇怪这个等号和%20(空格)在getRandStr方法中并不会产生,那又是怎么来的呢?

个人猜测应该是系统调用setcookie方法的时候生成的,所以我们手动帮他给去掉

https://github.com/openwall/php_mt_seed

看到这篇文章



这里把他这个生成数列的php脚本抄下来,修改一下allowable_characters(即密文)和pass(即cookie)

然后他就会生成这段



但是我发现利用这串数列根本无法将种子爆破出来,然后我继续往下看这篇文章



文章里的

长度为10,对应覆盖了10组4个0的前缀,

那么我们的

为32就要在前面加32组4个0的前缀

用python生成







成功将种子生成

绕过鉴权

接下来我们看看getUserDataByLogin方法

这里的拼接,直接能够进行sql注入。

构造cookie脚本

这里的558fb80a37ff0f45d5abbc907683fc02其实是你博客安装的时候得到的ua头md5加密之后的值



这里的

如果你再windows上的谷歌浏览器搭建一个



直接构造永真式



构造号之后,建议加上Referer头,不知道为啥我不加好像进不去

进入后台,上传脚本的方法太多了,网上也有很多资料,







上传rce

其他版本

翻阅了前面几个版本发现都是存在这样的问题的

但是重点的话就是要怎么利用AUTH_KEY和AUTH_COOKIE_NAME

特别是HTTP_USER_AGENT这个md5值。

0 条评论
某人
表情
可输入 255