DC-1靶场实操

news2024/11/20 3:24:49

靶场部署

下载网址:Vulnerable By Design - Search: DC- ~ VulnHub

tips:强烈建议各位师傅们使用迅雷或idm要不然下载靶场将是一个十分痛苦的环节

之后环境搭建操作步骤一致故此处搭建环境以DC-1为例

将下好的压缩包解压,你就会看到一个.ova文件,用VMware将其打开即可打开过程中可能会遇到如下报错

 点击重试即可

tips:将DC-1的配置改为net模式,更改网络适配器需要在虚拟机关闭时才能更改

 

相关知识

指纹

和人一样网站也有指纹作为自己唯一id,网站指纹是 Web 服务组件在开发时留下的类型、版本等标记信息,包括 Web服务器指纹、Web运用指纹及前端框架指纹等。我们可以通过前端网页和返回一些 HTTP 头信息来判断网站使用的哪些开发框架、服务器、系统,在渗透测试时也可以提供有针对性的测试思路。

这里介绍两个指纹检测工具:

  • whatweb

该工具是kali自带的工具

  • wappalyzer插件

该插件可在谷歌插件市场中下载,作为浏览器插件使用方式简单,有可视化界面读取方便

 

SUID提权

在进入提权之前我们需要了解一些概念

ruid(real uid):实际用户ID其实就是当前登录系统的用户ID

euid(effective uid):有效用户ID就是当前进程是以那个用户ID来运行的

suid(saved set-user-ID):而保存的设置用户ID实际上就是有效用户ID的一个副本

提权原理:

在运行一个进程时,该进程的有效用户ID在一般情况下是实际用户的ID,但是如果该可执行文件具有SUID的权限,那么他的有效用户ID就是这个可执行程序的拥有者。

用人话来说就是,如果一个可执行文件留有suid位,当一个用户执行该文件时将获得与该文件所有者相同的权限;

eg:a是一个可执行文件且所有者是root,之后他还留有suid位,此时一个普通用户运行了此文件,那么此时该普通用户就获得了和root一样的权限,我们只要加以维持权限我们将成功获得root权限;

现在已知的具有SUID权限的二进制可执行文件大体有如下这些:

nmap vim find bash more less nano cp awk

本题中使用; find提权

语法:find [path…] [expression]
path为查找路径,.为当前路径,/为根目录
expression即为参数
-name: 按文件名查找文件
-perm: 按照文件权限来查找文件,4000,2000,1000为分别表示SUID,SGID,SBIT,如777为普通文件的最高权限,7000为特殊文件的最高权限
-user: 按照文件属主来查找
-size n: 文件大小是n个单位
-type: d:目录 f:文件 c:字符设备文件 b:块设备文件
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和\;之间的空格。

一个find提权的实例演示

因为本地环境中find并非留有suid权限所以先进行更改

sudo chmod u+s /bin/find

更改好后检查是否添加成功

进行提权测试

tips:留suid为提权时需要加-p

防范

不要轻易给易被利用的文件以SUID权限,防止SUID的滥用导致黑客在进入服务器时轻易获取root权限。

信息收集

使用nmap发现存活主机

也可以使用arp-scan探测

sudo arp-scan -l

发现目标靶机探测存活端口

我们可以看到开放了3个端口其中包含80端口,所以我们尝试进行访问

进入后是一个登录界面尝试弱口令无果,所以继续信息收集

之后我们进行指纹识别

whatweb -v ip 

信息收集至此算告一段落,接下来就开始漏洞利用了

漏洞利用

之后使用msf查询对应框架的漏洞

搜所drupal披露漏洞

tips:优先利用时间接近且rank为excellent

 在use时可以use对应的数字也可以时Name

这里看看2018的

options中required为yes的是必填选项

填写好后进行攻击,等待msf运行完毕连接shell

这里我们使用一个伪终端便于观察

python -c "import pty;pty.spawn('/bin/bash')"

这里我也疑惑了很久为什么不用他自己的shell而用了python的pyt之后在阅读师傅的文章时发现了这样一句话:

当我们拿到一个webshell的时候,我们能够执行一些命令,但是这些命令都是非交互的,也就是说不存在上下文的概念。当我们想使用vim、top等命令时,webshell就无能为力了。

flag1

 

在www目录下查看发现了flag1.txt,cat一下给了我们下一个flag的提示

Every good CMS needs a config file - and so do you.
#一个好的cms需要一个配置文件你也如此

flag2

这里需要寻找配置文件

find . -name "set*"

tips:drupal7的目录结构及术语 - Just Code - ITeye博客

这里做一个小小的解释/sites/default/settings.php 配置文件,主要是数据库连接配置根据flag1的提示我们cat一下看看我们看到了flag2

 

flag3

flag2处有一段提示

Brute force and dictionary attacks aren't the
 * only ways to gain access (and you WILL need access).
 * What can you do with these credentials?
 
 蛮力和字典攻击不是
 *只有获得访问权限的方法(您将需要访问权限)。
 * 您可以使用这些凭据做什么?

关于蛮力和字典让我们想起了访问ip时首页是一个登录界面,所以猜测这里应该以管理员身份进入网站拿到下一个flag

关于提权,这里尝试了一下suid没有成功就没有继续了,flag2中我们获得了数据库账户和密码所以我们先连接一下数据库再继续操作

查询数据库相关信息

查询表单看到其中的users表,进去看看

select * from users\G;

tips:\G的作用是将查到的结构旋转90度变成纵向,这样更便于我们观察

我们找到了admin账户和密码,但是由于安全性考虑数据库中的密码并非是以明文的方式存储的(防止管理员撞库操作)这里经过了hash加密,此时我们需要继续寻找存储时的加密文件

进入查看一下加密文件

我们可以看出这玩意的用法貌似是这样的

 

因为我们可以进行数据库的连接所以我们可以将管理员密码也进行修改从而登录站点将生成的密码改为我们自己的

update users set pass="$S$D05OmGdE1kegARENQFfQ3UcGTLzgxak3lXsWzGGZ0oqelFyT.MB7" where name="admin";

此时再利用账户admin密码123456即可进入网站

 

flag4

根据passwd我们去产看一下/etc/passwd

进入查看

您可以使用相同的方法来查找或访问 root 中的flag吗?

可能。但也许这并不容易。 或者也许是?

flag5

这里就设计到提权,查看默认以root权限执行的程序

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

顺便试一试suid可不可以结果发现失败了

看到有find所以使用find提权

进入/root目录下就可以获得最后的flag

find / -exec "/bin/bash" -p \;

 

参考文章

浅谈Linux下的ruid、euid、suid及普通用户可执行程序以root权限特权运行的方法 - 简书 (jianshu.com)

(17条消息) linux——SUID提权太菜了怎么办?的博客-CSDN博客suid提权的思路和过程

(17条消息) find基础命令与提权教程hyled-Ava的博客-CSDN博客find提权

(17条消息) DC-1靶场实战详解a310034188的博客-CSDN博客dc-1靶场

简谈SUID提权 - FreeBuf网络安全行业门户

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

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

相关文章

2023春招面试专题:高并发解决方案

如何理解高并发? 高并发意味着大流量,需要运用技术手段抵抗流量的冲击,这些手段好比操作流量,能让流量更平稳地被系统所处理,带给用户更好的体验。 我们常见的高并发场景有:淘宝的双11、春运时的抢票、微…

kaggle平台学习复习笔记 | 计算机视觉

目录1.The Convolutional Classifier2.Convolution and ReLU3.Maximum Pooling4.The Sliding Window5.Custom Convnets6.Data Augmentation1.The Convolutional Classifier 使用Keras创建第一个计算机视觉模型。 用于图像分类的网络由两部分组成:卷积层和密集层 卷…

华为云服务器无法正常访问端口

出错场景: 2023年1月7日22:05:32 在新服务器上运行自己服务端软件,其他客户端无法访问端口 进行连接。 服务端的程序启动了,客户端无法交互,连接失败。 首先检查能不能ping通 ping IP地址–发现是可以ping通的,再测…

活动星投票国风正当红网络评选微信的投票方式线上免费投票

“国风正当红”网络评选投票_第三方投票平台_优秀微信小程序_小程序投票优势近些年来,第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放,更多人选择微信投票小程序平台,因为它有非…

python小游戏————兔子

♥️作者:小刘在这里 ♥️每天分享云计算网络运维课堂笔记,疫情之下,你我素未谋面,但你一定要平平安安,一 起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放,…

【宝典】OpenStack集群、k8s集群与docker等集群综合巡检shell脚本

目标:学会编写高质量脚本的方法 高质量脚本应该至少满足两点: 1、当前最优 学会根据架构,设计出符合要求又便于理解的shell脚本 2、后期更新方便 优秀的shell脚本,具备伸缩性,既适用当前平台状态,又可以保证后期增加或下线哪个服务,脚本里增加代码不用改整体代码逻辑的…

JAVAEE-多线程(3)

volatile关键字 volatile禁止了编译器优化,还可以禁止指令重排序,避免了直接读取CPU寄存器中的缓存数据,而是每次都重新读内存。 因为编译器每次正常执行都是把主内存的数据加载到工作内存中,再进行计算处理。volatile即使保证每…

梦想cms1.4代码审计

目录 一、环境配置 二、代码审计 1、后台漏洞 (1)BookAction.class.php (2)BackdbAction.class.php任意文件删除 2、前台漏洞 (1)TagsAction.class.php (2)BookAction.cla…

深入理解数据结构 —— 树状数组

什么是树状数组 我们知道,前缀和数组能解决任意一段区间的累加和问题 但这建立在数组中的元素不发生变化的情况,如果可以修改原始数组中的某个元素,为了让前缀和数组正确,就需要在前缀和数组中修改该元素位置后面的所有的数&…

数组模拟实现单链表、双链表、栈、队列

文章目录 前引 一、数组模拟实现单链表 1、1 数组模拟的单链表解析 1、2 数组模拟实现单链表例题 二、数组模拟实现双链表 2、1 数组模拟实现双链表解析 2、2 数组模拟实现双链表例题 三、数组模拟实现栈 3、1 数组模拟实现栈解析 3、2 数组模拟实现栈例题 四、数组模拟实现队…

【C++学习】基础语法(一)

1、背景知识 1.1 什么是C C语言是结构化和模块化的语言,长用于处理较小规模的程序;对于规模较大、问题复杂的程序,则需要高度的抽象和建模,此时C语言不合适处理这类问题。为了解决此类影响软件的问题,20世纪80年代&am…

Python | Matplotlib | 不完全总结

本文对 Matplotlib 的用法进行不完全总结。 更新: 2023 / 1 / 4 Python | Matplotlib | 不完全总结ImageMagick导库画布创建多子图动图2D柱状图基本:水平 / 垂直柱形主题:颜色、文字、网格线动图线图基本动图3D柱状图基本线图动图参考链接Im…

Web文件操作:上传与下载

文件上传与下载文件上传文件上传的实现表结构设计UploadFileServiceImpl的实现上传文件遇到的问题与解决文件下载文件上传 文件上传的表单中,需要注意的三个地方: 1.表单的请求方式必须为post; 2.表单域必须有file类型; 3.表单的e…

活动星投票奋斗青春,使命必达网络评选微信的投票方式线上免费投票

“奋斗青春,使命必达”网络评选投票_如何进行投票推广_参与投票活动_小程序的投票发展现在来说,公司、企业、学校更多的想借助短视频推广自己。通过微信投票小程序,网友们就可以通过手机拍视频上传视频参加活动,而短视频微信投票评…

英伟达528.02驱动发布支持4070 Ti!GFE新增9款游戏

自GTX 4070 Ti显卡发售后,英伟达便随即发布了支持该新显卡的Game Ready 528.02驱动,同时为《战意》和《达喀尔沙漠拉力赛》两款新游戏带来DLSS 3的支持,DLSS 3的队伍再度壮大! 驱动人生现已支持英伟达Game Ready 528.02驱动&…

围绕http请求头中Referer展开的一些知识

1. 什么是referer&#xff1f; <点击以获取跳转信息 >跳转过去记得按一下f12点击网络请求详情&#xff0c;再刷新一下&#xff0c;就可以看见referer字段&#xff1a; 当我们尝试在浏览器内部直接输入这熟悉的网址时&#xff0c;此时刷新后则是这样一番景象&#xff1…

C++类和对象的基本概念

目录 1.c和c中struct的区别 2.类的封装 3.类的访问权限 1.c和c中struct的区别 c语言中结构体中不能存放函数,也就是数据(属性)和行为(方 法)是分离的 c中结构体中是可以存放函数的,也就是数据(属性)和行为 (方法)是封装在一起的 #define _CRT_SECURE_NO_WARNINGS #include …

基于Python tensorflow机器学习的人脸识别登陆系统源码、人脸注册系统源码

face_login 代码下载地址&#xff1a;基于Python tensorflow机器学习的人脸识别登陆系统源码、人脸注册系统源码 介绍 本项目基于tensorflow机器学习&#xff0c;实现web端人脸识别登陆&#xff0c;人脸注册。 提供手机端页面(face_login_app)和网页端页面(vue_element-adm…

JUC并发编程学习笔记(六)线程池及分支合并框架

10 ThreadPool 线程池&#xff08;重点&#xff09; 10.1 线程池简介 回顾以前的连接池概念 连接池是创建和管理一个连接的缓冲池的技术&#xff0c;这些连接准备好被任何需要它们的线程使用 线程池&#xff08;英语&#xff1a;thread pool&#xff09;&#xff1a;一种线程…

实时数仓,为什么不可代替?

什么是实时数据仓库&#xff1f;它有哪些不可替代之处&#xff1f; 大数据时代中&#xff0c;数据仓库解决了商业智能分析过程中的数据管理问题&#xff0c;但是存在烟囱式、冗余高的弊端 随着商业智能的兴起和数据时代的到来&#xff0c;越来越多的企业开始汇总、整合和分析自…