dedecms漏洞组合拳拿站(渗透笔记)
dedecms漏洞组合拳拿站(渗透笔记)
前言
之前也写过几篇关于dedecms漏洞复现的文章了,光是复现也没什么意思,于是利用google hacking技巧,找到了一个使用dede的站点,正好用上了之前几篇文章里提到的所有的技术。所以特地写出来,也当做一个总结吧。
利用漏洞组合更改管理员的密码
之前几篇文章的链接: https://blog.csdn.net/he_and/article/details/80988550 https://blog.csdn.net/he_and/article/details/80988550 当我们按照上面两篇文章的方法成功更改了管理员的密码过后,我们访问member/edit_baseinfo.php 同样的,访问这个页面的时候还是需要修改cookie,不然你改的就是你自己账户的密码。
mark 替换了过后,返回的页面如下:
mark 原密码就是我们通过任意用户密码修改漏洞修改的密码,在这个页面修改了密码就会真正修改管理员的密码,这也是dede设计的一个缺陷——前台修改管理员的密码可以影响后台的密码。可能设计者没想到有人能够通过前台登录管理员账户(正常情况下,dede不能再前台登录管理账户),但是他却爆出了一个前台任意用户登录漏洞!
修改完密码过后,就是需要找后台了,默认后台路径被修改了,所以只有扫一下后台了。我用的是DirBuster,主要是感觉它内置字典还是挺好用的。
mark 扫着扫着就发现了一个manage目录,这一看就有猫腻呀,访问了一下果然是后台,用刚刚修改的密码登录:
mark
这里需要更正一下,我在拿到这个站的时候,先是扫了一下目录,毕竟要先确定是否找得到后台,不然拿到密码也没用。
getshell
关于dedecms后台getshell我之前也复现过了,文章链接: https://blog.csdn.net/he_and/article/details/80890664 按照文章中的方法写入一句话木马,使用菜刀连接
mark 接下来就是提权了,提权的过程还是挺曲折的。一开始扫目录的时候还扫出来了phpmyadmin,所以我直接root账户以及随便猜的一个密码登录了一下,没想到直接就上去了,都不需要我找密码了。想着有数据库的root账户提权应该就很简单了,直接传了一个带有mysql提权的大马上去了。
mark
根据回显,讲道理我已经拿到了system权限,但是当我执行net user命令时,返现没有回显,我一开始以为管理员只是禁用了net.exe,于是使用了net1.exe执行命令依然没有回显。猜测可能是管理员删除了net.exe与net1.exe,于是自己上传了一个,结果依然不能执行。
见识比较少,没搞懂管理员做了什么,于是想换一种方式,利用端口反弹得到一个cmdshell试试。数据库中执行如下语句
mark
然后我这边的主机用netcat监听4455这个端口
mark
用反弹的shell执行net命令还是不行,emmmmm,net命令不能执行,有点麻烦,但是我们是想用net命令添加用户以及开启远程桌面服务。是不是可以不用net.exe来实现呢?
于是找到了一个不用net.exe与net1.exe建立用户,并添加到Administrators组的可执行文件。上传上去,提示添加用户成功但是添加到管理员组失败。我当时就感觉有点奇怪,但是至少可以创建用户了,是个好的开头。
接下来就是打开远程桌面的端口,我试了网上提到的好几种方法然后扫描端口发现3389一直都是关闭的。于是猜测会不会是端口被修改了?直接通过操作注册表的方式查看和开启远程桌面服务
开启:
REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
查询:
REG query HKLMSYSTEMCurrentControlSetControlTerminal" "ServerWinStationsRDP-Tcp /v PortNumber
mark 转换为10进制就是9991,扫了一下果然开启了。你以为现在能登录了吗?真是和我一样天真!
mark 用刚刚创建的账户登录不了,提示找不到配置文件,看来管理员访问控制做的比较好,现在陷入了僵局——不能创建管理员账户,普通的用户又登录不了。
我突然想起我还有个神器没上场呢——mimikatz,这个神器可以直接抓取系统中sa文件的账户密码,只需两行命令
privilege::debug
sekurlsa::logonpasswords
我把神器传上去执行一下:
mark
mark
反正就是拿到管理员的密码了,直接登上服务器,在本地执行了一下net命令,还是不能用,那我就不用呗,我直接去账户管理里操作,创建用户没什么问题,就是到了添加管理员时,禁止访问!我真的服了,直接添加不了,难怪一开始那个可执行文件失败了。想着都拿到服务器了,就先放着了,这个问题也还没解决….望大佬告知
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Rust日报】2020-08-24 理解 Rust 的切片
- 猿实战05——手把手教你拥有自己的代码生成器
- Java单元测试——容器内部测试
- Java单元测试——框架(三)——testNG
- Nginx系列:后端服务应用健康检测
- 那些大厂必问的Handler和Binder,有必要去研究么?
- 欢迎来到 TreeMap 的吐槽大会
- OMG,12 个精致的 Java 字符串操作小技巧,学它
- Nginx系列:安全下载模块
- 5分钟入门GANS:原理解释和keras代码实现
- 使用ML 和 DNN 建模的技巧总结
- 医学图像分割模型U-Net介绍和Kaggle的Top1解决方案源码解析
- 机器学习中的音频特征:理解Mel频谱图
- 兄弟,如何淡定地渡过七夕?
- Spring 源码第 9 篇,深入分析 FactoryBean