探索

上传webshell

时间:2010-12-5 17:23:32  作者:知识   来源:热点  查看:  评论:0
内容摘要:凌晨两点,我盯着Burp Suite里那个返回包,HTTP 200,响应体里躺着一串熟悉的字符——id命令的输出。目标是一台跑着ThinkPHP的政府网站,漏洞点是个文件上传接口,没过滤后缀,也没校验

凌晨两点,上传我盯着Burp Suite里那个返回包,上传HTTP 200,上传响应体里躺着一串熟悉的上传字符——id命令的输出。目标是上传一台跑着ThinkPHP的政府网站,漏洞点是上传个文件上传接口,没过滤后缀,上传也没校验文件头。上传我传了个.php,上传内容就三行:eval($_POST['x']);。上传就这么简单。上传整个过程没超过五分钟,上传但我知道,上传从这一刻起,上传这台服务器上所有东西——数据库、上传配置文件、内网的其他机器——都成了我的后花园。

上传webshell这事儿,本质上就是往别人家客厅里塞一把备用钥匙。但很多人把它想复杂了。什么免杀、混淆、加密流量,那都是后期对抗才需要考虑的。真正决定成败的,往往是最开始那个入口。你上传的文件要是能被执行,那万事大吉;要是不能,再花哨的代码也只是一堆死字符。我见过太多新手,一上来就研究各种变形马,结果连最基础的Content-Type都没改,直接被WAF拦在门外。

拿一次真实经历说吧。有个客户,做电商的,请我测他们的后台。系统是Java写的,上传头像功能,前端限制了jpg、png。我抓包一看,后端只校验了Content-Type,压根没检查文件内容。我直接改包,把文件名改成shell.jsp,Content-Type改成image/jpeg,文件体塞进去一段JSP的webshell。上传成功,访问路径直接解析。整个过程,服务器的日志里干干净净,没有任何报警。你说这算不算漏洞?当然算。但漏洞的根源不是那行代码,而是信任——信任了不该信任的输入。

上传webshell的姿势多了去了。有的靠解析漏洞,比如Nginx的%00截断,Apache的.php.rar后缀解析;有的靠中间件配置失误,比如FastCGI的PATH_INFO问题;还有的干脆利用编辑器漏洞,像那些老旧的FCKEditor,直接让你传任意文件。但说到底,这些技巧都有个共同前提:你得知道目标用什么环境。盲目的堆payload,不如花几分钟看看响应头里的Server字段。一次渗透测试,我花了两个小时猜后台路径,最后发现robots.txt里直接写着管理入口——你永远想不到目标会以多蠢的方式暴露自己。

别误会,我不是在教你怎么干坏事。这行当里,黑与白有时候界线很模糊。我见过一个安全工程师,白天帮客户修补漏洞,晚上在暗网卖shell。也见过红队队员,拿webshell拿到手软,但最后提交报告时,连一句多余的话都不说。工具是中性的,关键看握在谁手里。我写这些,是因为太多人把上传漏洞想得太神乎其神,或者太不屑一顾。实际上,它就是一个简单的逻辑:如果服务器接受了你的文件,并且把它当作代码执行,那你就赢了。

但赢了一台服务器,不代表赢了整个战役。真正的攻防,往往在你拿下shell之后才开始。你得提权、得横向、得清理日志。有一次我传了个一句话木马上去,结果服务器上装了安全狗,我连执行命令都费劲。最后怎么绕过的?我上传了一个.htaccess,把php_flag engine off改成on,再配合一个图片马,才勉强拿到权限。你说这累不累?累。但这就是现实——你上传的每一个webshell,都是在跟对方的安全体系下棋。

写到最后,我想起第一次成功上传webshell的那个下午。目标是个测试站点,我用的是最简单的PHP后门,代码就一句话:。上传成功后,我在浏览器里输入了那串熟悉的URL,页面空白,但我知道它活着。那一刻的兴奋感,比后来拿下的任何高权限都强烈。上传webshell,说白了,就是一场关于信任的博弈。你骗过了服务器的信任,也就拿到了它的一切。但记住——这世界上没有打不穿的墙,只有还没被发现的裂缝。你的任务,就是找到那条缝,然后——轻轻地,把钥匙塞进去。

最近更新
热门排行
copyright © 2026 powered by 烟消火灭网   sitemap