游客发表

如何拿一个网站的webshell

发帖时间:2026-10-17 04:37:05

拿到一个网站的何拿 webshell,最直接的个网路径永远是找到一个能执行代码或写入文件的漏洞。别想着有什么万能工具一键搞定,何拿那都是个网骗小白的。真实场景里,何拿八成以上的个网成功入侵靠的是目标自己写错了代码——文件上传过滤不严、命令执行没做过滤、何拿或者数据库权限配得太肥。个网

我印象很深的何拿一个案例:某企业官网的“用户头像上传”功能,前端只检查了文件扩展名,个网后端居然把原始文件名直接拼到路径里。何拿传个 shell.php.jpg?个网不,服务器根本没管后缀,何拿只要 Content-Type 是个网 image/jpeg 就放行。但 Apache 配置里有个 AddHandler application/x-httpd-php .jpg。何拿结果传个 jpg 上去,里面写 <?php system($_GET['c']); ?>,访问 /uploads/shell.jpg?c=id 直接回显 uid。这种配置错误在中小型站点里一抓一大把。

文件上传是拿 shell 最经典的入口。但别只盯着 .php 后缀。试试 .phtml、.php5、.phar,或者大小写混写 .PhP。有些 WAF 只拦小写。还有 Content-Type 改成 image/gif,文件头加 GIF89a 再跟 PHP 代码。更阴的招是传 .htaccess,里面写 AddType application/x-httpd-php .png,然后传个 png 木马。这招对 Apache 特别管用,Nginx 一般不吃这套。

如果上传点封死了,就找文件包含。本地包含 ?page=../../../../etc/passwd 能读系统文件,但拿 shell 得配合日志或 session 文件。比如往 User-Agent 里写 PHP 代码,然后包含 /var/log/apache2/access.log。这招在 CTF 里烂大街,但真实环境里日志路径可能变,权限也可能不够。我试过十几次,成功不到三次。远程包含更少见,allow_url_include 默认是关的。

命令执行漏洞现在不多了,但一旦碰上就是直接 shell。比如 system('ping '.$_GET['ip']),你传 ;cat /etc/passwd 就能读文件。拿 webshell 更简单:;echo '<?php eval($_POST[1]); ?>' > /var/www/html/x.php。前提是 web 目录可写。很多站点的 web 目录属主是 www-data,而命令执行也是 www-data 权限,那就能写。如果权限不够,试试写 /tmp 再包含,或者写 crontab 反弹 shell。

SQL 注入拿 shell 需要满足一堆条件:secure_file_priv 为空、知道绝对路径、数据库用户有 FILE 权限。用 select '<?php @eval($_POST[1]);?>' into outfile '/var/www/html/shell.php'。听起来很爽,但 MySQL 8 默认 secure_file_priv 是 NULL,直接堵死。我见过有人用 into dumpfile 写 UDF 提权,那已经是后渗透阶段了,不是单纯拿 webshell。

还有一种被低估的入口:备份文件。www.zip、backup.tar.gz、.index.php.swp。下下来看源码,找硬编码的数据库密码或者后台弱口令。登进后台传插件、改模板、或者数据库备份导出成 php。WordPress 里装个恶意插件,或者直接编辑 404.php 模板加代码。这比挖漏洞稳多了。

拿到 shell 之后别急着提权。先 whoami、uname -a、cat /etc/os-release。看看能不能连内网数据库,或者翻 .bash_history。很多运维会把密码写在脚本里。我见过一个站,web 目录下有个 deploy.sh,里面明文写着 MySQL root 密码和 SSH 私钥路径。这种失误比漏洞本身更致命。

最后说个真事:某次授权测试,目标站用了某国产 CMS,前台搜索框有注入。用 sqlmap 跑出 secure_file_priv 为空,直接 --os-shell 写了个 php 马。整个过程不到十分钟。但另一回,一个站我折腾了三天,试了上传、包含、注入、备份文件,最后发现是 Tomcat 的 manager 弱口令,传了个 war 包才拿到 shell。所以别指望一招鲜,得看目标用什么技术栈。PHP 站优先找上传和包含,Java 站看反序列化和 manager,Node.js 站试试原型链污染。拿 webshell 的本质是找那个“开发者没想到的输入点”,剩下的只是把代码塞进去。

    热门排行

    友情链接