Vulnhub实战-DC9
前言
本次的实验靶场是Vulnhub上面的DC-9,其中的渗透测试过程比较多,最终的目的是要找到其中的flag。
一、信息收集
-
对目标网络进行扫描
arp-scan -l
-
对目标进行端口扫描
nmap -sC -sV -oA dc-9 192.168.1.131
-
扫描出目标开放了22和80两个端口,访问目标的80端口。
-
对目标进行目录扫描与分析。
nikto -host 192.168.1.134
-
我访问了一下includes/目录,都是一些空文件,没什么特别的文件,但是我在search的菜单选项下的界面中试了一下SQL注入,发现其存在SQL注入,并且网页指向results.php的界面。
二、漏洞利用
(1)SQL注入
-
既然在search选项下的界面存在SQL注入,那就进行SQL注入
'or 1=1 #
-
之前写成result.php了,难怪sqlmap无法扫描出来
-
如果是GET型SQL注入,那么直接在url中输入参数即可,而如果是POST提交,则需要指定--data "提交的数据"才行。
-
-
既然存在SQL注入,我们就是用sqlmap去扫描一下。
sqlmap -u "http://192.168.1.134/result.php" --data "search=1" --dbs
-
尝试对users这个库下手,因为要登陆一些网站后台需要用户名和密码,而这个库可能就有,先获取其中的所有表名。
sqlmap -u "http://192.168.1.134/results.php" --data "search=1" -D users --tables
-
有一张表,查看其具体的信息。
sqlmap -u "http://192.168.1.134/results.php" --data "search=1" -D users -T UserDetails --dump
可以将username和password做成两个字典,我分别做成了user-dict和pass-dict两个字典。
-
使用wfuzz工具测试一下,其中大多数的行数都相同,我于是过滤了一下,没有发现特殊的Payload参数。
wfuzz -z file,user-dict -z file,pass-dict --hw 87 "http://192.168.1.134/manage.php?username=FUZZ&password=FUZZ"
-
只能试一下其他的数据库了,之前使用sqlmap扫描到目标还有一个Staff的数据库,扫描一下看其中还有哪些表。
sqlmap -u "http://192.168.1.134/results.php" --data "search=1" -D Staff --table
-
扫出来两张表,第一张表和我在目标网页的Display All Recodes菜单选项下的界面的内容差不多,没什么特别的,而第二张Users表有些东西,使用sqlmap扫描之后,里面有一个可以解密的哈希值。
之前的users是一个数据库,这里的Users是一张表。
sqlmap -u "http://192.168.1.134/results.php" --data "search=1" -D Staff -T Users --dump
-
我使用了第一个默认的字典去破解,结果破解出一个用户名Admin,密码是transorbital1。
-
尝试使用获得的用户名和密码去manage选项的页面进行登录,结果成功登录,页面提示我已登录成功,并且多了一个Log Out的选项,之前没有,还有一条“File does not exist”的提示语,可能存在文件包含漏洞。
(2)文件包含漏洞
-
目标可能存在文件包含漏洞,但是我不知道传递文件的参数,于是我仍然使用wfuzz工具去试一下。
wfuzz -b "PHPSESSID=k4vtn0fuo7d4bauibn1iqpp6gf" -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.134/manage.php?FUZZ=index.php
-
我将参数-w中的字母写成了大写,导致后面报错。
-
遇到Kali无法连接阿里云的源,修改了DNS之后重启网络就好了,在/etc/apt/sources.list文件里面进行修改。
-
-
扫描出一个与众不同的参数——file,传入file=index.php的参数值发现没什么用,我于是尝试了一下../../../../../etc/passwd。
我把--hw写成了-hw,少了一个“-”,导致出错。
(3)爆破SSH密码
-
既然我已经获取了目标操作系统下的/etc/passwd文件,其中有些和users中的重复,我决定使用hydra对SSH账号密码进行暴力破解,结果显示不允许连接,试了多次也不行,目标可能做了一些限制。
hydra -L user-dict -P pass-dict 192.168.1.134 ssh
-
后来得知有一些方法可以用来保护ssh的22端口,例如开启knockd服务,这要求我们必须先访问一些其他的端口,然后才能访问22端口,这个文件是/etc目录下的knockd.conf文件中,当我去访问这个文件时,果然如此,必须依次访问7489、8475和9842三个端口才能开放22端口,之前扫描出来的22端口是处于被保护状态的,无法直接访问。
-
使用nmap依次对三个端口进行访问。
-
访问按以上三个端口之后,再访问22端口,成功访问。
如果访问了也打不开,可以试一下如下命令:
for x in 7489 8475 9842 22 ;do nc 192.168.1.134 $x;done
-
之后继续使用hydra进行暴力破解,爆破出来两个用户名和密码
hydra -L user-dict -P pass-dict 192.168.1.134 ssh
之后我又试了多次,又爆破出来一个用户名和密码。
USERNAME PASSWROD chandlerb UrAG0D! joeyt Passw0rd janitor Ilovepeepee 我之前一直扫不出来,就使用nmap把7469、8475、9842、22这四个端口逆着访问了一遍,再用hydra爆破,还是不行,后来又顺着访问了一遍,就可以了。
-
接下来要去验证这些用户名和密码是否能够登录,结果全部登录成功。
-
既然我已经登陆了目标系统,就要去查看系统中的内容了。
-
我是用ls -a查找敏感文件时,只有janitor用户下有一个其他两个用户没有的东西,不确定是目录还是文件,使用file命令查看了一下,发现是一个目录,里面还有一个passwords-found-on-post-it-notes.txt的文件。
-
这时出现了三个新密码,前面的三个在数据库中看到过。
-
将这三个新密码加入到之前我做的密码字典pass-dict中,我将其改名为pass-dict1,原来的文件备份了,再次进行爆破,爆破出来一个新用户,试了一下密码,可以登录成功。
USERNAME PASSWROD chandlerb UrAG0D! joeyt Passw0rd janitor Ilovepeepee fredf B4-Tru3-001
三、权限提升
-
已经拿到一些用户名和密码并且已经成功登陆了,接下来是提权的时候了。
提权的思路:
找敏感文件:使用ls -a 或者find / *之类的命令
查看可以用root权限去执行的程序:使用命令sudo -l:
历史命令:使用history命令查看一些历史命令
内核漏洞:使用uname -a去查看内核信息,然后再去查询其是否存在过历史漏洞,以方便我们提权
-
在所有已经登录的用户下输入
ls -a
,没有什么特别的,除了上面的janitor用户,接下来试一下sudo -l
命令,结果在fredf这个用户中发现了一些特殊的信息,有一个具有root执行权限的程序test。 -
无法直接访问,跳转到其路径之后才可以访问,发现是一个Python文件。
-
直接执行是没用的,有一个提示,是关于这个Python文件读取和追加的,我于是去找了一下这个test.py文件所在的目录。
-
分别查看一下。
-
既然可以读取追加,哪么就可以尝试添加一个设计好的用户,使其具有root权限,然后试着将其追加到一些特殊文件中,首先使用openssl生成一个用户名和密码。
openssl passwd -1 -salt admin 123456
-
追加到其他文件可能没有权限,只好追加到/tmp目录中,在/tmp/passwd中。
echo 'admin03:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd
-
成功了,这时可以使用test.py读取/tmp/passwd并且将其追加到/etc/passwd中。
sudo ./test /tmp/passwd /etc/passwd
之前的第一个admin用户的shell程序设置出错了,少了一个/,第二个admin和第一个用户名重复了,这时我将添加了一个admin03的用户,其权限为root权限。 -
追加成功,切换至具有root权限的admin03用户。
-
转到root目录下,查看有没有关于flag的文件,通常情况下,这些文件都在root目录下。查看了一下,果然在这里。
-
使用cat命令查看一下,果然如此,拿到了flag,完结散花。
相关文章:
Vulnhub实战-DC9
前言 本次的实验靶场是Vulnhub上面的DC-9,其中的渗透测试过程比较多,最终的目的是要找到其中的flag。 一、信息收集 对目标网络进行扫描 arp-scan -l 对目标进行端口扫描 nmap -sC -sV -oA dc-9 192.168.1.131 扫描出目标开放了22和80两个端口&a…...
软件设计模式系列之七——原型模式
1 模式的定义 原型模式(Prototype Pattern)是一种创建型设计模式,其主要目的是通过复制现有对象来创建新对象,而不是使用构造函数。原型模式将对象的创建委托给原型对象,通过克隆(复制)来生成新…...
PMP考试注意事项有哪些?
1. PMI明确规定:不允许考生使用自带文具,包括自带的笔、削笔刀、橡皮、笔袋、计算器和草稿纸等。 2. 本次考试考场内为每位考生配备2B铅笔、橡皮、计算器(若有需要)和草稿纸。如文具有缺损或考试过程中如需更换铅芯等,请向监考老师举手示意。…...
chartgpt+midjourney
chatGPT程序化生成故事 英文版脚本步骤 步骤一:在chatgpt中输入以下脚本,,标红为可变的文字,输入你想要的,目前是科幻,即科幻故事,你可以改为 fairy-tale,则写的是童话故事&#x…...
【SpringMVC】自定义注解
【SpringMVC】自定义注解 前言1. 什么是注解?2. 注解的用处3. 注解的原理1.1. Override1.2. SuppressWarnings 2. JDK元注解2.1. Retention2.2. Target2.3. Inherited2.4. Documented 3. 自定义注解3.1. 自定义注解的分类注解类 结语 自定义注解及其应用 前言 在J…...
【李沐深度学习笔记】数据操作实现
课程地址 数据操作实现p2 数据操作 首先导入PyTorch包(import torch),虽然叫PyTorch,但实际上要导入torch。 import torch张量 张量表示的是一个数值组成的数组,这个数组可以有很多个维度。 # 生成0-11的顺序序列构成的一维…...
【深度学习-注意力机制attention 在seq2seq中应用】
注意力机制 为什么需要注意力机制attention机制的架构总体设计一、attention本身实现评分函数 attention在网络模型的应用-Bahdanau 注意力加性注意力代码实现 为什么需要注意力机制 这是一个普通的seq2seq结构,用以实现机器对话,Encoder需要把一个输入的…...
详解混合类型文件(Polyglot文件)的应用生成与检测
1. 引入 混合类型文件(Polyglot文件),是指一个文件,既可以是合法的A类型,也可以是合法的B类型。 比如参考3中的文件,是一个html文件,可以用浏览器正常打开;它也是一个一个.jar文件&…...
QT之QTableView的简介
QT之QTableView的简介 QTableView 是 Qt 框架中的一个类,用于显示和编辑表格数据。它提供了一个灵活的模型/视图架构,允许用户以不同的方式显示和编辑数据。 以下是 QTableView 的一些常用函数及其用法: 1)QTableView(QWidget *pa…...
学习记忆——宫殿篇——记忆宫殿——记忆桩——知识讲解
类比 假设这些桩子好比不同的交通工具,每一种交通工具都可以助我们到达目的地,那举现在就根据你的时间以及现实情况,选择最合适自己的交通工具即可,重点在于你要熟悉每种交通工具的用途不区别。桩子也是如此,把所有的桩…...
Python lambda匿名函数
视频版教程 Python3零基础7天入门实战视频教程 前面我们所学的函数定义,都是有函数名的。 我们现在学的lambda函数是没有名称的,也就是匿名函数。 我们在只需要一次性使用的函数的时候,就可以用lambda匿名函数,简单方便快捷。 …...
成绩统计(蓝桥杯)
成绩统计 题目描述 小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。 如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。 请计算及格率和优秀率,用百分数…...
ETL与ELT理解
ETL ETL( Extract-Transform-Load),用来描述将数据从来源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程。ETL模式适用于小数据量集。如果在转换过程…...
IntelliJ IDEA 2023 年下载、安装教程、好用插件推荐
文章目录 下载与安装IDEA常用插件推荐Alibaba Java Coding Guidelines(阿里巴巴Java开发规约)Key Promoter X(IDEA快捷键提示)Translation(翻译插件)Save Actions(优化保存插件)Codo…...
下载HTMLTestRunner并修改
目录 一. 下载HTMLTestRunner 二. 修改HTMLTestRunner 1. 修改内容 2. 修改原因 一. 下载HTMLTestRunner 下载报告模板地址:http://tungwaiyip.info/software/HTMLTestRunner.html 下载模块: 二. 修改HTMLTestRunner 将修改后的模块放到python安装目录下的..…...
C#回调函数学习1
回调函数(Callback Function)是一种函数指针,它指向的是由用户自己定义的回调函数。我们将这个回调函数的指针作为参数传递给另外一个函数,在这个函数工作完成后,它将通过这个回调函数的指针来回调通知调用者处理结果。…...
leetcode 232 用栈实现队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头…...
element UI表单验证,自定义验证规则
validator 可以为指定字段自定义验证函数——这就相当于把前边配置的东西用js按照以前的方式编写验证逻辑了。虽然麻烦点,但是能实现比较复杂的业务逻辑判断。 <el-form-itemlabel"中奖概率"prop"rate":rules"[{ required: true, mes…...
redis 主存复制
1. 前言 Redis的持久化机制,它很好的解决了单台Redis服务器由于意外情况导致Redis服务器进程退出或者Redis服务器宕机而造成的数据丢失问题。 在一定程度上保证了数据的安全性,即便是服务器宕机的情况下,也可以保证数据的丢失非常少。 通常…...
Unity Shader顶点数据疑问
1)Unity Shader顶点数据疑问 2)Unity 2018发布在iOS 16.3偶尔出现画面不动的问题 3)安卓游戏启动后提示“应用程序异常” 这是第352篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知…...
java写一个用于生成雪花id的工具类
我们创建一个类 叫 SnowflakeIdGenerator 作为生成雪花id的工具类 然后 编写代码如下 public class SnowflakeIdGenerator {private static final long START_TIMESTAMP 1609459200000L; // 设置起始时间戳,可以根据需要进行调整private static final long WORKER…...
淘宝开店装修教程 (2023新版)
一、下载千牛 1. 浏览器打开淘宝 https://www.taobao.com/ 2. 进入 - 千牛卖家中心 3. 进入 - 关于千牛 4. 下载千牛 5. 下载页面 6. 下载安装桌面 二、登录千牛 1. 登录页面 2. 进入 - 千牛工作台 三、pc店铺装修 1. 进入 - pc店铺 2. 进入 - 装修页面 3. 删除没用的模块 从…...
Python傅立叶变换
1. 什么是傅里叶变换? 在数学中,变换技术用于将函数映射到与其原始函数空间不同的函数空间。傅里叶变换时也是一种变换技术,它可以将函数从时域空间转换到频域空间。例如以音频波为例,傅里叶变换可以根据其音符的音量和频率来表示…...
MATLAB向量化编程基础精讲教程
向量化编程是MATLAB中一种重要的编程技术,通过使用向量和矩阵运算代替循环,可以提高代码的执行效率和可读性。本文将介绍MATLAB向量化编程的基础知识,并提供多个案例代码,帮助读者理解和应用向量化编程。 一、向量化编程基础知识…...
【非对称加密算法】RSA算法
一、非对称加密算法 非对称加密算法使用了两个不同的密钥:公钥和私钥。公钥是公开的,可以被任何人使用,而私钥是只有特定的人能够使用的。这种算法的加密和解密过程使用不同的密钥,因此称为非对称加密算法。 在非对称加密算法中…...
【滑动窗口】438. 找到字符串中所有字母异位词
438. 找到字符串中所有字母异位词 滑动窗口解法 创建两个Map 一个记录实际需要的有效字符 另一个记录窗口内的有效字符个数初始化need每次遍历一个字符 判断是不是有效字符 如果是 更新window 另外判断window中有效字符的个数是不是等于need中有效字符的个数 如果是更新valid…...
【PowerQuery】Excel 一分钟以内刷新PowerQuery数据
当需要进行刷新的周期如果小于一分钟,采用数据自动刷新就无法实现自动刷新的目标。那就没有办法了吗?当然不是,这里就是使用VBA来实现自动刷新。这里实现VBA刷新的第一步就是将当前的Excel 保存为带有宏的Excel 文件,如果不带宏则无法运行带有宏代码的Excel文件,保存过程如…...
【C语言】用冒泡排序实现my_qsort
大家好,我是苏貝,本篇博客带大家了解如何用冒泡排序实现my_qsort,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 一. 前言二. 冒泡排序三. 4个参数3.1 第一个参数void* base3.2 第二个参数…...
【css】深入理解flex属性
参考文章: 深入理解Flex属性 flex弹性布局教程-05-项目属性flex-shrink flex:flex-grow flex-shrink flex-basis flex:0 1 0 如何计算flex布局,有flex-shrink和flex-grow的情况下,每个元素的大小 flex-grow生效公式如…...
前端项目开发流程
一 参加需求对称(评审)会议 时间:在产品设计完成以后,进入正式的开发流程之前 组织者:产品&项目经理 目的:统一大家对产品的认识,及时发现产品设计缺陷,尽可能降低后续修改需求的频率 参与者ÿ…...
wordpress站内301/qq刷赞网站推广
这一周我们小组进行了JSON转换和数据库动态转换以及用户界面的编写等工作,我负责编写用户查看发布信息界面和申请发布界面。遇到的问题有element ui的card组件分页和表单数据与页面数据一起传到后端。 发布信息以el-card的形式展现在页面上,结合el-r…...
国外知名平面设计网站/北京互联网公司排名
【爬树合集】难啃的骨头——红黑树 写在前面 红黑树应用: 1.红黑树在Linux非实时任务调度中的应用 2.红黑树在Linux虚拟内存中的应用 3.红黑树在检测树的平衡性上的应用 4.epoll在内核中的实现,用红黑树管理事件块 5.nginx中,用红黑树管理timer等 6.Java的TreeMap实现 7.广…...
专业网站定制 北京/百度竞价排名广告定价鲜花
1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息?信息生产者…...
怎么做电脑端网站设计稿/电脑培训学校哪家好
1 继承的概念 在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。 在程序中,如果想声明一个类继承另一个类&…...
住房和城乡建设部网站买卖合同/网站建设方案推广
采用的技术为 java vue h5 微信小程序开发的。支持千万级别的数据量。 百度网盘扩容技术不断进化中,随之而来的是大容量网盘的资源如何展示给客户,这里就需要用到最新的百度网盘目录索引系统: 包含H5小程序 功能介绍: 1、支…...
公众号做微网站吗/中国足球世界排名
1-1.Window下安装Python 1.安装源程序的选择: https://www.python.org/选择Python2.7X或3.5X,后者不向下兼容;选择合适自己电脑的版本进行下载,64位还是32位;2.配置环境变量:点击“我的电脑”--右键--”属性“--”高级…...