《ZAKU渗透论:卓伊凡的2026渗透工程》第四章:Web攻击原理(下)——XSS、CSRF、文件上传漏洞

第四章:Web攻击原理(下)------XSS、CSRF、文件上传漏洞

三种常见的攻击方式

上一章我们讲了SQL注入------攻击者把代码塞进数据库查询语句里,骗数据库执行。这一章我们讲另外三种常见的Web攻击:XSS、CSRF和文件上传漏洞。

这三种攻击的目标不同、手法不同,但有一个共同点:它们都利用了网站对用户输入"过于信任"这个毛病。


XSS:跨站脚本攻击

什么是XSS?

XSS的全称是跨站脚本攻击(Cross-Site Scripting)。这个名字很拗口,但它的本质很简单:攻击者把一段恶意脚本(通常是JavaScript)注入到网页里,当其他用户访问这个网页时,这段脚本就会在他們的浏览器里执行。

用人话解释一下。

你开了一家留言板网站,用户可以在这里写任何内容。有一天,有个用户没有写"你好",而是写了一段JavaScript代码,内容是"把访问者的Cookie发送到我的服务器"。你的网站没有做任何过滤,直接把这段代码存进了数据库。

从此以后,每个访问这个留言板的用户,浏览器都会自动执行这段代码,把自己的Cookie悄悄发给了攻击者。

攻击者拿到你的Cookie,就可以冒充你登录这个网站。

XSS的三种类型

反射型XSS 是最常见的一种。攻击者把恶意脚本放在一个链接里,比如http://example.com/search?q=<script>恶意代码</script>,然后诱骗用户点击这个链接。当用户点击后,网站把<script>原样返回并在浏览器执行。这种攻击是一次性的,不会存进数据库。

存储型XSS危害更大。攻击者的恶意脚本被永久存储在服务器上(比如存在留言板、评论区、个人简介里)。每个访问这个页面的用户都会中招。这就是前面举例的那种。

DOM型XSS稍微特殊一点。它不经过服务器,纯粹是前端JavaScript自己拼接内容时出了问题。比如从URL里取出参数,直接写到页面上,中间没有任何过滤。

XSS能做什么?

XSS能做的事情非常多。窃取用户的Cookie是最基础的。偷走用户在网站上的所有隐私信息、截屏、记录键盘输入、弹窗钓鱼、强制关注某个账号、甚至发动更大规模的攻击。在JavaScript的能力范围内,XSS几乎可以做任何事。

一个直观的比喻

想象一下,你在办公室里贴了一张公告,上面写着"下午三点开会"。如果有个同事在公告下面贴了一张纸条,写着"请所有人把工牌交给小张",然后你每次看到公告都以为这是真的,就把工牌给了别人。

XSS就是那个贴纸条的人。网页是公告板,用户的浏览器是看到公告的人。浏览器分不清"网站自己写的内容"和"攻击者塞进去的内容"。


CSRF:跨站请求伪造

什么是CSRF?

CSRF的全称是跨站请求伪造(Cross-Site Request Forgery)。它和XSS经常被搞混,但两者的攻击方向完全相反。

简单来说:XSS是攻击者在网页里植入恶意脚本;CSRF是攻击者诱导用户去执行一个用户本人不想做的操作。

用人话解释一下。

你登录了银行网站,银行网站的服务器记住了你的登录状态(通过Cookie)。这时候你点开了一个攻击者发的恶意链接。这个链接向银行网站发起了一个转账请求,比如http://bank.com/transfer?to=hacker&amount=10000

因为你的浏览器访问银行网站时,会带上你的Cookie,服务器看到这个请求是"你"发起的,就真的转了1万块钱给攻击者。

你什么都没做,钱就被转走了。

CSRF的核心条件

CSRF能成功需要同时满足三个条件。

第一,你已经登录了目标网站,浏览器里存着有效的Cookie或Token。第二,目标网站没有对请求的来源做校验,比如没有要求"确认密码"或"二次验证"。第三,攻击者能诱导你点击一个链接或访问一个恶意页面。

这三个条件在现实生活中很容易同时满足。很多人登录网站后就不退出了,一天都保持登录状态。这就给了CSRF可乘之机。

CSRF的典型攻击场景

除了转账,CSRF还可以做很多事:修改密码(把攻击者自己的手机号绑上去)、修改邮箱地址(让密码重置邮件发到攻击者邮箱)、发表恶意内容(用你的账号在论坛里发广告)、取消订单、发货地址篡改等等。

只要是网站提供的功能,CSRF都有可能"代替"你去执行。

XSS vs CSRF:一张表看懂

|----------|---------------------------|----------------|
| 对比维度 | XSS | CSRF |
| 攻击目标 | 网站的用户 | 网站的用户 |
| 攻击方式 | 在网页里注入恶意脚本 | 诱导用户发起恶意请求 |
| 谁执行了恶意操作 | 用户的浏览器(自动执行脚本) | 用户的浏览器(带着用户身份) |
| 网站信任了什么 | 信任了用户的输入内容 | 信任了用户发起的请求 |
| 谁更危险 | 能做更多事(几乎任何JavaScript能做到的) | 只能做网站已有的操作 |


文件上传漏洞

什么是文件上传漏洞?

很多网站允许用户上传文件:头像、附件、简历、图片等等。文件上传漏洞的意思是:攻击者上传了一个本不该被上传的文件类型,并且服务器把它当成了可执行文件来处理。

结果是,攻击者上传了一个"木马文件",服务器乖乖地接受了。然后攻击者访问这个文件,木马被执行,服务器被控制。

攻击者是怎么做的?

正常情况下,一个图片上传功能只允许.jpg.png等图片格式。攻击者会想尽办法绕过这个限制。

最简单的情况是网站根本没有做任何检查。攻击者直接上传一个shell.php,里面写着一行代码"执行服务器上的任何命令"。然后访问这个文件,就可以在服务器上执行命令了。

稍微有点防护的网站会检查文件扩展名。但攻击者可以双写扩展名,比如shell.jpg.php;可以大小写绕过,比如shell.PhP;可以利用服务器解析漏洞,比如shell.php.jpg(某些旧版本Apache会把.jpg后缀的文件当作PHP解析,如果文件名里出现过.php)。

更高级的绕过手段还包括:修改文件Content-Type(把application/x-php改成image/jpeg)、图片马(把恶意代码塞进一张正常的图片里)、压缩包上传(上传一个包含恶意文件的zip,期望服务器自动解压)等等。

文件上传漏洞的后果

最直接的后果是获取服务器控制权。攻击者上传一个Webshell(一种通过网页就能执行服务器命令的后门),然后就可以在服务器上:查看所有文件、修改所有数据、删除所有内容、安装勒索病毒、把服务器变成挖矿肉鸡、用这台服务器去攻击其他网站。

如果这台服务器还能访问内网,攻击者就可以以此为跳板,入侵公司内部的其他机器。

一个看似无害的"上传头像"功能,可能成为整个公司安全的突破口。

真实世界的例子

某知名招聘网站的简历上传功能,允许用户上传PDF和Word文件。攻击者上传了一个伪装成简历的恶意文件,服务器自动解析时触发了漏洞,攻击者成功拿到了服务器的控制权限。这个漏洞被公开后,数百万份求职者的简历信息被窃取。


三种攻击的共同本质

XSS、CSRF、文件上传漏洞看似各不相同,但它们的本质是一样的:网站没有正确地处理用户输入。

|------|------------------------|--------------|
| 攻击类型 | 信任了什么不该信的 | 后果 |
| XSS | 信任了用户输入的内容,直接输出到网页 | 恶意脚本在用户浏览器执行 |
| CSRF | 信任了用户发起的请求,没有验证是否是用户本意 | 用户被利用执行非自愿操作 |
| 文件上传 | 信任了用户上传的文件,没有检查是否是恶意文件 | 服务器被植入后门 |


这一章你该记住什么

第一,XSS是把恶意脚本注入网页,让其他用户的浏览器执行。窃取Cookie是最常见的用途。

第二,CSRF是诱导已登录用户发起恶意请求,代替用户执行操作。转账、改密码、改邮箱都有可能。

第三,XSS和CSRF的区别:XSS在网页里下毒,CSRF在网页外诱导。两者攻击方向相反,但都利用了网站对"用户"的信任。

第四,文件上传漏洞是允许攻击者上传恶意可执行文件。后果往往是最严重的------直接拿到服务器控制权。

第五,这三种攻击的共同本质:网站错误地信任了用户提供的内容。只要区分"用户数据"和"可执行代码/操作",就能理解它们为什么危险。

下一章,我们将进入现代Web安全的核心:现代登录是怎么被绕过的?------JWT、OAuth、Cookie与Token安全。

相关推荐
weixin_307779132 小时前
面向高性能保密计算的定制 Linux 系统构建与自动部署方案
linux·安全·网络安全·性能优化·系统安全
XLYcmy5 小时前
面向Agent权限系统的快速审计工具
python·网络安全·ai·llm·飞书·agent·字节跳动
沈千秋.6 小时前
thinkphp5.2反序列化
网络安全·php·反序列化
m0_738120727 小时前
渗透测试基础——黑盒测试下的Web漏洞挖掘与利用解析(二)
服务器·前端·python·网络协议·安全·网络安全
qsuperm8 小时前
LitCTF2026WEB
网络安全·ctf
路baby9 小时前
2026第十届御网杯网络安全大赛线上赛 区域赛WP (MISC和Crypto)(详解-思路-脚本)
安全·web安全·网络安全·密码学·ctf·misc·御网杯
Lethehong10 小时前
第十届御网杯网络安全大赛 - Wp
网络安全
深邃-11 小时前
【Web安全】-10-网站关键信息收集:目录扫描的概念,工具目录扫描(内含御剑,FindSomething安装链接),网站服务器收集,操作系统判断
运维·服务器·安全·web安全·http·网络安全
XLYcmy1 天前
全链路验证测试系统:一个针对智能代理(Agent)系统全链路能力的自动化验证脚本
分布式·python·http·网络安全·ai·llm·agent