[Vulnhub]Jangow: 1.0.1¶
题目地址:https://www.vulnhub.com/entry/jangow-101,754/
难度:Easy
网段:192.168.101.0/24
扫描靶机:
信息如下:
(icmp) Target 192.168.101.134 is alive
192.168.101.134:21 open
192.168.101.134:22 open
192.168.101.134:80 open
[*] WebTitle http://192.168.101.134 code:200 len:747 title:Index of /
访问网站:http://192.168.101.134/
发现是一个目录索引,直接访问 /site/
来到一个网站。
先扫描一下,扫描出了一个 .backup
,没有什么别的有价值的东西。但是我们乱点来到了这样一个页面:
点击就发现是一个空白页面,还提供了参数传递入口,看起来就好像一个木马一样。经过一番测试,发现这就是一个命令执行的参数。比如说:
然后我们立即尝试反弹 shell, 结果发现不行。无论如何都无法反弹出来。估计是防火墙过滤了。当然正向连接还是可以的,我们写一个木马方便我们使用:
注意可以使用 urlencode 编码,并且这里的引号是单引号,要不然 $_POST[1]
就会被吞掉直接解析了。
然后测试 site/evil.php
,没有问题:
打开蚁剑,直接连接:
然后我们就可以进行 www-data
用户的提权了。
为了方便操作,我们还是希望可以直接反弹 shell,所以我们可以试探一下对方防火墙放行端口。使用命令:
当 1 秒钟没有反应的时候,就会直接退出。然后我们就可以测试一些常用的端口了。最后我们发现了 443 端口可以被放出。
timeout 1 nc -vz 192.168.101.1 443
nc: connect to 192.168.101.1 port 443 (tcp) failed: Connection refused
出现这行字说明已经出站了,可以连接外部的 443 端口。所以我们可以反弹外部的 443 端口:
在宿主机上,监听 443 端口:
然后就是给对方运行反弹命令:
然后就可以惊喜地发现宿主机上面反弹 shell 成功了。
然后稍微升级一下 shell:
python -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm-256color
(ctrl + z)
stty raw -echo;fg
(enter)
然后我们查看 /home
目录,发现有 jangow01
这个用户。我们想起之前扫描出来的 .backup
文件,内容如下:
$servername = "localhost";
$database = "jangow01";
$username = "jangow01";
$password = "abygurl69";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $database);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
mysqli_close($conn);
这个备份文件似乎说明了本机的 mysql 账户密码,但事实上,我无法连接成功,反而直接用来登陆账户成功了。也就是说 jangow01
用户的密码就是 abygurl69
。
随便在 jangow01
家目录下面随便乱翻,也没什么太多有价值的东西,顶多知道我们需要提权为 root
用户才算通关。那么应该如何提权呢?
先看之前提过的 sudo -l
命令,看一下有没有可以高权限执行的命令。可惜没有。那么我们只能找漏洞了。
先查看一下 linux 的内核版本:
uname -a
# Linux jangow01 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
可以看到内核版本为 4.4.0-31
,我们使用 searchsploit
搜索一下这个内核版本的提权漏洞,结果如下:
❯ searchsploit kernel 4.4.0-31
--------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
--------------------------------------------------------------------------------------------------------------- ---------------------------------
Android Kernel < 4.8 - ptrace seccomp Filter Bypass | android/dos/46434.c
Apple iOS < 10.3.1 - Kernel | ios/local/42555.txt
Apple Mac OSX < 10.6.7 - Kernel Panic (Denial of Service) | osx/dos/17901.c
Apple macOS < 10.12.2 / iOS < 10.2 - '_kernelrpc_mach_port_insert_right_trap' Kernel Reference Count Leak / Us | macos/local/40956.c
Apple macOS < 10.12.2 / iOS < 10.2 - '_kernelrpc_mach_port_insert_right_trap' Kernel Reference Count Leak / Us | macos/local/40956.c
Apple macOS < 10.12.2 / iOS < 10.2 - Broken Kernel Mach Port Name uref Handling Privileged Port Name Replaceme | macos/local/40957.c
Apple macOS < 10.12.2 / iOS < 10.2 Kernel - ipc_port_t Reference Count Leak Due to Incorrect externalMethod Ov | multiple/dos/40955.txt
Apple macOS < 10.12.2 / iOS < 10.2 Kernel - ipc_port_t Reference Count Leak Due to Incorrect externalMethod Ov | multiple/dos/40955.txt
Jungo DriverWizard WinDriver < 12.4.0 - Kernel Out-of-Bounds Write Privilege Escalation | windows/local/42625.py
Jungo DriverWizard WinDriver < 12.4.0 - Kernel Pool Overflow / Local Privilege Escalation (1) | windows/local/42624.py
Jungo DriverWizard WinDriver < 12.4.0 - Kernel Pool Overflow / Local Privilege Escalation (2) | windows/local/42665.py
Linux Kernel (Solaris 10 / < 5.10 138888-01) - Local Privilege Escalation | solaris/local/15962.c
Linux Kernel 2.4/2.6 (RedHat Linux 9 / Fedora Core 4 < 11 / Whitebox 4 / CentOS 4) - 'sock_sendpage()' Ring0 P | linux/local/9479.c
Linux Kernel 2.6.19 < 5.9 - 'Netfilter Local Privilege Escalation | linux/local/50135.c
Linux Kernel 3.11 < 4.8 0 - 'SO_SNDBUFFORCE' / 'SO_RCVBUFFORCE' Local Privilege Escalation | linux/local/41995.c
Linux Kernel 4.10.5 / < 4.14.3 (Ubuntu) - DCCP Socket Use-After-Free | linux/dos/43234.c
Linux Kernel 4.4.0-21 < 4.4.0-51 (Ubuntu 14.04/16.04 x64) - 'AF_PACKET' Race Condition Privilege Escalation | windows_x86-64/local/47170.c
Linux Kernel 4.8.0 UDEV < 232 - Local Privilege Escalation | linux/local/41886.c
Linux Kernel < 4.10.13 - 'keyctl_set_reqkey_keyring' Local Denial of Service | linux/dos/42136.c
Linux kernel < 4.10.15 - Race Condition Privilege Escalation | linux/local/43345.c
Linux Kernel < 4.11.8 - 'mq_notify: double sock_put()' Local Privilege Escalation | linux/local/45553.c
Linux Kernel < 4.13.1 - BlueTooth Buffer Overflow (PoC) | linux/dos/42762.txt
Linux Kernel < 4.13.9 (Ubuntu 16.04 / Fedora 27) - Local Privilege Escalation | linux/local/45010.c
Linux Kernel < 4.14.rc3 - Local Denial of Service | linux/dos/42932.c
Linux Kernel < 4.15.4 - 'show_floppy' KASLR Address Leak | linux/local/44325.c
Linux Kernel < 4.16.11 - 'ext4_read_inline_data()' Memory Corruption | linux/dos/44832.txt
Linux Kernel < 4.17-rc1 - 'AF_LLC' Double Free | linux/dos/44579.c
Linux Kernel < 4.4.0-116 (Ubuntu 16.04.4) - Local Privilege Escalation | linux/local/44298.c
Linux Kernel < 4.4.0-83 / < 4.8.0-58 (Ubuntu 14.04/16.04) - Local Privilege Escalation (KASLR / SMEP) | linux/local/43418.c
Linux Kernel < 4.4.0/ < 4.8.0 (Ubuntu 14.04/16.04 / Linux Mint 17/18 / Zorin) - Local Privilege Escalation (KA | linux/local/47169.c
Linux Kernel < 4.5.1 - Off-By-One (PoC) | linux/dos/44301.c
macOS < 10.14.3 / iOS < 12.1.3 - Kernel Heap Overflow in PF_KEY due to Lack of Bounds Checking when Retrieving | multiple/dos/46300.c
Sony Playstation 4 (PS4) < 7.02 / FreeBSD 9 / FreeBSD 12 - 'ip6_setpktopt' Kernel Local Privilege Escalation ( | hardware/local/48644.c
--------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
像下面几个,都是 Local Privilege Escalation 类型的本地提权漏洞,我测试了几个都可以成功。
Linux Kernel < 4.11.8 - 'mq_notify: double sock_put()' Local Privilege Escalation | linux/local/45553.c
Linux Kernel < 4.13.9 (Ubuntu 16.04 / Fedora 27) - Local Privilege Escalation | linux/local/45010.c
Linux Kernel < 4.4.0-116 (Ubuntu 16.04.4) - Local Privilege Escalation | linux/local/44298.c
这里以 45010.c
为例,我们下载下来:
然后把这个文件通过蚁剑上传到靶机上,在靶机上编译。为什么要这么做呢,因为在自己的机器上编译,就会出现库文件版本太高问题。
然后在靶机上,直接执行这个 exp 文件即可:
提权成功,通关!
说点题外话,就是为什么这台虚拟机可以做到只允许访问 443 呢。经过一番研究,发现端倪出现在 ufw
这个软件下。我们需要提权到 root 用户下,执行有关命令就可以看到了。
ufw status
Estado: ativo
Para Ação De
---- ---- --
21/tcp ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW OUT Anywhere
上面那些鸟语好象是葡萄牙语,不用在意,重点是可以看到 443 这个端口的状态是 ALLOW OUT
。我以前一直认为 ALLOW
状态是包含 ALLOW IN
和 ALLOW OUT
的。但实际上,ALLOW
单纯指入站流量,外来流量访问本机某端口。而 ALLOW OUT
是出站流量,指的是本机是否允许访问外部网络的某端口。也就是说这里的端口针对于的就是其他服务器上的端口。这还挺搞笑的,我一直不知道。
经过一番查找,发现如何查看默认的出站流量配置命令就是:
这个命令就是提供上述的详细信息,也会包含默认的出入站流量配置,当然一般的电脑是不会把默认出站流量设置为deny
的,所以一般我们也见不到 ALLOW OUT
这种配置。
文章热度:0次阅读