今天又是准备划水认真工作的一天,没想到一到公司领导就甩了个站过来,这可能就是打工人吧
话不多说来看看站,先信息收集一波
打开进去是一个类似购物商城的地方,没有什么特殊的点,想要操作基本都要进行登录,中间件是nginx
再看看插件,惊喜来了,是dedecms
先直接盲打一波后台地址/dede 直接404......
再看看好歹有前台,先注册个用户
再查看最后更新时间
可以知道是dedecms v5.7 sp2的版本
这个版本之后有前台管理员密码重置漏洞和任意密码重置漏洞,可以试一下组合拳
1.先注册个00001账户,因为00001经过intval()后值为1 (用来登录admin)
2.再访问/member/index.php?uid=00001的用户界面,获取响应包的last_vid__ckMd5
值
3.访问/member/,替换DedeUserID
为0001,DedeUserID__ckMd5
的值为刚才的last_vid__ckMd5
的值
这时候就发现已经登录了admin的账户
再将这个修改操作放到浏览器上,修改浏览器的cookie,成功在网页上登录
这时候再配合dedecms最新版任意用户密码重置漏洞修改管理员密码
先点击下面连接请求key
http://X.X.X.X/member/resetpassword.php?dopost=safequestion&safequestion=0.0&safeanswer=&id=1
点击之后,一闪而过的稍后跳转到修改页
马上就变成非法提交。。。
再用开始的链接去访问
但开始有请求成功的跳转连接,应该还是成功生成了key,再看看浏览记录,返回第一次的页面,再用我的黄金右手快速点击立即跳转,成功进入重置界面
这里稍微提一下,这里重置完密码之后还要在前台的账户设置里再次修改密码,因为这个前台修改任意用户密码的洞只能改dede_member表里的用户信息,而管理员信息存在另一个表dede_admin中,所以要从前台登录管理员账户并修改dede_admin表里的密码,才是真正修改了管理员密码。
现在管理员账户密码都有了,就差老大难问题,找后台
网上有些5.7 sp2的前台getshell,但都是伪前台,在sp1之后还是需要后台地址才能getshell
网上有大佬写的爆后台脚本,但只在windwos上能用,现在目标是Linux的系统
经过一番查询,发现dedecms的data下有个mysqli_error_trace.inc文件,此文件记录mysql查询错误,如果有后台查询出现错误则会暴露后台路径。但是主站的报错都是plus目录下的
通过前期的信息收集找到该网站的真实ip,发现是华为云
一般这种站只要有旁站大概率可能也有使用了dedecms的站
通过ip反查域名,发现其旁站大多都是同类型的公司站点
当时我用的云悉,结果只查出来一个.......这个站还不是dede(打脸打脸)
又在fofa上查,结果有一堆旁站,随便挑了一个域名直接把数据库报错文件的路径拼接上去,果然出现了一个没见过的路径
拼接这个路径到主站域名访问,成功找到后台
然后用之前拿到的管理员登陆后台->上传一句话->连接一气呵成
准备执行命令验证,发现函数都被禁用了
disable_functions : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
而且还有open_basedir限制了目录访问
为了方便绕过disable_function,先bypass open_basedir
可以使用代码
<?php echo 'open_basedir: '.ini_get('open_basedir').'<br>'; echo 'GET: '.$_GET['c'].'<br>'; eval($_GET['c']); echo 'open_basedir: '.ini_get('open_basedir'); ?>
但是哥斯拉内置了bypass open_basedir的插件,就直接上哥斯拉了。连上之后发现还是有挺多网站的。
再把哥斯拉内置的bypassdisable_functions模块都试了一遍,都失败了。
再看看当前收集到的信息,服务器是Linux的,服务器中的PHP是用FPM/FastCGI的连接模式启动,当前目录可写
想到应该可以用PHP-FPM绕过disable_functions,在蚁剑中已经添加了这个bypass插件
先去插件市场下载安装绕过disable_functions插件,然后加载进来,选择PHP-FPM/FastCGI模式进行,FPM地址就用哥斯拉一顿乱找,Linux下可以看看/tmp目录。
注意这里的tmp前一定要加/
操作成功后,会显示成功上传代理脚本和一个so文件,在webshell目录下会多了个.antproxy.php文件,我们直接右键创建副本改地址为该代理PHP文件,再连接即可成功Bypass disable_functions:
在浏览文件时发现存在phpmyadmin目录,前期信息收集得知该站点使用了宝塔,宝塔一般默认把phpmyadmin搭建在888端口上面,但是该网站并没有开启888端口,而且bypass后的shell总是两分钟就掉,有宝塔,又是hvv害怕把服务器提崩....所以就暂时渗透到这里吧。
在渗透过程中如果主站和旁站是一个类型的站点,那他们的目录结构也很可能相似,很多漏洞点也可能通用。
本文知识点:
1.通过dedecms最新版漏洞组合拳拿到管理员密码。
2.旁站信息收集
2.绕过disable_functions禁用函数。
3.绕过open_basedir目录限制。