
程序员征服安全:分享与学习系列-操作系统命令注入
每当应用程序允许用户在 shell 中输入内容,但不采取任何操作来验证输入字符串是否有效时,就会发生操作系统命令注入攻击。这使攻击者能够将命令直接丢入托管应用程序的操作系统,以及为受感染应用程序设置的任何权限级别。
操作系统命令注入攻击可以由入门级和技能较低的黑客执行,这使其成为安全团队最常见的漏洞之一。值得庆幸的是,有很多非常有效的方法可以防止他们取得成功。在本集中,我们将学习:
它们是如何工作的
为什么它们如此危险
如何设置防御措施来阻止他们。
攻击者如何使用操作系统命令注入?
为了发起操作系统命令注入攻击,攻击者必须做的第一件事是在应用程序中找到用户输入。用户填写的表单可能是很好的起点。最聪明的攻击者还可以使用诸如Cookie甚至HTTP标头之类的东西作为其启动点,几乎所有应用程序或网站都会使用这种东西。
他们需要做的第二件事是弄清楚哪个操作系统托管应用程序。鉴于只有少数几种选择,在这个阶段反复试验可以很好地发挥作用。大多数应用程序服务器要么基于Windows(Windows的风格通常并不重要),要么是某种类型的Linux机箱,要么可能是Unix的。
此时,黑客修改了输入,将操作系统命令注入看似无害的输入中。这可能会欺骗托管操作系统以应用程序的任何权限级别执行意外命令。
例如,应用程序中的有效用户可以使用以下命令来查看文件的内容,在本例中为每月一次的董事会会议记录。
exec(“cat” + 文件名)
在我们的示例中,这将执行以下命令并将会议记录返回给用户。
$。/cat MeetingNotes.txt
执行委员会有三名成员出席了7月的会议。讨论了新的预算项目,但没有采取任何行动或投票。
当攻击者在输入末尾添加其他命令(例如 Linux 中用于列出目录内容的命令)时,就会发生这种情况。在这种情况下,显示会议记录的原始命令仍然有效。但是还会向恶意用户显示目录中的所有其他内容,以及他们可以在后续操作系统命令注入攻击中使用哪些其他命令。他们输入:
$。/cat MeetingNotes.txt && ls
改为改用这个:
执行委员会有三名成员出席了7月的会议。讨论了新的预算项目,但没有采取任何行动或投票。
MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
格式化.c
misnull.c
notefault.c
trunc.c
writewhatwhere.c
如你所见,在这种情况下,黑客不仅看到了目录的内容,还向他们提供了一个包含其他命令的菜单,供他们使用 “他们现在知道可以在主机操作系统上执行的命令”。
为什么操作系统命令注入攻击如此危险?
允许用户绕过目标应用程序的用途并使用它来运行操作系统命令是极其危险的。攻击者可以轻松执行破坏性操作,例如窃取机密数据或格式化整个服务器驱动器。攻击者可用的选项仅受操作系统中允许的命令及其使用这些命令的创造力的限制。
操作系统命令在与应用程序相同的权限级别上运行。应用程序以管理权限运行意味着入侵这些应用程序的黑客可以运行所有操作系统命令。
操作系统命令注入的攻击模式是众所周知和有据可查的。易受攻击的应用程序既容易受到脚本小子的攻击,也容易受到专业黑客的攻击。技能很少的攻击者可以尝试将操作系统命令剪切并粘贴到应用程序中,以查看会发生什么。
在操作系统命令注入方面获得安全保障
有几种很好的技术可以阻止操作系统命令注入。第一步是使用完成其功能所需的最少权限运行应用程序。这并不能阻止攻击,但是,如果确实发生了漏洞,则损失会降至最低。
大多数编程语言和框架为常见的操作系统方法提供 API 调用,例如列出目录内容、在硬盘上创建或读取文件。消除环境中操作系统命令注入的一种完美方法是让所有应用程序使用这些 API 调用,而不是直接使用操作系统命令。
如果不可能这样做,请在操作系统命令中使用用户输入之前对其进行验证。白名单可用于确保只能使用一小部分可信值。从技术上讲,使用黑名单也可以做到这一点,但是允许的命令可能要少得多,因此列入白名单几乎总是更容易的。不要忘记在白名单中加入有效的 POST 和 GET 参数,以及经常被忽视的用户输入向量,如 cookie。
最后,如果没有可用的编程 API 且无法使用白名单,请在操作系统命令中使用用户输入中的任何特殊字符之前,使用消毒库对其进行转义。
有关操作系统命令注入攻击的更多信息
要进一步阅读,你可以看看 OWASP 写在上面 操作系统命令注入攻击。你还可以使用以下方法来测试你新获得的防御知识 免费演示 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客。


操作系统命令注入攻击可以由入门级和技能较低的黑客执行,这使其成为安全团队最常见的漏洞之一。值得庆幸的是,有很多非常有效的方法可以防止他们取得成功。
Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Secure Code Warrior kann Ihrem Unternehmen dabei helfen, Code während des gesamten Softwareentwicklungszyklus zu schützen und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, Chief Information Security Officer oder in einem anderen sicherheitsrelevanten Bereich tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu minimieren.
Demo buchenJaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.


每当应用程序允许用户在 shell 中输入内容,但不采取任何操作来验证输入字符串是否有效时,就会发生操作系统命令注入攻击。这使攻击者能够将命令直接丢入托管应用程序的操作系统,以及为受感染应用程序设置的任何权限级别。
操作系统命令注入攻击可以由入门级和技能较低的黑客执行,这使其成为安全团队最常见的漏洞之一。值得庆幸的是,有很多非常有效的方法可以防止他们取得成功。在本集中,我们将学习:
它们是如何工作的
为什么它们如此危险
如何设置防御措施来阻止他们。
攻击者如何使用操作系统命令注入?
为了发起操作系统命令注入攻击,攻击者必须做的第一件事是在应用程序中找到用户输入。用户填写的表单可能是很好的起点。最聪明的攻击者还可以使用诸如Cookie甚至HTTP标头之类的东西作为其启动点,几乎所有应用程序或网站都会使用这种东西。
他们需要做的第二件事是弄清楚哪个操作系统托管应用程序。鉴于只有少数几种选择,在这个阶段反复试验可以很好地发挥作用。大多数应用程序服务器要么基于Windows(Windows的风格通常并不重要),要么是某种类型的Linux机箱,要么可能是Unix的。
此时,黑客修改了输入,将操作系统命令注入看似无害的输入中。这可能会欺骗托管操作系统以应用程序的任何权限级别执行意外命令。
例如,应用程序中的有效用户可以使用以下命令来查看文件的内容,在本例中为每月一次的董事会会议记录。
exec(“cat” + 文件名)
在我们的示例中,这将执行以下命令并将会议记录返回给用户。
$。/cat MeetingNotes.txt
执行委员会有三名成员出席了7月的会议。讨论了新的预算项目,但没有采取任何行动或投票。
当攻击者在输入末尾添加其他命令(例如 Linux 中用于列出目录内容的命令)时,就会发生这种情况。在这种情况下,显示会议记录的原始命令仍然有效。但是还会向恶意用户显示目录中的所有其他内容,以及他们可以在后续操作系统命令注入攻击中使用哪些其他命令。他们输入:
$。/cat MeetingNotes.txt && ls
改为改用这个:
执行委员会有三名成员出席了7月的会议。讨论了新的预算项目,但没有采取任何行动或投票。
MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
格式化.c
misnull.c
notefault.c
trunc.c
writewhatwhere.c
如你所见,在这种情况下,黑客不仅看到了目录的内容,还向他们提供了一个包含其他命令的菜单,供他们使用 “他们现在知道可以在主机操作系统上执行的命令”。
为什么操作系统命令注入攻击如此危险?
允许用户绕过目标应用程序的用途并使用它来运行操作系统命令是极其危险的。攻击者可以轻松执行破坏性操作,例如窃取机密数据或格式化整个服务器驱动器。攻击者可用的选项仅受操作系统中允许的命令及其使用这些命令的创造力的限制。
操作系统命令在与应用程序相同的权限级别上运行。应用程序以管理权限运行意味着入侵这些应用程序的黑客可以运行所有操作系统命令。
操作系统命令注入的攻击模式是众所周知和有据可查的。易受攻击的应用程序既容易受到脚本小子的攻击,也容易受到专业黑客的攻击。技能很少的攻击者可以尝试将操作系统命令剪切并粘贴到应用程序中,以查看会发生什么。
在操作系统命令注入方面获得安全保障
有几种很好的技术可以阻止操作系统命令注入。第一步是使用完成其功能所需的最少权限运行应用程序。这并不能阻止攻击,但是,如果确实发生了漏洞,则损失会降至最低。
大多数编程语言和框架为常见的操作系统方法提供 API 调用,例如列出目录内容、在硬盘上创建或读取文件。消除环境中操作系统命令注入的一种完美方法是让所有应用程序使用这些 API 调用,而不是直接使用操作系统命令。
如果不可能这样做,请在操作系统命令中使用用户输入之前对其进行验证。白名单可用于确保只能使用一小部分可信值。从技术上讲,使用黑名单也可以做到这一点,但是允许的命令可能要少得多,因此列入白名单几乎总是更容易的。不要忘记在白名单中加入有效的 POST 和 GET 参数,以及经常被忽视的用户输入向量,如 cookie。
最后,如果没有可用的编程 API 且无法使用白名单,请在操作系统命令中使用用户输入中的任何特殊字符之前,使用消毒库对其进行转义。
有关操作系统命令注入攻击的更多信息
要进一步阅读,你可以看看 OWASP 写在上面 操作系统命令注入攻击。你还可以使用以下方法来测试你新获得的防御知识 免费演示 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客。

每当应用程序允许用户在 shell 中输入内容,但不采取任何操作来验证输入字符串是否有效时,就会发生操作系统命令注入攻击。这使攻击者能够将命令直接丢入托管应用程序的操作系统,以及为受感染应用程序设置的任何权限级别。
操作系统命令注入攻击可以由入门级和技能较低的黑客执行,这使其成为安全团队最常见的漏洞之一。值得庆幸的是,有很多非常有效的方法可以防止他们取得成功。在本集中,我们将学习:
它们是如何工作的
为什么它们如此危险
如何设置防御措施来阻止他们。
攻击者如何使用操作系统命令注入?
为了发起操作系统命令注入攻击,攻击者必须做的第一件事是在应用程序中找到用户输入。用户填写的表单可能是很好的起点。最聪明的攻击者还可以使用诸如Cookie甚至HTTP标头之类的东西作为其启动点,几乎所有应用程序或网站都会使用这种东西。
他们需要做的第二件事是弄清楚哪个操作系统托管应用程序。鉴于只有少数几种选择,在这个阶段反复试验可以很好地发挥作用。大多数应用程序服务器要么基于Windows(Windows的风格通常并不重要),要么是某种类型的Linux机箱,要么可能是Unix的。
此时,黑客修改了输入,将操作系统命令注入看似无害的输入中。这可能会欺骗托管操作系统以应用程序的任何权限级别执行意外命令。
例如,应用程序中的有效用户可以使用以下命令来查看文件的内容,在本例中为每月一次的董事会会议记录。
exec(“cat” + 文件名)
在我们的示例中,这将执行以下命令并将会议记录返回给用户。
$。/cat MeetingNotes.txt
执行委员会有三名成员出席了7月的会议。讨论了新的预算项目,但没有采取任何行动或投票。
当攻击者在输入末尾添加其他命令(例如 Linux 中用于列出目录内容的命令)时,就会发生这种情况。在这种情况下,显示会议记录的原始命令仍然有效。但是还会向恶意用户显示目录中的所有其他内容,以及他们可以在后续操作系统命令注入攻击中使用哪些其他命令。他们输入:
$。/cat MeetingNotes.txt && ls
改为改用这个:
执行委员会有三名成员出席了7月的会议。讨论了新的预算项目,但没有采取任何行动或投票。
MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
格式化.c
misnull.c
notefault.c
trunc.c
writewhatwhere.c
如你所见,在这种情况下,黑客不仅看到了目录的内容,还向他们提供了一个包含其他命令的菜单,供他们使用 “他们现在知道可以在主机操作系统上执行的命令”。
为什么操作系统命令注入攻击如此危险?
允许用户绕过目标应用程序的用途并使用它来运行操作系统命令是极其危险的。攻击者可以轻松执行破坏性操作,例如窃取机密数据或格式化整个服务器驱动器。攻击者可用的选项仅受操作系统中允许的命令及其使用这些命令的创造力的限制。
操作系统命令在与应用程序相同的权限级别上运行。应用程序以管理权限运行意味着入侵这些应用程序的黑客可以运行所有操作系统命令。
操作系统命令注入的攻击模式是众所周知和有据可查的。易受攻击的应用程序既容易受到脚本小子的攻击,也容易受到专业黑客的攻击。技能很少的攻击者可以尝试将操作系统命令剪切并粘贴到应用程序中,以查看会发生什么。
在操作系统命令注入方面获得安全保障
有几种很好的技术可以阻止操作系统命令注入。第一步是使用完成其功能所需的最少权限运行应用程序。这并不能阻止攻击,但是,如果确实发生了漏洞,则损失会降至最低。
大多数编程语言和框架为常见的操作系统方法提供 API 调用,例如列出目录内容、在硬盘上创建或读取文件。消除环境中操作系统命令注入的一种完美方法是让所有应用程序使用这些 API 调用,而不是直接使用操作系统命令。
如果不可能这样做,请在操作系统命令中使用用户输入之前对其进行验证。白名单可用于确保只能使用一小部分可信值。从技术上讲,使用黑名单也可以做到这一点,但是允许的命令可能要少得多,因此列入白名单几乎总是更容易的。不要忘记在白名单中加入有效的 POST 和 GET 参数,以及经常被忽视的用户输入向量,如 cookie。
最后,如果没有可用的编程 API 且无法使用白名单,请在操作系统命令中使用用户输入中的任何特殊字符之前,使用消毒库对其进行转义。
有关操作系统命令注入攻击的更多信息
要进一步阅读,你可以看看 OWASP 写在上面 操作系统命令注入攻击。你还可以使用以下方法来测试你新获得的防御知识 免费演示 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客。

Klicken Sie auf den folgenden Link und laden Sie die PDF-Datei dieser Ressource herunter.
Secure Code Warrior kann Ihrem Unternehmen dabei helfen, Code während des gesamten Softwareentwicklungszyklus zu schützen und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, Chief Information Security Officer oder in einem anderen sicherheitsrelevanten Bereich tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu minimieren.
Bericht anzeigenDemo buchenJaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.
每当应用程序允许用户在 shell 中输入内容,但不采取任何操作来验证输入字符串是否有效时,就会发生操作系统命令注入攻击。这使攻击者能够将命令直接丢入托管应用程序的操作系统,以及为受感染应用程序设置的任何权限级别。
操作系统命令注入攻击可以由入门级和技能较低的黑客执行,这使其成为安全团队最常见的漏洞之一。值得庆幸的是,有很多非常有效的方法可以防止他们取得成功。在本集中,我们将学习:
它们是如何工作的
为什么它们如此危险
如何设置防御措施来阻止他们。
攻击者如何使用操作系统命令注入?
为了发起操作系统命令注入攻击,攻击者必须做的第一件事是在应用程序中找到用户输入。用户填写的表单可能是很好的起点。最聪明的攻击者还可以使用诸如Cookie甚至HTTP标头之类的东西作为其启动点,几乎所有应用程序或网站都会使用这种东西。
他们需要做的第二件事是弄清楚哪个操作系统托管应用程序。鉴于只有少数几种选择,在这个阶段反复试验可以很好地发挥作用。大多数应用程序服务器要么基于Windows(Windows的风格通常并不重要),要么是某种类型的Linux机箱,要么可能是Unix的。
此时,黑客修改了输入,将操作系统命令注入看似无害的输入中。这可能会欺骗托管操作系统以应用程序的任何权限级别执行意外命令。
例如,应用程序中的有效用户可以使用以下命令来查看文件的内容,在本例中为每月一次的董事会会议记录。
exec(“cat” + 文件名)
在我们的示例中,这将执行以下命令并将会议记录返回给用户。
$。/cat MeetingNotes.txt
执行委员会有三名成员出席了7月的会议。讨论了新的预算项目,但没有采取任何行动或投票。
当攻击者在输入末尾添加其他命令(例如 Linux 中用于列出目录内容的命令)时,就会发生这种情况。在这种情况下,显示会议记录的原始命令仍然有效。但是还会向恶意用户显示目录中的所有其他内容,以及他们可以在后续操作系统命令注入攻击中使用哪些其他命令。他们输入:
$。/cat MeetingNotes.txt && ls
改为改用这个:
执行委员会有三名成员出席了7月的会议。讨论了新的预算项目,但没有采取任何行动或投票。
MeetingNotes.txt
JuneMeetingNotes.txt
MayMeetingNotes.txt
格式化.c
misnull.c
notefault.c
trunc.c
writewhatwhere.c
如你所见,在这种情况下,黑客不仅看到了目录的内容,还向他们提供了一个包含其他命令的菜单,供他们使用 “他们现在知道可以在主机操作系统上执行的命令”。
为什么操作系统命令注入攻击如此危险?
允许用户绕过目标应用程序的用途并使用它来运行操作系统命令是极其危险的。攻击者可以轻松执行破坏性操作,例如窃取机密数据或格式化整个服务器驱动器。攻击者可用的选项仅受操作系统中允许的命令及其使用这些命令的创造力的限制。
操作系统命令在与应用程序相同的权限级别上运行。应用程序以管理权限运行意味着入侵这些应用程序的黑客可以运行所有操作系统命令。
操作系统命令注入的攻击模式是众所周知和有据可查的。易受攻击的应用程序既容易受到脚本小子的攻击,也容易受到专业黑客的攻击。技能很少的攻击者可以尝试将操作系统命令剪切并粘贴到应用程序中,以查看会发生什么。
在操作系统命令注入方面获得安全保障
有几种很好的技术可以阻止操作系统命令注入。第一步是使用完成其功能所需的最少权限运行应用程序。这并不能阻止攻击,但是,如果确实发生了漏洞,则损失会降至最低。
大多数编程语言和框架为常见的操作系统方法提供 API 调用,例如列出目录内容、在硬盘上创建或读取文件。消除环境中操作系统命令注入的一种完美方法是让所有应用程序使用这些 API 调用,而不是直接使用操作系统命令。
如果不可能这样做,请在操作系统命令中使用用户输入之前对其进行验证。白名单可用于确保只能使用一小部分可信值。从技术上讲,使用黑名单也可以做到这一点,但是允许的命令可能要少得多,因此列入白名单几乎总是更容易的。不要忘记在白名单中加入有效的 POST 和 GET 参数,以及经常被忽视的用户输入向量,如 cookie。
最后,如果没有可用的编程 API 且无法使用白名单,请在操作系统命令中使用用户输入中的任何特殊字符之前,使用消毒库对其进行转义。
有关操作系统命令注入攻击的更多信息
要进一步阅读,你可以看看 OWASP 写在上面 操作系统命令注入攻击。你还可以使用以下方法来测试你新获得的防御知识 免费演示 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客。
Verzeichnis
Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Secure Code Warrior kann Ihrem Unternehmen dabei helfen, Code während des gesamten Softwareentwicklungszyklus zu schützen und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, Chief Information Security Officer oder in einem anderen sicherheitsrelevanten Bereich tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu minimieren.
Demo buchen下载Ressourcen, die Ihnen den Einstieg erleichtern
Themen und Inhalte der Sicherheitsschulung
Unsere branchenführenden Inhalte werden ständig weiterentwickelt, um sich an die sich wandelnde Softwareentwicklungslandschaft anzupassen und gleichzeitig Ihre Rolle zu berücksichtigen. Die Themen reichen von KI bis hin zu XQuery-Injection und sind für verschiedene Positionen geeignet, von Architekten und Ingenieuren bis hin zu Produktmanagern und QA-Mitarbeitern. Verschaffen Sie sich einen ersten Überblick nach Themen und Rollen und erfahren Sie, was unser Inhaltsverzeichnis zu bieten hat.
Die Kamer van Koophandel setzt Maßstäbe für entwicklergesteuerte Sicherheit in großem Maßstab
Die Kamer van Koophandel berichtet, wie sie sicheres Codieren durch rollenbasierte Zertifizierungen, Trust Score-Benchmarking und eine Kultur der gemeinsamen Verantwortung für Sicherheit in die tägliche Entwicklungsarbeit integriert hat.
Bedrohungsmodellierung mit KI: So wird jeder Entwickler zum Bedrohungsmodellierer
Sie werden besser gerüstet sein, um Entwicklern dabei zu helfen, Ideen und Techniken zur Bedrohungsmodellierung mit den KI-Tools zu kombinieren, die sie bereits verwenden, um die Sicherheit zu erhöhen, die Zusammenarbeit zu verbessern und von Anfang an widerstandsfähigere Software zu entwickeln.
Ressourcen, die Ihnen den Einstieg erleichtern
Cybermon ist zurück: Die KI-Mission zum Besiegen des Bosses ist jetzt auf Abruf verfügbar.
Cybermon 2025: Der Kampf gegen den Boss hat nun in SCW ganzjährig begonnen. Der Kampf um die Sicherheit von KI/LLM auf Stammesebene, die Entwicklung von Sicherheits-KI wird durch groß angelegte Modelle verstärkt.
Auslegung des Gesetzes zur Netzresilienz: Was bedeutet es, durch die Entwicklung von Design-Software Sicherheit zu erreichen?
Verstehen Sie die Anforderungen des EU-Gesetzes zur Netzresilienz (CRA), für wen es gilt und wie sich Ingenieurteams durch Designpraktiken, Schwachstellenprävention und Kompetenzaufbau für Entwickler darauf vorbereiten können.
Treibende Faktoren 1: Klare und messbare Erfolgskriterien
Enabler 1 ist der Auftakt zu unserer 10-teiligen Reihe über Erfolgsfaktoren. Er zeigt, wie sichere Codierung mit Geschäftsergebnissen wie Risikominderung und schnellerer Reifung langfristiger Pläne in Verbindung gebracht werden kann.




%20(1).avif)
.avif)
