HackLAB-Vulnix
HackLAB: Vulnix
目标: boot up, find the IP, hack away and obtain the trophy hidden away in /root by any means you wish – excluding the actual hacking of the vmdk
提示: The host is based upon Ubuntu Server 12.04 and is fully patched as of early September 2012.
妙妙工具:
python -c 'import pty; pty.spawn("/bin/bash")'
¶环境配置
kali: 192.168.110.130
target:192.168.110.132
¶信息收集
作者在网站中给了我们一些信息: Ubuntu Server 12.04, x86架构
nmap扫描可得:
nmap -A 192.168.110.132 |
- 可能出现的信息泄露: smtp服务, finger, rpc
- 可能利用的服务: nfs
全是没见过的, 我建议搜是什么和怎么利用
先来看看NFS: 通常结合Kerberos使用, 因为NFS 本身仅根据用户的UID/GID对用户进行身份验证; 一旦NFS文件系统被远程主机以读/写权限成功挂载, 每个共享文件的唯一保护就是它的权限
由于目标没有Kerberos设置, 因此只需找到经过身份验证以使用NFS的用户的UID和GUID, 并创建具有相同UID和GUID的用户即可访问所有允许的文件
我们需要登录/getshell才能收集信息, 所以我们分别使用对应工具进行信息收集
- smtp信息枚举用的smtp-user-enum命令(我这个跑不出来不知道为什么)
# kali自带的字典 |
- finger命令
finger user@192.168.110.132 |
得到两个用户, 其中user的shell为/bin/bash说明可以登陆
- RPC枚举
rpcinfo -p 192.168.110.132 |
和nmap差不多就不说了
- NFS枚举与挂载
showmount -e 192.168.110.132 |
显示权限不够, 应该是设置了root_squash(后面读取配置, 确实如此)
此时共享已经完成, 接下来只需要创建一个用户具有相同的id与gid用户即可
¶getshell
已知用户名, 那就利用rockyou密码本爆破; 可以得到user
密码为letmein
locate rockyou.txt |
ssh连接即可
ssh user@192.168.110.132 |
¶信息收集
cat /etc/passwd |
用户名: vulnx, 用户权限2008, 在kali上创建这个用户
useradd -u 2008 vulnix |
¶ssh毒化
尝试ssh毒化(通过ssh写密钥来登录该用户)
SSH密钥毒化指的是通过在目标系统中注入恶意的SSH密钥, 篡改或伪造SSH公钥身份验证的过程, 从而获得对目标系统的访问权限
现在我们来写公钥来登录靶机的vulnix用户
# kali在root权限生成rsa密钥对 |
¶提权
¶sudo提权?
sudo -l |
root_squash: 客户端的root用户映射到任何人; 客户端无法使用setuid位将恶意软件留给他人执行
no_root_squash: 通过此选项, 停用了此安全功能, 从而允许客户端的root权限操作最终以root身份出现在导出的文件系统中
危害: 如果配置为no_root_squash, 远程 root 用户可以更改共享文件系统上的任何文件, 并留下被木马感染的应用程序, 让其他用户无意中执行。
现在重启靶机, 让配置更改生效;
为了防止你不知道为什么要像上下文这么做, 先解释一下:
如果我们直接从本地传给靶机, 那么我们的shell是64位的, 与靶场的32位环境不兼容;
如果是我们从靶场cp一个shell到他的挂载文件夹, 那么就是32位的, 因为那是他的原生shell; 但是这又会导致权限不足的问题, 那么我们再用root的kali把这个shell弄到另一个文件里, 那么因为是root执行的, 那么这个shell就会变成root
而修改配置, 可以让我们以本地root的权限进入到共享目录中, 实现下面的操作
showmount -e 192.168.110.132 |
# 回到ssh登录的vulnix用户,以特权模式运行该bash |
关于 -p 打开特权模式
在此模式下, 不处理
$ENV
和$BASH_ENV
文件, 不从环境继承shell函数, 并且如果 SHELLOPTS、BASHOPTS、CDPATH和GLOBIGNORE变量出现在环境中, 它们将被忽略;如果shell不等于真实用户(组)id的有效用户(组)id就会启动, 并且没有提供-p选项则执行这些操作并将有效用户id设置为真实用户ID; 如果在启动时提供了-p选项, 则不会重置有效的用户ID; 关闭此选项会导致有效用户和组ID设置为真实用户和组ID
¶给root写公钥
需要重启靶机(我们没有权限重启服务, 还是不如其他方法好)
sudoedit /etc/exports |
¶dirty_cow漏洞利用
在kali搜索dirty cow即可拿到脚本40839.c, 编译后上传运行; 注意要同样的32位环境才能进行
searchsploit dirty cow |
此脚本会将root用户典当为firefart用户!以firefart用户身份使用ssh登录:
ssh firefart@192.168.110.132
打开/etc/passwd文件 将firefart更改为root 再以root登录
ssh root@192.168.110.132