目录
前言
Vulnhub的靶机每一个都会教授一个新的知识点,所以不妨玩多几个。
提示:以下是本篇文章正文内容,下面案例可供参考
一、信息收集
装好靶机之后,还是惯例,利用nmap对靶机进行信息收集。
发现靶机的IP地址为192.168.23.134
靶机开放了80端口,版本是Apache2.4.38,22端口是过滤状态,即不能到达端口,应该是有防火墙规则阻拦,访问80端口看看。
二、漏洞利用(sql注入、文件包含)
80端口主要有以上的页面,search页面是通过name进行user的查询,display页面应该展示了所有的user,而manage页面应该是一个管理员页面,可以通过管理员用户进行登录。既然能进行查询,不妨试试是否存在sql注入。
Mary Moe 正常回显
Mary Moe' 出现no result
Mary Moe'# 还是no result,报错注入肯定是不行了,盲注又补太靠谱,靶机不稳定。
Mary Moe or 1=1# 弹回了display页面,最后只好试试union注入,根据display页面猜测6个字段,发现存在注入,直接sqlmap。
sqlmap -r /root/1.txt -p search --dbs 爆数据库
sqlmap -r /root/1.txt -p search -D Staff --tables 爆表
sqlmap -r /root/1.txt -p search -D Staff -T Users --columns 爆字段
sqlmap -r /root/1.txt -p search -D Staff -T Users -C Password,UserID,Username --dump 爆数据
爆出用户名为admin 密码为 transorbital1的用户,应该是manage页面的登录,同样再爆另一个库。
爆出了一堆username和password,暂时不知道有什么用,登录进manage页面看看。
File does not exist 会不会是查询某个file文件,存在文件包含。
存在文件包含,查询到/etcpasswd中的用户,并且用户名和sqlmap注出那一大堆用户名一样,应该可以进行ssh登录,可是22端口是过滤状态,数据包到达不了。查了一下,才知道有个东西叫端口敲门,就是一个knockd的服务。
端口敲门:简单来说,就是一种对暗号操作,要事先在某个时间间隔内访问几个规定的端口后,设置端口才会对此IP开放,原理就是对防火墙进行了配置和修改,默认配置文件是/etc/knockd.conf。
自己装了一下服务,并且查看了一下
options是日志文件,当按顺序访问sequence 序列的7000、8000、9000端口时,就会执行/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCPET 命令
就是在防火墙的INPUT的chain链中接受22端口的TCP连接
seq_timeout=60表示每个端口访问的时间间隔不超过60秒
tcpflags=syn 表示一次只建立一次tcp连接。
直接利用文件包含访问/etc/knockd.conf文件。
序列端口号为7469,8475,9842,间隔25秒,直接敲门,通过sql注出的账号密码进行ssh爆破登录。
有3个账号密码能够登录,登录三个账号看看那个账号能够进行提权操作,发现三个账号都没有任何特殊权限的命令或者文件,但在janitor中发现了一个.secrets的隐藏文件。
文件内装的竟然也是密码,继续修改password文件进行爆破看看。
有一个新用户fredf,接下来的提权和Web1差不多,只不过更改了一种方式,登录fredf查看是否有特殊文件。
三、提权
sudo -l 列出目前用户可执行的指令
发现存在test目录可被此用户执行,并且是root权限。
进入目录,找到了一个test.py文件。
test.py的内容大致就是取2个参数,以只读的方式打开第一个参数的文件,赋值为output,然后以a即追加的方式,将第一个文件的内容写入第二个参数的文件中。那挺简单了,直接创建一个高权限用户写入到/etc/passwd文件中即可。
openssl passwd -1 salt aiwin 123456 以md5加密的形式创建aiwin的用户,密码为123456
最后找到了flag
总结
1、sql注入得到ssh的用户
2、文件包含得到端口敲门的信息。
3、root权限的可执行py文件导致/etc/passwd能够写入