热点

触发webshell

时间:2010-12-5 17:23:32  作者:热点   来源:热点  查看:  评论:0
内容摘要:拿到一个webshell,最直接的办法就是上传。文件上传漏洞这东西,说到底是开发者的偷懒——只检查了前端,后端没管,或者后端只看了Content-Type,没看文件内容。我见过一个站,上传点连后缀都不

拿到一个webshell,最直接的办法就是上传。文件上传漏洞这东西,说到底是开发者的偷懒——只检查了前端,后端没管,或者后端只看了Content-Type,没看文件内容。我见过一个站,上传点连后缀都不改,直接把php文件丢上去,返回的路径里明晃晃写着shell.php,浏览器一访问,命令执行框就弹出来了。那一刻的感觉,比中彩票还实在。

但更多时候,事情没那么顺。目标站有WAF,或者上传目录被禁了执行权限。这时候就得换个思路,比如利用文件包含。本地文件包含(LFI)配合日志文件,是老套路了。Apache的access.log里会记录你请求的User-Agent,你把一句话木马写在UA里,然后通过LFI去包含那个日志文件,php代码就被解析了。这招我试过,成功率不低,前提是日志路径得猜对,/var/log/apache2/access.log 或者 /var/log/httpd/access_log,挨个试。

还有数据库。有些站把数据库权限开得贼大,能写文件。利用into outfile或者into dumpfile,直接把webshell写到web目录。MySQL的secure_file_priv如果为空,那就随便写。我遇到过一台服务器,root权限,secure_file_priv没设,一个select '' into outfile '/var/www/html/shell.php' 就完事了。写完之后访问,连接密码就是1,简单粗暴。不过现在很多云数据库默认禁了这功能,得看运气。

再说个冷门的——session文件包含。PHP的session文件默认存在/tmp目录下,文件名是sess_加session id。如果你能控制session里的内容,比如用户名,把一句话写进去,再通过LFI包含那个session文件,同样能触发。这招隐蔽性高,因为session文件路径固定,内容可控,唯一麻烦的是session id得知道。通常通过cookie或者URL参数能拿到,实在不行就爆破。

触发webshell之后,第一件事是确认权限。whoami,id,uname -a,这三条命令下去,基本能摸清底细。如果是www-data,那就别想着提权了,先找找配置文件,数据库密码、API密钥,能捞多少捞多少。如果是root,那就随便玩,但别乱来,留个后门就行,别把服务器搞崩。我见过有人一上去就rm -rf /,结果整个站没了,数据也丢了,纯属手贱。

还有个细节:webshell的流量特征。菜刀、蚁剑这些工具,默认的User-Agent和请求体特征太明显,容易被IDS抓。改UA,改参数名,甚至用base64编码传输,都能降低被发现的概率。我习惯用冰蝎,加密流量,但3.0版本被查杀得厉害,得自己改改马。一句话木马现在也进化了,无文件落地,内存马,直接注入到PHP进程里,重启就没了,但重启前你随便用。

最后说个真实案例。去年帮朋友看一个站,ThinkPHP的,版本是5.0.23,有个远程命令执行漏洞。直接构造POST请求,payload是 _method=__construct&filter[]=system&method=get&get[]=id,返回结果里uid=33(www-data)。然后写了个php文件进去,路径是/public/shell.php,内容是一句话。整个过程不到五分钟,连扫描都没用。这种漏洞,说白了就是框架的锅,但开发者不更新,你也没辙。

触发webshell这件事,技术是一方面,耐心和细心更重要。有时候一个站你搞了半天,最后发现是目录权限没设对,或者php版本太低,一句话木马被当文本输出了。那种挫败感,比失败还难受。但一旦成功,那种掌控感,确实让人上瘾。不过别越界,拿到权限就收手,别搞破坏,这是底线。

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