✍内容
部署
ruoyi-wechat-mp下载
1
| git clone https://gitee.com/zhangjqi2015/ruoyi-wechat-mp.git
|
ruoyi官网文档
https://doc.ruoyi.vip/ruoyi/document/hjbs.html#%E9%83%A8%E7%BD%B2%E7%B3%BB%E7%BB%9F
安装参考文档
https://blog.csdn.net/m0_67376124/article/details/127617498
修改数据库的连接配置
打开ruoyi-wechat-mp/ruoyi-admin/src/main/resources/application-druid.yml

1 2 3 4 5 6 7
| j# 主库数据源 master: url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: root
其中ry是我的数据库名
|
执行sql文件
我是用navicat新建了一个数据库,然后执行sql命令

1
| 将ruoyi-wechat-mp\sql中的所有sql文件执行即可
|
下载redis
https://github.com/tporadowski/redis/releases
下载便携版就行了
启动前端
1 2 3 4
| 打开ruoyi-wechat-mp/ruoyi-ui文件夹,在这里使用cmd命令
npm install
|
然后启动环境
这里遇到了一个问题
Error: error:0308010C:digital envelope routines::unsupported
bug解决
报错原因:
主要是因为 nodeJs V17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制,nodeJs v17 之前版本没影响,但 V17 和之后版本会出现这个错误。 我的node版本是v20+
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 在项目中 package.json 的 scripts 中新增 SET NODE_OPTIONS=--openssl-legacy-provider
添加前:
"scripts": { "dev": "vue-cli-service serve", "build:prod": "vue-cli-service build" }, 添加后:
"scripts": { "dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve", "build:prod": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build" },
|
参考:https://blog.csdn.net/scholar_man/article/details/134491200
测试环境
启动redis-server
启动mysql
启动后端
idea中直接运行就好了
启动前端
npm run dev

Ruoyi框架大致成功了
代码审计
线上实践项目地址:https://pazy.uzz.edu.cn/
使用CodeQL进行分析
1
| codeql database create D:/tools/CodeQL/databases/codeql_ruoyi-wechat-mp --language="java" --command="mvn clean install --file pom.xml" --source-root=D:\JavaProgram\ruoyi-wechat-mp\
|
- 使用命令行运行扫描
1 2
| codeql database analyze D:\tools\CodeQL\databases\codeql_ruoyi-wechat-mp D:/tools/CodeQL/ql/java/ql/src/codeql-suites/java-security-extended.qls --format=csv --output=java-results.csv
|
或者是使用vscode查看
上传的文件地址
https://pazy.uzz.edu.cn/api/profile/avatar/2024/10/18/image/1729264045573.jpeg
小程序地址
https://pazy.uzz.edu.cn/visitorh5/#/pages/login
其中一个数据包的地址
1 2 3 4 5 6 7 8 9 10 11 12
| GET /api/order/visitInfo/getVisitList?pageSize=1&pageNum=50 HTTP/1.1 Host: pazy.uzz.edu.cn Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImNlYTc2MWIzLTk4NjUtNDBhOS05NmI0LTU5OTZkZTZiNzQ4MCJ9.L79PKW0MDpzUzcOyOohEDCsLj3jQov2sCtl1CrnJsGRIE675O30qI1Mt0mxIMmoIGKW688LDKqxUA83zjWxYaQ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x63090c11) XWEB/11437 Flue Accept: */* Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: https://pazy.uzz.edu.cn/visitorh5/ Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Connection: keep-alive
|
文件上传地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| POST /api/order/visitUserInfo/file HTTP/1.1 Host: pazy.uzz.edu.cn Content-Length: 4684 Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImNlYTc2MWIzLTk4NjUtNDBhOS05NmI0LTU5OTZkZTZiNzQ4MCJ9.L79PKW0MDpzUzcOyOohEDCsLj3jQov2sCtl1CrnJsGRIE675O30qI1Mt0mxIMmoIGKW688LDKqxUA83zjWxYaQ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x63090c11) XWEB/11437 Flue Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAe90lmWqn7uL2D4E Accept: */* Origin: https://pazy.uzz.edu.cn Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: https://pazy.uzz.edu.cn/visitorh5/ Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Connection: keep-alive
------WebKitFormBoundaryAe90lmWqn7uL2D4E Content-Disposition: form-data; name="file"; filename="1729264045573.jpg" Content-Type: image/jpeg
����
|
https://210.44.232.92/static/js/app.393c65f7.js
这个目录泄露了公私钥的地址
1 2
| publickey:"MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\nnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==" privatekey="MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\nPuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\nkM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\ncSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\nDQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\nYhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\nUP8iWi1Qw0Y="
|
最后发现登陆后存在sql注入漏洞,但是奈何没有用户账号,所以没有办法验证