Bypass Linux

常见限制绕过

绕过路径和禁用词

当进行渗透测试或试图未经授权访问系统时,通常会遇到某些路径和禁止词语的限制。实施这些限制是为了防止未经授权的访问,并保护系统免受潜在漏洞的侵害。

然而,作为一名黑客,重要的是要知道如何绕过这些限制,并找到实现目标的替代途径。以下是一些有用的Linux命令,可以帮助您绕过路径和禁止的单词:

  • Mv命令:mv命令可用于重命名文件和目录。通过将受限制的文件或目录重命名为非受限制的名称,您可以绕过限制并获得访问权限。

  • Ln命令:ln命令可用于创建符号链接。通过创建指向具有非受限名称的受限文件或目录的符号链接,您可以绕过限制并获得访问权限。

  • Find命令:find命令可用于搜索文件和目录。通过使用-iname选项,您可以搜索文件和目录,无论大小写是否敏感。这可以帮助您绕过对禁词的限制。

  • Grep命令:grep命令可用于搜索文件中的特定模式。通过使用-i选项,您可以执行不区分大小写的搜索。这可以帮助您绕过对禁词的限制。

  • Sed命令:sed命令可用于执行文本转换。通过使用s/old/new/gi语法,您可以将禁词的出现替换为非限制词。这可以帮助您绕过对禁词的限制。

需要注意的是,绕过限制和未经授权访问系统是非法的,也是不道德的。这些命令只能用于教育目的或经适当授权。在尝试对系统进行任何操作之前,请务必确保您拥有必要的权限。

# Question mark binary substitution
/usr/bin/p?ng # /usr/bin/ping
nma? -p 80 localhost # /usr/bin/nmap -p 80 localhost

# Wildcard(*) binary substitution
/usr/bin/who*mi # /usr/bin/whoami

# Wildcard + local directory arguments
touch -- -la # -- stops processing options after the --
ls *
echo * #List current files and folders with echo and wildcard

# [chars]
/usr/bin/n[c] # /usr/bin/nc

# Quotes
'p'i'n'g # ping
"w"h"o"a"m"i # whoami
ech''o test # echo test
ech""o test # echo test
bas''e64 # base64

#Backslashes
\u\n\a\m\e \-\a # uname -a
/\b\i\n/////s\h

# $@
who$@ami #whoami

# Transformations (case, reverse, base64)
$(tr "[A-Z]" "[a-z]"<<<"WhOaMi") #whoami -> Upper case to lower case
$(a="WhOaMi";printf %s "${a,,}") #whoami -> transformation (only bash)
$(rev<<<'imaohw') #whoami
bash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==) #base64


# Execution through $0
echo whoami|$0

# Uninitialized variables: A uninitialized variable equals to null (nothing)
cat$u /etc$u/passwd$u # Use the uninitialized variable without {} before any symbol
p${u}i${u}n${u}g # Equals to ping, use {} to put the uninitialized variables between valid characters

# Fake commands
p$(u)i$(u)n$(u)g # Equals to ping but 3 errors trying to execute "u" are shown
w`u`h`u`o`u`a`u`m`u`i # Equals to whoami but 5 errors trying to execute "u" are shown

# Concatenation of strings using history
!-1 # This will be substitute by the last command executed, and !-2 by the penultimate command
mi # This will throw an error
whoa # This will throw an error
!-1!-2 # This will execute whoami

绕过禁止空格

在某些情况下,当尝试执行包含空格的命令时,您可能会遇到阻止执行的限制。但是,您可以使用几种技术来绕过这些限制并成功执行所需的命令。

技术1:用引号括开命令

一个简单的技术是将整个命令(包括空格)括在引号中。这告诉shell将整个命令视为单个参数,有效地绕过对空格的任何限制。

例如,您可以运行“ls -l /etc/passwd”,而不是运行包含ls和-l之间空格的命令ls -l /etc/passwd。

技术2:使用转义字符

另一种技术是使用转义字符来指示空格应被视为命令的一部分,而不是分隔符。最常用的转义字符是反斜杠\。

例如,您可以运行ls\ -l\ /etc/passwd,而不是运行命令ls -l /etc/passwd

技术3:使用替代外壳

如果空间限制特定于默认shell,您可以尝试使用没有这些限制的替代shell。例如,您可以使用bash shell而不是默认的sh shell。

为此,您可以运行命"/bin/bash -c "ls -l /etc/passwd"。这告诉系统使用bash shell执行命令,该shell对空格没有相同的限制。

通过使用这些技术,您可以绕过对空格的限制,并成功执行包含空格的命令。然而,重要的是要注意,绕过限制可能被视为未经授权的访问,并且可能是非法的。在尝试绕过任何限制之前,请务必确保您拥有适当的授权。

绕过反斜杠和斜杠限制

在某些情况下,系统管理员可能会限制用户在命令行中使用反斜杠(\)和斜杠(/)字符。这些限制可能会妨碍我们执行某些操作,但我们可以使用一些技巧来绕过这些限制。

使用ASCII码

我们可以使用ASCII码来绕过反斜杠和斜杠的限制。每个字符都有一个对应的ASCII码值,我们可以使用这些值来代替字符。

例如,要输入反斜杠字符(\),我们可以使用ASCII码值\(92)来代替。同样地,要输入斜杠字符(/),我们可以使用ASCII码值/(47)来代替。

以下是使用ASCII码绕过反斜杠和斜杠限制的示例:

使用Unicode编码

除了ASCII码,我们还可以使用Unicode编码来绕过反斜杠和斜杠的限制。Unicode编码是一种用于表示字符的标准,它为每个字符分配了一个唯一的数字值。

要输入反斜杠字符(\),我们可以使用Unicode编码\u005c来代替。同样地,要输入斜杠字符(/),我们可以使用Unicode编码\u002f来代替。

以下是使用Unicode编码绕过反斜杠和斜杠限制的示例:

通过使用ASCII码或Unicode编码,我们可以绕过反斜杠和斜杠的限制,从而执行我们需要的操作。

绕过管道限制

在某些情况下,您可能会遇到限制,阻止您在bash管道中使用某些字符或命令。然而,有一些方法可以绕过这些限制,仍然实现所需的结果。

一种方法是使用具有类似功能的替代字符或命令。例如,如果限制了"|"字符,您可以尝试使用"tee"命令代替。"tee"命令从标准输入读取,并同时将内容写入标准输出和文件,有效地模拟了"|"字符的行为。

另一种方法是使用命令替换。命令替换允许您执行一个命令,并将其输出作为另一个命令的一部分使用。当某些字符受限时,这非常有用。例如,您可以使用命令替换来实现类似的结果,而不是使用"|"字符。

要使用命令替换,将要执行的命令用反引号(`command`)括起来,或者使用美元符号和括号($(command))。命令的输出将被替换到命令行中。

通过使用这些技术,您可以绕过bash管道中对某些字符或命令的限制,并继续进行所需的操作。

通过十六进制编码绕过限制

Sometimes, when trying to execute certain commands or access restricted files, you may encounter restrictions imposed by the system. One way to bypass these restrictions is by using hex encoding.

有时候,在尝试执行特定命令或访问受限文件时,你可能会遇到系统强加的限制。绕过这些限制的一种方法是使用十六进制编码。

Hex encoding involves converting the characters of a command or file path into their hexadecimal representation. This can be done using the xxd command in Linux.

十六进制编码涉及将命令或文件路径的字符转换为十六进制表示。在Linux中,可以使用xxd命令来完成这个过程。

To bypass restrictions using hex encoding, follow these steps:

要通过十六进制编码绕过限制,请按照以下步骤进行操作:

  1. 确定受限制的命令或文件路径。

  2. 使用xxd命令将命令或文件路径的字符转换为十六进制表示。例如,要将命令ls转换为十六进制,可以运行以下命令:

    这将输出命令的十六进制表示,本例中为6c73

  3. 使用命令或文件路径的十六进制表示来绕过限制。例如,不要运行ls,而是运行:

    This will execute the command ls and bypass the restrictions.

    这将执行命令ls并绕过限制。

通过使用十六进制编码,你可以绕过系统强加的某些限制,执行命令或访问本来受限的文件。

绕过IP限制

有时在渗透测试期间,您可能会遇到某些IP地址被限制或阻止的情况。在这种情况下,您可以使用各种技术来绕过这些IP限制并访问目标系统。以下是一些有用的Linux命令,可以帮助您实现这一点:

1.IP 欺骗(IP Spoofing)

IP欺骗涉及修改网络数据包的源IP地址,使其看起来好像它们来自不同的IP地址。这可以使用hping3命令来完成。这里有一个例子:

<spoofed_ip>替换为要欺骗的IP地址,并将<target_ip>替换为目标系统的IP地址。

2.代理链(Proxychains)

Proxychains是一个允许您通过代理服务器运行任何程序的工具。这可以通过不同的IP地址路由流量来帮助您绕过IP限制。要使用Proxychains,您需要使用适当的代理服务器详细信息配置proxychains.conf文件。配置后,您可以使用像这样的Proxychains运行任何命令:

<command>替换为您要运行的命令

3.VPN

使用虚拟专用网络(VPN)也可以帮助您绕过IP限制。VPN在您的设备和远程服务器之间创建安全和加密的连接,有效地屏蔽您的IP地址。有各种VPN提供商可用,您可以在Linux系统上使用他们的客户端软件或手动配置VPN设置。

4.Tor

Tor是一个由志愿者运营的服务器网络,允许您匿名浏览互联网。通过通过多个Tor节点路由您的流量,您的IP地址被隐藏,因此很难跟踪您的活动。要使用Tor,您可以安装Tor浏览器或将系统配置为直接使用Tor网络。

这些只是您在渗透测试期间可以绕过IP限制的几种技术。需要注意的是,未经授权访问系统是非法的,您只能在获得适当授权的情况下出于合法目的执行这些操作。

基于时间的数据泄露

基于时间的数据泄露是黑客用来绕过限制并从受损系统中泄露数据的技术。该技术涉及使用延迟或定时机制以隐蔽的方式传输数据,使其难以检测。

在典型的场景中,黑客可能会使用命令注入漏洞在受损的系统上执行任意命令。黑客可以利用时间延迟对数据进行编码,并以看似无害的方式传输数据,而不是直接传输泄露的数据。

例如,黑客可以使用ping命令向远程服务器发送ICMP回声请求。通过操纵ICMP数据包的有效载荷,黑客可以对泄露的数据进行编码。ICMP请求之间的延迟可用于传输二进制数据,较长的延迟表示二进制1,较短的延迟表示二进制0。

为了检测和防止基于时间的数据泄露,必须实施适当的输入验证和清理,以防止命令注入漏洞。此外,网络监控和异常检测可以帮助识别可能表明数据泄露的ICMP流量的异常模式。

通过理解和意识到基于时间的数据泄露技术,系统管理员和安全专业人员可以更好地保护他们的系统免受此类攻击。

从环境变量中获取字符

在某些情况下,您可能会遇到阻止您执行某些命令或访问某些文件的限制。然而,您仍然可以通过利用环境变量中存储的值来绕过这些限制。

要从环境变量中提取字符,您可以使用echo命令以及用美元符号($)括起来的变量名。例如,如果您有一个名为SECRET的环境变量,其中包含值password123,您可以通过运行以下命令来检索字符:

该命令将输出password123,使您能够访问存储在SECRET环境变量中的字符。

DNS数据泄露

你可以使用burpcollabpingb等工具。

内置命令

如果你无法执行外部函数,只能访问有限的内置命令来获取RCE,那么有一些巧妙的技巧可以帮助你。通常你无法使用所有的内置命令,所以你应该了解所有的选项来尝试绕过限制。这个想法来自devploit。 首先,检查所有的shell内置命令**。**然后,这里有一些建议:

多语言命令注入

Polyglot command injection (多语言命令注入) 是一种利用不同语言解释器的漏洞来执行恶意命令的技术。这种攻击方法可以绕过基于 Bash 的限制,因为它利用了其他语言解释器的弱点。

在进行多语言命令注入时,攻击者会构造一个恶意输入,该输入既可以被 Bash 解释为有效的命令,又可以被其他语言解释器解释为有效的代码。这样,攻击者就可以在目标系统上执行任意命令,而不受 Bash 限制的影响。

为了成功执行多语言命令注入攻击,攻击者需要了解目标系统上可用的语言解释器,并构造一个能够被多个解释器解释的有效命令。这通常需要对目标系统进行详细的信息收集和分析。

为了防止多语言命令注入攻击,建议采取以下措施:

  • 及时更新和修补系统,以防止已知的语言解释器漏洞被利用。

  • 限制用户对系统的访问权限,特别是对敏感命令和文件的访问权限。

  • 对用户输入进行严格的验证和过滤,以防止恶意输入被解释为有效的命令。

  • 使用安全的编程实践,如避免使用用户输入直接拼接命令字符串。

通过采取这些措施,可以有效减少多语言命令注入攻击的风险,并提高系统的安全性。

绕过潜在的正则表达式限制

在进行渗透测试时,有时会遇到正则表达式的限制,这可能会阻碍我们的进一步操作。然而,我们可以使用一些技巧来绕过这些限制。

1. 使用字符类

正则表达式中的字符类可以帮助我们绕过某些限制。例如,如果我们想匹配一个数字,但是正则表达式限制了我们只能使用字母,我们可以使用字符类来绕过这个限制。例如,[0-9]可以匹配任何数字。

2. 使用转义字符

转义字符可以帮助我们绕过正则表达式的限制。例如,如果正则表达式限制了我们不能使用特殊字符,我们可以使用转义字符\来转义这些字符。例如,\.可以匹配一个点。

3. 使用反向引用

反向引用可以帮助我们绕过正则表达式的限制。如果正则表达式限制了我们不能使用某些特定的字符串,但是我们可以使用其他字符串,我们可以使用反向引用来引用这些字符串。例如,如果正则表达式限制了我们不能使用abc,但是我们可以使用def,我们可以使用反向引用\1来引用def

4. 使用非贪婪匹配

非贪婪匹配可以帮助我们绕过正则表达式的限制。正则表达式通常是贪婪匹配,即尽可能多地匹配字符。但是,如果我们想要匹配尽可能少的字符,我们可以使用非贪婪匹配。例如,.*?可以匹配尽可能少的任意字符。

5. 使用零宽断言

零宽断言可以帮助我们绕过正则表达式的限制。零宽断言是一种特殊的正则表达式语法,用于在匹配字符串时指定一些条件。例如,如果正则表达式限制了我们只能匹配一个特定的字符串,我们可以使用零宽断言来指定其他条件。例如,(?=.*[A-Z])可以匹配包含至少一个大写字母的字符串。

通过使用这些技巧,我们可以绕过正则表达式的限制,从而更好地进行渗透测试。

Bash混淆器

Bashfuscator是一个用于混淆Bash脚本的工具。它可以修改脚本的结构和语法,使其难以理解和分析。通过使用Bashfuscator,攻击者可以绕过Bash脚本的限制,隐藏恶意代码的真实意图。

使用Bashfuscator的步骤

  1. 安装Bashfuscator:首先,需要从Bashfuscator的官方网站下载并安装该工具。

  2. 选择要混淆的脚本:选择要混淆的Bash脚本文件。

  3. 运行Bashfuscator:使用以下命令运行Bashfuscator,并指定要混淆的脚本文件:

    其中,<input_script>是要混淆的脚本文件的路径,<output_script>是混淆后的脚本文件的路径。

  4. 查看混淆结果:Bashfuscator将生成一个混淆后的脚本文件。您可以查看该文件,以确保混淆成功。

  5. 测试混淆后的脚本:在安全环境中运行混淆后的脚本,以确保其功能正常。

注意事项

  • 在使用Bashfuscator混淆脚本之前,请确保您已经获得了合法的授权,并且仅在合法的渗透测试活动中使用该工具。

  • 混淆脚本可能会导致代码的可读性降低,因此在使用Bashfuscator之前,请确保您已经备份了原始脚本文件。

  • Bashfuscator只能提供一定程度的混淆,不能完全防止脚本被分析和理解。因此,在编写安全脚本时,请考虑其他安全措施和最佳实践。

结论

Bashfuscator是一个强大的工具,可以帮助攻击者绕过Bash脚本的限制,并隐藏恶意代码的真实意图。然而,使用该工具需要谨慎,并且仅限于合法的渗透测试活动中。

五个字符实现远程命令执行(RCE)

在某些情况下,我们可能会遇到受限制的环境,其中我们无法使用常规的命令执行技术。然而,我们仍然可以利用一些特殊的字符来绕过这些限制,并实现远程命令执行(RCE)。

以下是一个使用仅五个字符的方法来实现RCE的示例:

这个方法的原理是利用了${IFS}变量,它代表了Shell中的字段分隔符。我们使用${IFS%?}来删除${IFS}变量的最后一个字符,然后将其与bash命令组合在一起。这样,我们就可以在受限制的环境中执行bash命令,从而实现远程命令执行。

请注意,这种技术可能不适用于所有环境,因为某些环境可能会对${IFS}变量进行限制或过滤。在实际应用中,我们应该根据具体情况进行调整和测试。

这是一个简单而有效的方法,可以帮助我们在受限制的环境中实现远程命令执行。但是,我们应该始终遵循道德准则,并仅在合法授权的情况下使用这些技术。

4个字符的RCE

在某些情况下,我们可能会遇到只允许使用非交互式shell的限制。这种情况下,我们需要找到一种方法来绕过这个限制并执行我们的命令。下面是一种使用只有4个字符的远程代码执行(RCE)技巧。

使用反引号

在Bash中,我们可以使用反引号(`)来执行命令并将其结果返回给我们。这个特性可以帮助我们绕过限制并执行我们的命令。

例如,如果我们想执行ls命令,我们可以使用以下方式:

这将执行ls命令并返回结果。

示例

假设我们只能使用非交互式shell,并且我们想执行id命令来获取当前用户的身份信息。我们可以使用以下命令:

这将执行id命令并返回当前用户的身份信息。

请注意,这种技巧只适用于允许使用反引号的情况。在某些情况下,这种技巧可能无法使用。

只读/Noexec/Distroless绕过

最后更新于

这有帮助吗?