emlog后台getshell

前言

某log的后台getshell,偏鸡肋…

漏洞分析

1.越权登陆漏洞

在登陆后台的情况下,burp抓包,可以看到这里的cookie中有一项为EM_AUTHCOOKIE...看着有点可疑,我们到源码中找一下

image-20200108203639241

最终在config.php中找到相关信息,这里有一个AUTH_KEY和AUTH_COOKIE_NAME两项。

image-20200108210046960

全局搜索可以在loginauth.php中找到AUTH_COOKIE_NAME的身影.在setAuthCookie()中。

image-20200108210344531

跟进generateAuthCookie(),这个函数是用来生成cookie的

image-20200108210542135

跟进其中的emhash(),这个函数将$user_login(username)和$key(AUTH_KEY)进行hash_hmac()的加密

image-20200108211203132

跟进hash_hmac(),这就是一个加密函数。这个加密函数,所有加密元素,其中最重要的就是$key,而$key来自AUTH_KEY。那么只要我们获得了AUTH_KEY,那么我们便可以伪造cookie越权登陆后台。因为这里没有对密码有任何限制,但是前提是使用了相同的AUTH_KEY.所以鸡肋的很。

image-20200108211538156

2.后台getshell

2.1getshell(1)

登陆后台后发现这里有一个允许文件上传的

image-20200108212713004

我们在后台里写上php这个类型,但是最后这个类型会被转换成x

image-20200108213605405

查看源码,在configure.php中找到这么一句

image-20200108214238366

如何绕过这个呢?我们找到上传附件的函数,在attachment.php

image-20200108215452332

跟进getAttType()这个函数

image-20200108215610965

get()函数是在数据库中查询att_type,然后返回结果作为白名单。

然后在后台有一个数据库备份和导入项,我们可以把数据库备份,找到这个字段的位置,修改后,再导入。

image-20200108220234659

image-20200108220110649

修改后导入

image-20200108220150623

image-20200108220220935

然后就可以上传php文件了…..

image-20200108220321455

2.2getshell(2)

另外一处考虑在上传插件的getshell

image-20200108221529453

然后我们跟进这个emUnzip()。这里使用ZipArchive对zip文件进行解压。然后获得一个压缩包内部目录/文件名,然后转换成数组,第一个元素作为$dir,而$dir的第一个元素又将作$pulgin_name作为php文件名。

image-20200108221529453

所以最终构造一个压缩包

image-20200108223014593

然后上传,getshell

image-20200108223406511

Author: 我是小吴啦
Link: http://yoursite.com/2020/01/12/emlog%E5%90%8E%E5%8F%B0getshell/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.