Vulnhub dc-9靶机通关
思路:sql注入登录->LFI(本地文件包含)->端口敲门->root提权
首先搭建好环境,我这里使用NAT模式,使用局域网扫描器,扫描到我142的地址
访问页面,点击几下之后发现search这里存在了搜索功能,尝试抓包看看有无注入
通过and 1=1 and 1=2判断此处是存在了注入,使用sqlmap跑起来。
通过sqlmap跑到一些数据,通过somd5解密admin密码,登录后成功:transorbital1
登录只有就多了两个功能点,看到网页下方存在 File does not exist文件不存在,猜测可能存在本地文件包含漏洞,使用fuzz跑一下
可以看到还是可以跑到一些文件的。但是到这里也就卡住了,没有跑到日志文件无法通过日志文件包含拿shell
去看大佬的做法,这里需要使用端口敲门的方法
原理简单分析:
端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。
简单来说就是:知道它的自定义端口后,依次对其进行敲门,然后就可以开启ssh服务从而进行连接了。它的默认配置文件为:/etc/knockd.conf
看到他存在3个自定义的端口,根据port-knocking的规则依次访问这三个端口就可以打开ssh服务
根据大佬提供2种敲击方法:nc、nmap
for x in 7469 8475 9842;do nmap ‐Pn ‐‐max‐retries 0 ‐p $x 192.168.147.142;done
for x in 7469 8475 9842 22 ;do nc 192.168.147.142 $x;done
还是这种方式好使,使用nmap没开起来。可以看到ssh服务已经开启了
将sqlmap枚举出来的用户名密码做成一个字典,使用hydra爆破,有三个用户名可以登录
通过查找这三个用户名的目录,只有janitor文件下有可读文件,文件内容是一些密码,添加到密码字典再次进行爆破
果然出现了一个新的用户
登录进去之后使用sudo -l 查看权限,发现在/opt/devstuff/dist/test/test文件下有root权限
在/opt/devstuff/目录下发现了test.py脚本,他会打开第一个参数读取内容,然后打开第二个参数写入
既然拥有root权限,那现在我们要做的就是构造一个拥有root权限的用户,并且在/etc/passwd文件中储存,只要使用这个用户登录后,就可以获取到root权限
创建一个具有root权限的新用户
首先在kali本地使用OpenSSL生成一个名为test的用户,其密码为123456
openssl passwd -1 -salt test 123456
添加用户名、:和:0:0:: ,使test用户拥有root权限,使用echo在tmp下创建test文件
echo 'test:$1$test$at615QShYKduQlx5z9Zm7/:0:0::/root:/bin/bash' >> /tmp/test
将test文件中的信息追加到/etc/passwd中,切换到test用户