休闲

网络渗透基础课程 第44讲 文件上传漏洞

时间:2010-12-5 17:23:32  作者:探索   来源:百科  查看:  评论:0
内容摘要:一个webshell上传成功,比打十台没有漏洞的服务器都来得实在。文件上传漏洞一直是渗透测试里最直接的突破口——它不跟你玩什么复杂的逻辑绕过,只要你敢传,我就敢执行。 我在一次授权测试中,目标是一个老

一个webshell上传成功,网络文件比打十台没有漏洞的渗透上传服务器都来得实在。文件上传漏洞一直是基础渗透测试里最直接的突破口——它不跟你玩什么复杂的逻辑绕过,只要你敢传,课程我就敢执行。第讲

我在一次授权测试中,漏洞目标是网络文件一个老旧的内部管理系统。登录页面平平无奇,渗透上传弱口令直接进去,基础发现有个头像上传功能。课程前端限制了jpg和png,第讲我随手改了后缀传了个phpinfo.php上去,漏洞服务器直接给我回了200。网络文件那一刻我就知道,渗透上传这系统基本拿下了。基础

为什么文件上传漏洞这么普遍?说白了,很多开发人员只想着“能传上去就行”,过滤逻辑写得跟闹着玩似的。你传个php文件,他检查后缀名,那你改成php5、phtml、php.7z,他可能就懵了。更离谱的是,有些系统只检查Content-Type头,用Burp改一下image/jpeg就能骗过去。

但真正致命的不只是后缀绕过。文件上传漏洞的利用方式,取决于服务器怎么处理你上传的文件。如果文件直接落在web目录下,且能解析成脚本,那你就拿到webshell了。如果文件被存到OSS或者独立存储服务器,那就算传了马也白搭——你得找文件包含漏洞配合,才能把上传的文件“激活”。

我见过一个案例,系统把上传的图片重命名成随机字符串,还强制加上了.jpg后缀。看起来挺安全对吧?但人家用的是Nginx,配置了cgi.fix_pathinfo,你传个shell.jpg,访问的时候在后面加个/x.php,Nginx就把shell.jpg当PHP解析了。这种漏洞不怪开发,怪的是服务器配置。

还有种情况,文件内容过滤做得严,你传个图片马,里面藏了PHP代码,但人家用getimagesize检查文件头,你只能老老实实传个真图片。这时候就得靠包含漏洞了——找个参数去include你上传的图片,代码照样执行。这招在CTF里常见,实战中也不少见。

上传漏洞的检测其实不难,但很多人懒得测。你拿个普通txt试试,再拿个PHP试试,看响应差别。如果上传txt返回成功,上传PHP返回“文件类型不允许”,那说明有过滤。用Burp反复改包,看哪个字段在起作用。

实际操作的时候,我习惯先传一个最小的探针文件,就一行代码,打印出当前目录路径和PHP版本。这一步不是为了拿shell,是为了确认服务器环境。如果探针能执行,再考虑传个大马。直接传大马容易被安全设备拦,小文件不起眼。

上传漏洞修复起来也简单,但总有人不当回事。服务端白名单校验后缀名,重命名文件,禁用脚本执行目录,这三板斧下来,90%的上传漏洞都能堵住。剩下的10%,得靠WAF和日志监控兜底。

别迷信什么“上传了就得手”。我见过有人传了个shell上去,结果目录没有执行权限,只能看不能跑。也见过上传成功但被安全狗当场查杀,还没连上就被删了。这行当里,运气和技术各占一半。

文件上传漏洞是那种——你知道了原理就觉得简单,但实际利用时总会有意外的东西。多测,多试,别嫌烦。你传上去的那一行代码,可能就是整个内网的起点。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap