烟消火灭网

去年秋天,我帮一个做跨境电商的朋友看他的独立站。服务器日志里有个IP在凌晨三点反复请求 /admin/upload.php,每次返回200,但文件大小始终是0字节。这个细节不对劲——正常上传成功不会持

网站渗透实战

去年秋天,网站我帮一个做跨境电商的渗透实战朋友看他的独立站。服务器日志里有个IP在凌晨三点反复请求 /admin/upload.php,网站每次返回200,渗透实战但文件大小始终是网站0字节。这个细节不对劲——正常上传成功不会持续返回空响应。渗透实战我让他立刻备份数据库,网站然后手动构造了一个包含PHP代码的渗透实战GIF文件,用Burp Suite改包上传,网站路径直接回显在响应头里。渗透实战十五分钟后,网站我拿到了一个低权限的渗透实战WebShell。

这就是网站典型的文件上传漏洞利用。很多开发人员只在前端用JavaScript校验文件后缀,渗透实战后端接到请求直接 move_uploaded_file(),网站连MIME类型都不看。我试过把 shell.php 改成 shell.php.jpg,服务器照单全收。更离谱的是有些CMS会把上传目录设成 /uploads/ 并且允许目录遍历,你传个 .htaccess 进去就能让jpg文件当php执行。

拿到WebShell只是第一步。我习惯先执行 whoami && uname -a,确认权限和系统版本。那次是Ubuntu 20.04,www-data用户。接着翻 /etc/passwd 找可登录账户,发现有个叫 deploy 的用户家目录下藏着 .ssh/id_rsa。私钥没加密,直接拿来横向到内网另一台Redis服务器。Redis未授权访问,写SSH公钥到 /root/.ssh/authorized_keys,三分钟拿到root。整个过程没有用任何0day,全是配置疏忽。

SQL注入现在没那么好用了,但盲注依然能干活。有个站点的搜索框过滤了 union 和 select,但没过滤 extractvalue。我构造 and extractvalue(1,concat(0x7e,(select database()),0x7e)),报错信息里直接带出库名。然后逐字符猜表名,用 ascii(substr(...)) 配合二分法,一个字符大概发六次请求。写个Python脚本跑一晚上,管理员密码的bcrypt哈希就到手了。这活儿枯燥,但比撞库靠谱。

XSS我一般用来打管理员后台。有个后台的评论审核功能没转义HTML,我提交 。管理员一点开审核页面,Cookie就发到我服务器上了。不过现在很多站点给Cookie加了HttpOnly,这时候得换思路——用XSS直接发请求改管理员密码,或者读CSRF token再构造表单。我遇到过最绝的防御是CSP里写 script-src 'self',但没禁 base-uri,我注入 就把相对路径的脚本劫持了。

渗透测试最耗时的不是找漏洞,是信息收集。我习惯先跑 nmap -sV -p- 扫全端口,再对Web服务用 gobuster dir -w /usr/share/wordlists/dirb/big.txt -x php,html,txt 扫目录。有次扫出 /backup/ 目录,里面躺着 www.zip,解压后是整站源码,数据库密码明文写在 config.php 里。还有一次扫到 /.git/,用 git-dumper 把整个仓库拖下来,翻提交记录发现开发者曾经把AWS密钥硬编码进去,虽然后来删了,但历史提交里还在。

别迷信工具。AWVS和AppScan能扫出中危漏洞,但逻辑漏洞得靠人看。比如有个电商站,把商品ID改成负数,总价变成负的,下单后余额反而增加。这种漏洞扫描器永远发现不了。我现在的习惯是:打开Burp,关掉被动扫描,手动点每个功能点,观察请求参数和响应差异。慢,但有效。

最后说个教训。有次我拿到一个Shell,急着提权,直接跑了 linpeas.sh,结果触发了EDR告警,十分钟后IP被封。后来学乖了,先 cat /proc/version 和 ls -la /etc/cron* 手工看,确认没有监控进程再上工具。渗透的本质是信息差,你比管理员更了解他的系统,你就赢了。但别越界——我每次测试前都会签授权书,明确范围和时间窗口。没授权的渗透叫犯罪,不叫技术。

访客,请您发表评论:

© 2026. sitemap