1. 安装靶机
-
靶机下载之后,用VMware Workstation导入 .ova 双击 .ova文件后使用VMware Workstation打开 -
选择靶机的存储路径 -
此处注意,导入靶机后,需要将其网路模式由“桥接模式”改为“NAT模式” -
安装成功后,打开虚拟机,界面如下图
2. 使用kali linux 进行信息收集
2.1 发现主机(靶机)
-
通过ifconfig命令得到linux主机的IP, 由此得知靶机的网段是192.168.228.0/24 -
使用nmap -sP 类似ping扫描,进行ping扫描后会显现出在线(做出响应)的主机,使用该命令扫描可以轻易获取目标信息而不会被轻易发现 靶机的IP是192.168.228.135
2.2 目标主机端口扫描
-
namp -sS 指使用TCP的SYN进行扫描(半开放扫描,只发送SYN,如果服务器回复SYN,ACK,那么证明端口开放,不建立完整连接) nmap -A 指大多数功能开关,后接IP即可 –script=vuln 指漏洞扫描 从命令的输出结果得知: HTTP的80端口处于“open” SSH的22端口处于“filtered”
3. 启动BurpSuite
- 启动BurpSuite,运行火狐浏览器代理服务
4. 挖掘漏洞
4.1 访问HTTP服务
-
访问192.168.228.135:80 -
已知数据库中有一个用户是tom,通过这个信息在search.php处发现注入点 使用BurpSuite抓包,将HTTP报文保存到指定文件/home/yao/桌面/1.txt,利用sqlmap工具尝试注入
4.2 sqlmap 注入
4.2.1 获取数据库信息
4.2.2 获取Staff库中表名
4.2.3 获取Staff库中Users表的列名
4.2.4 获取Staff库中Users表的username和password数据
- 这里是admin及其密码,
- 之后的实验需要使用这对密码登陆web的manage.php
4.2.5 获取Staff库中StaffDetails表的列名
4.2.6 获取Staff库中StaffDetails表中的指定信息id,firstname,lastname
4.2.7 获取users库中表名
4.2.8 获取users库中UserDetails表的列名
4.2.9 获取users库中UserDetails表的username和password
- 注意!得到的这些username和password分别存储到/home/yao/桌面/下的User.txt和Pass.txt文件中。这两个文件是后面实验需要用到的字典,用来爆破SSH密码使用的。
- User.txt如下:
- Pass.txt如下
4.2.10 获取当前连接的数据库名
4.2.11 判断当前用户是否为数据库管理员,是的话返回True,否的话返回False
4.2.12 获取数据库的所有用户
5. Web页面登陆
5.1 登陆admin
- 在 4.1.4 节中,密码在之前已经被获取
5.2 在web页面底部发现"File does not exist"
- 同时,浏览其他的页面welcome.php、manage.php、addrecord.php,发现都有这个提示,说明可能存在文件包含漏洞
- 传参file=…/…/…/…/etc/passwd获取文件信息
5.3 选择manage.php进行尝试文件包含漏洞,成功
- 传参file=…/…/…/…/etc/passwd获取文件信息
6. 利用knockd打开ssh
- knockd.conf是一种端口试探服务器工具。它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。telnet或Putty等客户软件通过向服务器上的端口发送TCP或数据包来启动端口命中,也可以直接用nc敲击端口。
- 传参?file=…/…/…/…/etc/knockd.conf获取文件信息
- 得到了3个端口7469,8475,9842
-
如果试探连接 7469,8475,9842 这三个端口,将会开放iptables防火墙对于22端口的流量,敲击9842,8475,7469 三个端口,会过滤连接22端口的流量。 -
接下来进行端口的敲击打开:(这里使用的是nc命令) -
nmap 查看22端口是否开启 -
利用上面保存的字典User.txt和Pass.txt,使用hydra对目标SSH服务进行爆破 获得部分的SSH账户和密码
7. SSH连接目标主机
-
爆破出来有3个用户可用,其中有个管理员用户 先选用joeyt用户登录,查看其隐藏目录,发现都是空的。不是管理员用户 -
选用chandlerb用户登录,查看其隐藏目录,发现都是空的。不是管理员用户 -
选用janitor用户登录,查看其隐藏目录,发现有个secrets-for-putin目录。进一步查看,获得新的密码。janitor是管理员用户。 -
将爆破出新的密码添加到之前的字典Pass.txt中,再次使用hydra对目标SSH服务进行爆破。
8. 提权
-
使用新爆出的fredf用户登陆SSH -
这个用户可以sudo使用root权限在运行一个test程序(/opt/devstuff/dist/test/test),而且不需要密码 /opt/devstuff/dist/test/test是一个python编译后的文件。 通过阅读其python源文件,可以知道该py文件就是将一文件内容追加到指定文件的后面。(由于存在sudo权限,可以向/etc/passwd文件写入拥有root权限的账户) -
使用Openssl构造加密密码,构造新用户admin 将新用户的信息保存到临时文件/tmp/admin中 -
使用test程序将构造的用户和密码追加到/etc/passwd中 这条命令需要注意相对路径! -
查看/etc/passwd,确认是否添加成功
9. 切换用户获得root权限,成功!!!
|