这期内容当中小编将会给大家带来有关rConfig v3.9.2远程命令执行的漏洞分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 rConfig是一款开源的网络设备配置管理实用工具,在rConfig的帮助下,网络工程师可以快速、频繁地管理网络设备的快照。在近期免费云主机域名的一次研究过程中,我在rConfig的两个代码文件中分别找到了两个远程代码执行漏洞。第一个文件为ajaxServerSettingsChk.php,其中的rootUname参数在源文件的第2行中定义,随后会在第13行传递给exec函数,而攻击者可以通过rootUname参数发送特制的GET请求,并以此来触发未授权的远程代码执行。攻击者只需要将恶意命令注入到这个参数中,并在目标服务器上执行,即可完成漏洞利用。第二个RCE漏洞位于search.crud.php文件中,攻击者可以发送特制的GET请求来触发该漏洞。这个请求需要包含两个参数,其中的searchTerm参数可以包含任意值,但该参数要有,否则第63行的exec函数将无法正常执行。在之前的RCE漏洞挖掘过程中,我曾开发过一个简单的Python脚本来寻找目标可能存在的所有不安全函数,这一次我同样打算使用这个脚本:【RCEScanner】。运行该脚本后,我们可以查看到脚本的输出结果。在检查文件的过程中,我发现了一个名为ajaxServerSettingsChk.php的文件,文件路径为install/lib/ajaxHandlers/ajaxServerSettingsChk.php,其部分代码段如下:在第二行代码中,脚本会将GET请求中的rootUname参数值保存到$rootUname中。在第十二行,代码将$rootUname与一些其他的字符串拼接在一起,然后保存到了$rootTestCmd1中,最后传递给第十三行的exec函数。剩下的代码同理以此类推。因此,我们只需要注入需要执行的命令,然后在第十三行跳出原代码的执行流程,并执行我们的代码即可。为了实现这个目标,我们需要使用下列Payload:测试Payload时,我修改了代码,并显示第十三行exec()函数的运行结果,然后编码并发送Payload:如上图所示,我们可以通过rootUname参数发送经过编码的“; id #”命令。为了拿到Shell,我们可以使用下列Payload:注意:我之所以使用这个payload,是为了避免使用nc,因为这个程序在CentOS 7.7 mini上默认是没有安装的。编码payload并使用Burp发送后,结果如下:没错,我们成功拿到了Shell!为了自动化实现整个过程,我编写了一个Python脚本:运行这个脚本之后,我们可以看到如下所示的结果:我们再次拿到了shell!在RCEScanner的扫描结果列表中,还有一个名叫“lib/crud/search.crud.php”的文件吸引了我的注意,改文件中包含下列代码:首先,我们需要发送包含searchTerm参数的GET请求来绕过第25行的if语句,这样就可以进入代码执行体了。接下来,我们需要发送包含catCommand参数的另一个GET请求,并注入我们的Payload。这个参数会在第61行与其他的字符串拼接起来,在存储到$command中之后,便会在第63行传递给exec()执行。在这里,我打算用一个sleep()来测试该逻辑是否可行,这个Payload会让代码挂起5秒,分析之后,我发现这里可以用多个Payload来绕过字符串转义并执行我们的代码:使用Burp发送请求后,得到的结果如下:没错,我们的sleep逻辑生效了,也就是注入的命令成功执行了。我们的目的是拿到Shell,这里我使用了一段PHP代码,然后跟其他字符串进行了拼接:为了自动化实现整个漏洞利用过程,我编写了一个简单的Python脚本:运行该漏洞利用脚本之后,我们得到了下图所示的结果:没错,我们又拿到了Shell!随后,我们顺着Github找到了该系统得源码,然后找到了最新的漏洞修复补丁,其中更新的部分代码如下:上述就是小编为大家分享的rConfig v3.9.2远程命令执行的漏洞分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注云编程开发博客行业资讯频道。
在使用add-type添加类的时候我们无法判断具体的错误原因可使用以下方法:免费云主机域名try {Add-Type -Path “C:lync2013Microsoft.Lync.Model.dll”}catch [Reflection.Reflection…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。