天积安全靶场攻略 | CRLF 注入靶场通关攻略

大家好,我是 Vista_AX 👋

最近好多朋友私信问CRLF 注入靶场怎么过,今天干脆统一捋一遍,带大家丝滑通关第一个实战靶场。

这是一类经典却容易被忽视的 Web 漏洞------只要你能往响应头里塞一个回车换行,整个 HTTP 响应就可能变成你的"游乐场"。

抓包工具准备好了吗?直接开整!🔧

天积靶场免费下载地址:

第一步:信息收集 --- 读懂题目在说什么 🕵️‍♂️

进入靶场后,查看靶场说明:

"需要利用CRLF注入漏洞构造特定的钓鱼链接使用户访问后会跳转到指定的页面"

提取关键信息"利用CRLF注入漏洞",CRLF漏洞又名HTTP响应拆分漏洞,因Web应用未严格验证用户输入,导致攻击者可在HTTP头中注入回车换行符,从而篡改HTTP响应头。由此判断本靶场可能和篡改HTTP 响应头有关。

保持着这个思考,再来看看页面用户登录处的提示:

"请构建一个请求链接,点击后会自动跳转到百度"

抓住关键信息"跳转到百度",结合CRLF注入,猜测通关需要改变HTTP响应头的方式实现百度页面的跳转。


接着,既然有测试账号可以登录,那就登录看看呗,尝试用测试账号heasec/123456登录,发现页面存在新提示。

"想一想,有哪些响应头可以实现页面跳转?在什么样的情况下才能生效?"

好,进一步明确漏洞确实和 HTTP 响应头 有关,那接下去进一步抓包看看,看看靶场的请求包构成,看看怎么有机会能够篡改响应包...

第二步:功能分析 --- "用户名"暗藏玄机 🔍

仔细观察进入靶场的页面行为:

  • 登录表单的用户名输入框,会 自动填充 heasec 用户名

产生疑问🤔,用户名是如何传入的?

发现浏览器上头URL 中赫然写着:

index.php?username=heasec

用 Yakit 抓包,看看服务端到底干了什么👇:

复制代码
请求:GET /index.php?username=heasec
响应头中出现了:X-User-Name: heasec

发现关键线索 :服务端把 username 参数的值,直接写进了 HTTP 响应头(X-User-Name)中。((实际场景通常是输出到Set-Cookie中用于设置cookie记住用户名,这里使用X-User-Name头来模拟)

那从这里我们可以猜测,通过修改 username 参数的值,是不是就可以控制响应头了?进一步尝试看看


第三步:理解 CRLF --- 控制响应头

如何控制响应头呢,先来理解CRLF,HTTP 协议中,响应头之间用 \r\n(CRLF,即回车+换行)分隔,头部和响应体之间用 \r\n\r\n(双 CRLF)分隔。

已知服务端把 username 参数的值,直接写进了 HTTP 响应头(X-User-Name)中,当username=heasec时,正常的响应结构如下:

http 复制代码
HTTP/1.1 200 OK\r\n
Content-Type: text/html\r\n
X-User-Name: heasec\r\n
\r\n
<html>页面内容...</html>

假设 username 参数值里包含 \r\n,服务端又没有过滤,那猜想就可以 注入额外的响应头,被构造的响应结构如下:

http 复制代码
HTTP/1.1 200 OK\r\n
Content-Type: text/html\r\n
X-User-Name: heasec\r\n
X-Test: hello
\r\n
<html>页面内容...</html>

进一步验证下 猜想是否成立 ,构造测试请求(注意在浏览器地址栏中,\r\n 需要编码为 %0d%0a(URL 编码))

复制代码
index.php?username=test%0d%0aX-Test:%20hello

查看响应头,成功出现了 X-Test: hello,说明CRLF注入存在,可以凭借此种方式控制响应头。

至此我们发现可以通过CRLF注入的方式成功控制响应头了。


第四步:构造请求 --- 让你跳你就得跳 🏃‍♂️

在可以控制响应头的情况下,进一步思考有什么响应头可以实现页面跳转?下意识反映是Location头,尝试看看

发现不行,再进一步查看,发现

Refresh响应头是可以的,那我们如何再响应包中另起一行构建Refresh响应头去实现跳转呢?

如果 username 的值里包含特殊的换行字符呢?

再构造通关 Payload ,通关要求是跳转到百度,所以注入 Refresh 头:

复制代码
index.php?username=test%0d%0aRefresh:%200;url=https://www.baidu.com

解码后的效果等价于:

http 复制代码
X-User-Name: test
Refresh: 0;url=https://www.baidu.com

访问这个 URL,页面成功跳转到了百度,说明CRLF注入成功。


第五步:获取通关密码

再次进入靶场,重新登录heasec账号,用户信息区域出现通关密码了。

将这串 20 位的通关密码填入 秘密验证 卡片,验证通过即可完成本关。

思路总结

步骤 做了什么 发现了什么
信息收集 阅读页面提示 漏洞与 HTTP 响应头、URL 参数有关
功能分析 观察"记住用户名"行为 username 参数被写入X-User-Name响应头
抓包确认 F12 查看 Network 确认参数值未过滤直接进入响应头
原理利用 注入 %0d%0a 构造新响应头 成功注入 Refresh 头实现跳转
完成验证 回到页面获取密码 提交通关密码完成挑战

核心思路 :凡是用户输入被写入 HTTP 响应头的地方,都值得测试 CRLF 注入。%0d%0a 就是打开这扇门的钥匙。

相关推荐
小江的记录本6 分钟前
【CSS】CSS 动画:transition、animation、transform、CSS3 新特性(附《思维导图》)
前端·css·安全·spring·前端框架·css3·动画
宸津-代码粉碎机1 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
俊基科技1 小时前
清晰通信,守护矿场安全——A-29 回音消除模块在矿山矿井通信系统中的应用
安全·ai降噪·语音模块·回音消除·矿场通讯·矿场安全
xcLeigh2 小时前
Go入门:整数类型的溢出与安全边界
java·安全·golang
ai小陈3 小时前
FramePack图生视频云端部署实战:从单图输入到视频输出的完整流程
服务器·人工智能·安全·ai·音视频·gpu算力
2401_868534785 小时前
第7章 网络环境规划:综合篇考点梳理
网络·安全
Neighbor_OldY6 小时前
云上VPC流日志与网络流量安全分析实战:异常流量、横向移动、C2外连与恶意IP的发现与处置
网络协议·tcp/ip·安全
0xBADCODE6 小时前
CTF Writeup 合集
安全·web安全·网络安全·系统安全·密码学·php·ctf
山东科恩光电7 小时前
智能化折弯机保护装置提升工业安全与效率的新途径
安全
Acrellea7 小时前
适配新标准!AIM-T500L 助力算力中心 800V 直流系统安全运维
运维·安全·系统安全