抚松做网站,h5网站页面设计,wordpress导航文件,coding 部署wordpress一.远程命令执行漏洞
1.命令执行 命令执行是指计算机程序接受用户输入的命令#xff0c;并按照命令的要求执行相应的操作。命令可以执行各种操作#xff0c;例如读取文件、创建文件、修改文件、运行程序、删除文件等。 命令执行通常是通过一个命令行界面或终端窗口进行的。在…一.远程命令执行漏洞
1.命令执行 命令执行是指计算机程序接受用户输入的命令并按照命令的要求执行相应的操作。命令可以执行各种操作例如读取文件、创建文件、修改文件、运行程序、删除文件等。 命令执行通常是通过一个命令行界面或终端窗口进行的。在命令行界面中用户可以输入各种命令来操作计算机系统而系统会相应地执行这些命令。命令行界面通常用于系统管理员、程序员或高级用户等需要更精细控制计算机系统的人员使用。 2.命令执行漏洞 远程命令执行漏洞remote command execution简称RCE。一般出现这种漏洞是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上一般会给用户提供一个ping操作的web界面用户从web界面输入目标IP提交后后台会对该IP地址进行一次ping测试并返回测试结果。 如果设计者在完成该功能时没有做严格的安全控制则可能会导致攻击者通过该接口提交恶意命令从而导致漏洞的发生。 3.漏洞危害
系统控制方面攻击者可完全控制服务器如安装恶意软件修改系统配置如防火墙规则操纵系统服务如停用安全监控服务。数据安全方面窃取服务器数据如用户信息和商业机密篡改或删除数据如修改价格或删除业务记录。网络攻击传播方面发动 DDoS 攻击进行横向渗透以被入侵服务器为跳板攻击其他设备。
4.命令执行相关函数 PHPsystem()、exec()、shell_exec()、passthru()、penti_exec()、popen()、proc_pen()等此外还有反引号命令执行这种方式实际上是调用 shell_exec()函数来执行。 ASP.NETSystem.Diagnostics.Start.Process、System.Diagnostics.Start.ProcessStartInfo等 Javajava.lang.runtime.Runtime.getRuntime、java.lang.runtime.Runtime.exec等 Pythonsystem()、popen()、subprocess.call PHP命令执行相关函数 exec 格式exec(string $command,array $output, int $return_var) $command要执行的命令这是一个字符串包含了你想要执行的系统命令。$output可选一个引用参数用于存储命令的输出结果。如果命令输出多行每一行将作为数组的一个元素存储在此数组中。$return_var可选另一个引用参数用于存储命令的返回状态码。通常返回状态码为 0 表示命令执行成功非零值表示出现错误。 作用执行一个外部程序并返回结果通常执行成功返回0。 ?php echo exec(whoami);?PSexec执行命令时不会输出全部结果而是返回结果的最后一行。 system 格式system(string $command,int $return_var) $command要执行的命令是一个字符串包含你想要运行的系统命令。$return_var可选一个引用参数用于存储命令的返回状态码。和 exec 函数一样通常返回状态码为 0 表示命令执行成功非零值表示出现错误。 作用用于执行外部程序的一个函数。 ?php system(whoami);?PSsystem和exec的区别在于system在执行系统外部命令时直接将命令的输出打印到标准输出通常是网页或命令行终端而不会像 exec 函数那样将输出存储在一个数组中。 shell_exec 格式shell_exec(string $command) $command要执行的命令是一个字符串包含你想要运行的系统命令。 作用用于执行外部 shell 命令的一个函数。 ?php
# 将 ipconfig 命令的执行结果存储在变量 $output 中。
$output shell_exec(ipconfig);
# 使用 echo 函数将存储在 $output 中的结果输出到网页上。
# pre 标签格式化输出文本使输出更具可读性。
echo pre$output/pre;
?反引号 作用效果等同 shell_exec ?php echo ipconfig;?拓展知识 除了以上的函数可以造成命令执行之外php中还有许多其它的函数可以造成命令执行漏洞比如passthru、popen()等。 命令执行常见绕过方式 cmd1;cmd2cmd1执行完再执行cmd2windows下无法用;cmd1|cmd2不管cmd1命令成功与否都会去执行cmd2命令cmd1||cmd2首先执行cmd1命令再执行cmd2命令如果cmd1命令执行成功就不会执行cmd2命令相反如果cmd1命令执行不成功就会执行cmd2命令。cmd1cmd2也叫后台任务符代表首先执行命令cmd1把cmd1放到后台执行再执行命令cmd2如果cmd1执行失败还是会继续执行命令cmd2。也就是说命令cmd2的执行不会受到命令cmd1的干扰。cmd1cmd2首先执行命令cmd1再执行命令cmd2但是前提条件是命令cmd1执行正确才会执行命令cmd2在cmd1执行失败的情况下不会执行cmd2命令。所以又被称为短路运算符。 当cat被过滤时可以使用以下命令代替 cat ca\t more一页一页的显示档案内容 less与 more 类似 head查看头几行 tac从最后一行开始显示可以看出 tac 是 cat 的反向显示 tail查看尾几行 nl显示的时候顺便输出行号 odod指令会读取所给予的文件的内容并将其内容以八进制字码呈现出来 vi一种编辑器这个也可以查看 vim一种编辑器这个也可以查看 sort将文本文件内容加以 ASCII 码的次序排列 uniq用于检查及删除文本文件中重复出现的行列 file -f报错出具体内容 paste把每个文件以列对列的方式一列列地加以合并 反引号base64编码echo Y2F0IC9ldGMvcGFzc3dk |base64 -d 空格被过滤 、、$IFS$9、${IFS}、$IFS、$IFS[*]、$IFS[]等 /etc/passwd被过滤 /e?c/?asswd /e*c/*asswd /??c/?asswd /??c/?assw?
二.组件、开发框架中的命令执行漏洞
由于新的漏洞不断被发现和修复所以这些组件、开发框架是否存在漏洞随着时间的推移而变化。以下是一些已知的开发框架和库它们在过去的一段时间内曾经存在过命令执行漏洞
Apache StrutsApache Struts是一个用于构建企业级Java Web应用程序的框架它在过去曾经多次发现命令执行漏洞例如2017年发现的漏洞CVE-2017-5638。Ruby on RailsRuby on Rails是一个使用Ruby语言编写的Web应用程序框架它在过去也曾经发现过多个命令执行漏洞例如2013年发现的漏洞CVE-2013-0156。DjangoDjango是一个使用Python语言编写的Web应用程序框架它在过去也曾经发现过多个命令执行漏洞例如2015年发现的漏洞CVE-2015-5143。LaravelLaravel是一个使用PHP语言编写的Web应用程序框架它在过去也曾经发现过多个命令执行漏洞例如2021年发现的漏洞CVE-2021-3129。jQueryjQuery是一个广泛使用的JavaScript库它在过去也曾经发现过多个命令执行漏洞例如2015年发现的漏洞CVE-2015-9251。
这里只是列举了一些已知的开发框架和库在实际情况中任何开发框架和库都可能存在安全漏洞因此在开发应用程序时需要不断关注它们的安全更新和漏洞修复。
1.Apache Shiro远程命令执行漏洞
ShiroApache Shiro是一个Java安全框架提供了身份验证、授权、加密、会话管理等安全功能。它可以集成到任何Java应用程序中包括Web、企业、桌面和移动应用程序。Shiro-550Shiro-550是Apache Shiro项目的一个问题编号指的是一个已经被修复的漏洞。该漏洞存在于Shiro的RememberMe功能中攻击者可以使用Cookie中的信息重新创建会话并获取未经授权的访问权限。该漏洞的CVE编号为CVE-2016-4437。
A.漏洞原理 Apache Shiro 框架提供了记住密码的功能 RememberMe 用户登录成功后用户信息会经过加密编码后存储在 cookie 中。在 Cookie 读取过程中有用 AES 对 Cookie 值解密的过程对于 AES 这类对称加密算法一旦 秘钥泄露 加密便形同虚设。若秘钥可控同时 Cookie 值是由攻击者构造的恶意Payload 就可以将流程走通触发危险的 Java 反序列化从而导致远程命令执行漏洞。 所以此漏洞的关键点就是密钥的泄露一些网站使用了默认的密钥就存在泄露的风险。 B.漏洞复现 环境搭建 新建docker-compose.yml文件将以下内容复制进去 version: 2
services:web:image: vulhub/shiro:1.2.4ports:- 8080:8080然后执行docker-compose up -d 启动后访问http://your-ip:port/ 漏洞复现 组件发现 首先需要知道目标是否使用该组件在访问及登录时抓包如果响应头 set-cookie 中显示 rememberMedeleteMe 说明使用了 Shiro 组件。 除此之外还可以自己在请求包中的Cookie处添加 rememberMe1 然后查看响应头是否有 rememberMedeleteMe 还可以使用一些指纹探测工具 -- Finger指纹探测工具 以及Burp Suite插件进行被动扫描。 漏洞利用 在获取到目标网站使用了Shiro组件之后可以再使用其他的工具爆破密钥例如LiqunKit综合漏洞利用工具运行该工具需要有java环境。