npm 源投毒研究系列(一):从包结构理解攻击面
内网渗透那块又搁置了,实在是事情有点多,等后面学校里的 ddl 都赶完再接上。
最近在负责这块的内容,以此篇记录一下最近的一些总结学习。
近期看来,npm 生态接连遭遇多轮供应链投毒事件,例如 chalk/debug、Shai-Hulud V1/V2、Mini Shai-Hulud 等案例,都暴露出 npm 依赖体系中的典型风险。与传统漏洞利用不同,这类攻击很多时候并不是依赖某个复杂的 0day,而是滥用了 npm 包本身就具备的正常机制,例如生命周期脚本、依赖解析、版本发布、包入口加载等。攻击者也可能通过伪装成正常包、接管维护者账号、发布恶意版本等方式,将恶意逻辑植入依赖链中,进一步实现安装阶段凭证窃取、依赖链扩散,甚至自传播蠕虫式感染。
要分析这些攻击,得先理解 npm 包本身是怎么组织的、安装时到底会发生什么。所以这一篇先把基础结构梳理一遍,关键节点会顺手点一下对应的攻击面在哪——具体手法、案例和研判思路留到下一篇展开。
1. npm 生态的基本组成npm 生态里最核心的几个概念包括:
概念
简要说明
npm CLI
本地使用的 npm 命令行工具 ...
内网渗透(3):凭据收集与凭据复用
之前两篇有整理了通道构建、主机发现、端口探测和权限提升之类的。一般情况下,不一定需要纯靠漏洞进行下一步操作,有时在一台内网的机器上能否继续扩大利用面,取决于能不能找到一些可复用的凭证。
内网里有一个很现实的问题,就是很多系统之间不是完全隔离的。Web 应用要连数据库,定时任务要调内部接口,CI/CD 要拉代码、推镜像,运维脚本要登录服务器,容器要读取环境变量,Kubernetes 要挂载 Secret。只要这些凭据管理得不够好,一台机器上的线索就可能变成访问另一套系统的入口。
0. 凭据在内网里的价值0.1 为什么内网很多时候靠凭据继续走外网打点时,漏洞往往是入口。但进入内网以后,凭据的价值会明显变高。归纳起来主要是两类原因:
横向调用关系密集:内网系统之间相互依赖,Web 调数据库,应用调中间件,CI/CD 调发布系统,几乎每条调用链都需要认证。
凭据生命周期管理差:开发为了方便把账号写在配置里,运维为了省事在多套环境里复用密码,老的备份和脚本里的凭据没人轮换,本地管理员、API Token、AccessKey 经常被多个系统共用。
因此尝试获取凭证也是能够让 ...
内网渗透(2):端口探测与权限提升
上次那篇总结的是通道构建和主机发现部分,但是在稳定连上一台机器,并且知道了一批IP后,要怎么往下走。
因此,这一篇主要是两个问题
目标主机开放了哪些端口,对应什么服务
当前跳板机上的权限够不够,是否存在本地提权风险
端口识别主要是为了确定后续的测试方向,比如一些固定的端口对应的服务可能会有特定手法或者漏洞可以利用。权限提升顾名思义,我们肯定希望在当前拿到shell的主机上的权限是越高越好的,因此在当前用户权限不足时,就需要找办法把当前用户变成root或者admin。
1. 端口探测1.1 常见服务端口端口识别不是为了把所有端口都扫一遍,而是通过开放端口判断资产类型、业务角色和后续测试优先级。实际内网环境中,可以优先关注下面几类端口。
远程管理类
端口
服务
关注点
22
SSH
Linux 服务器、网络设备、跳板机,关注弱口令、密钥复用和登录来源
23
Telnet
老旧设备或网络设备,明文传输,优先级较高
3389
RDP
Windows 远程桌面,关注暴露范围、登录来源和账号复用
5985/5986
WinRM
Windows 远程管理,常见于远 ...
内网渗透(1):通道构建与主机发现
最近忙完了学校里的一些作业和任务,也结束了实习面试,发现自己对内网的一些知识之前学的比较零散,开个专题给自己复盘一下。
通常,在通过打点拿到Webshell以后,需要解决两个问题:
外部测试机如何访问内网
内网里有哪些主机和网段
如果没有稳定的访问通道,后续的端口探测、漏洞验证、横向移动都无法展开。如果不知道内网资产分布,也很容易陷入盲目扫描,造成大量噪声。
0. 明确几类机器为了避免命令位置混乱,先定义几个角色。
角色
说明
常见位置
测试机
安全人员自己的机器,用来发起连接、配置代理、运行扫描工具
本地电脑 / Kali / VPS
公网 VPS
有公网 IP 的中转服务器,用来接收反向连接或做流量转发
云服务器
内网跳板机
已经获得授权访问权限的一台内网主机
Web 服务器 / 办公终端 / 运维机
内网目标主机
需要进一步识别和测试的内网资产
数据库 / 域控 / OA / 文件服务器
1. 通道构建1.1 跳板机网络信息收集一般在跳板机上需要先判断其网络情况,比如:
这台机 ...
【笔记】吴恩达Generative AI with Large Language Models --- Week3
本篇为学习吴恩达DeepLearning.AI平台下《Generatvie AI with Large Language Models》笔记
课程:DeepLearning.AI — Generative AI with Large Language Models
链接:Generative AI with Large Language Models
Week 3: Reinforcement learning and LLM-powered applicationsAlignment and RLHFAligning models with human values通过 instruction fine-tuning 让AI更懂 prompt、回答得更自然。但回答更像人,并不等于回答就一定更好。模型在生成自然语言时,也可能学到互联网上那些不太好的东西,比如攻击性表达、错误信息,甚至有害内容。
这里引出了 alignment(对齐) 的概念。所谓 aligning models with human values,本质上就是让模型生成的内容更符合人的偏好和社会期待,而不是只会“顺着语言 ...
【笔记】吴恩达Generative AI with Large Language Models --- Week2
本篇为学习吴恩达DeepLearning.AI平台下《Generatvie AI with Large Language Models》笔记
课程:DeepLearning.AI — Generative AI with Large Language Models
链接:Generative AI with Large Language Models
Week2: Fine-tuning and evaluating large language models本周的内容主要学习instruction fine-tuning(指令微调)和parameter-efficient fine-tuning, PEFT(参数高效微调)。预训练模型虽然已经学到了很多知识,但并不一定擅长理解和执行指令,因此需要通过instruction tuning(指令调优)来调整模型行为。后续内容还要介绍微调中的catastrophic forgetting(灾难性遗忘)问题,以及像 LoRA(低秩适配)这样的高效微调方法。这些方法可以在更低的计算和存储成本下提升模型在特定任务上的表现。
Instruction ...
【笔记】吴恩达Generative AI with Large Language Models --- Week1
本篇为学习吴恩达DeepLearning.AI平台下《Generatvie AI with Large Language Models》笔记
课程:DeepLearning.AI — Generative AI with Large Language Models
链接:Generative AI with Large Language Models
Week1: Generative AI user cases, project lifecycle, and model pre-trainingTransformer Architecture1. LLM 与传统机器学习的输入输出方式差异和传统机器学习常见的“固定特征输入 → 预测标签/数值”不同,LLM 通常直接接收自然语言prompt(提示词)作为输入,然后生成 completion(续写/补全)作为输出。
Prompt:你给模型的上下文、指令、问题
Completion:模型根据 prompt 继续生成的文本(通常是逐 token 生成)
2. 为什么早期 RNN 系列模型不够好早期 RNN/ ...
React2Shell(CVE-2025-55182)原理拆解
参考phith0n师傅发布在代码审计知识星球(“Thenable的由来”、“Next.js调试环境配置”、“RSC是怎样解析数据包的?”、“React2Shell漏洞原理”)
panda师傅发布在代码审计知识星球(“React2Shell分析总结”)
CVE-2025-55182 - React Server Components RCE 漏洞深度分析
人工深度调试剖析 CVE-2025-55182 React2Shell 反序列化漏洞(一)
人工调试剖析 React2Shell 反序列化漏洞(二)- 原理、利用及 Bypass WAF 等
全网最优雅的 React 源码调试方式
来自Github的kavienanj的分析
为了真正看懂这个漏洞,我前后花了相当多的时间。期间反复对照了多篇不同视角的分析文章,又结合源码调试,一步一步跟着解析流程往下走,才逐渐把整条利用链串起来。
也正是在这个过程中,才越发体会到最初发现这个漏洞的研究者有多细。它并不是那种一眼可见的实现错误,而是藏在一系列内部细节产生的逻辑缝隙。能在这样复杂的解析路径里意识到数据正在被当成逻辑使用,本身就需要对 Reac ...
MCP(Model Context Protocol)学习笔记:下一代LLM接口标准 | 概念部分
近几年,大模型的发展速度实在太快了。 从最初单纯依赖 Prompt 的阶段,到后来兴起的 AI Agent,再到如今的 MCP(Model Context Protocol),每一次演进都在重塑人们与模型交互的方式。AI Agent 还在半年前是人人讨论的热门话题,如今却随着 MCP 的出现,逐渐淡出了视野。
为了跟上时代的脚步,我决定深入学习 MCP,通过本篇记录下自己的理解过程,并思考它在安全性与安全应用场景上可能带来的新变化。
本文参考:
吴恩达MCP课程
B站隔壁的程序员老王
Prompt,Agent,MCP都是什么Prompt2023 年,OpenAI 发布了 ChatGPT。当时的 AI 主要以聊天框的形式存在,我们输入的消息被称为 User Prompt,即用户提示词,通常是我们提出的问题或指令。
实际上,通过不同的提示词,用户可以在一定程度上塑造AI 的性格。例如:
- 当你说:“帮我修改我的论文。”
AI 会以助理的口吻给出中立的建议;
- 而如果你说:“假设你是我的导师,请帮我修改论文。”
它的语气可能会更加犀利、批判性更强(bushi)。
在这 ...
NexusCTF Write-Up By YoSheep
NexusCTF Write-Up By YoSheep
PLACE: 5th
POINTS: 4150
SOLVES: 30
很艰难的一场,毒狼战团队赛,一年多没打手还没算很生。由于本场比赛没有要求交所有题目的Write-up,以下挑了几个题来写。Web的题目和一些我觉得有意思的我会写的尽量细一些。
MiscellaneousAnnoying? No.I obtained a binary string from the file binary.txt. To recover the hidden message, convert each 8-bit chunk into its corresponding ASCII character.
12bits = "01001110 01100101 01111000 01110101 01110011 01000011 01010100 01000110 01111011 01101110 00110000 01110100 01011111 01000000 01110011 01011111 01000000 01 ...
