全球主机交流论坛

标题: 聊一聊AMH所谓“轻量”及问题 [打印本页]

作者: haozi    时间: 2024-10-23 18:42
标题: 聊一聊AMH所谓“轻量”及问题
本帖最后由 haozi 于 2024-10-23 21:30 编辑

众所周知,AMH主打轻量,0占用。
那么它是如何实现这么轻量的呢?

首先,AMH是PHP写的,基于PHP-FPM运行。
也就是说,AMH实际上就是一个大号网站,跟你建的网站一样,没人访问自然就0占用了。
AMH也和你建的网站共用环境,nginx、php、mysql这些。
而其他面板都有自己独立的进程,与网站相隔离,有自己独立的数据库(一般sqlite)。

AMH这样做的好处,当然是极致轻量了,毕竟不访问就是0占用,这点是其他任何面板都没法比的。
坏处也有很多,随便列举一些:
1. nginx炸了,面板就上不去了。
2. php炸了,面板就上不去了。
3. mysql炸了,面板就上不去了。
4. 和网站共享环境没隔离开,有安全性问题(下面有说)。
5. 强绑定PHP,想不装都不可能。
6. 没有也做不到后台队列机制(想做到就要起后台进程,那就跟其他面板无二了)。
7. 因为PHP-FPM,做不到在线终端(AMH的终端是跑在Python上的,运行终端得起一个Python进程)
8. 都2024年了,极速安装的面板,还默认php7.4和mysql5.5?全是停止维护的老古董软件,php7.4还有不少漏洞。
9. 都2024年了,服务全部不使用systemd,让人怎么管理?人家宝塔至少还用了init.d,而1panel和耗子面板都标配systemd。
10. amh自带的文件管理无法操作/home外的文件,因为面板以www运行没有权限。

其他问题也随便列举一些,打破AMH所谓“无安全事件”:
1. 安全问题,面板文件权限给的过大(775/755),对比宝塔是600,耗子面板700。
2. 安全漏洞,/usr/local/amh-7.1/web/Amysql/Cxxx.php文件可任意用户读取(包括网站),内含mysql root密码。
3. 安全漏洞,网站可以直接写入/home/wwwroot/lnmp01/vhost/目录修改nginx配置。
4. 安全漏洞,网站可以通过运行amh命令任意操作,包括修改面板密码,安装任意软件,甚至卸载面板删库跑路。
5. /usr/bin/amh是二进制程序,违反了APL协议第1条禁止闭源发布源码程序,所有源码程序用户都可阅读(不过逆向也简单,扔ida一跑就出来了)。
6. 高危安全漏洞,amh命令行,shell命令注入(使用换行符+环境变量绕过检查执行任意命令),配合第4点危害很大。感谢12楼的提醒
总结一下就是只要一个网站被黑了/挂马了,那么整个服务器都可以被轻易拿下,这种情况在其他任何一个面板都不可能发生。

前面漏洞的poc就不放了,放两张压缩过的图吧。
(, 下载次数: 6)
(, 下载次数: 0)

题外话
我是不认可这种为了轻量所做的巨大牺牲,何况现在内存本来就是白菜价,多占一两百MB能有啥影响。
(2022年开发耗子面板前看到AMH这个设计我当时极为震惊,今天初略审计了一下更震撼了)
(源码中的love_you挺有意思,一边翻代码还能一边被喂、狗、粮)
至于天天吵的改UI,做过传统PHP开发的应该都知道,这玩意HTML和PHP杂糅在一起,10几年的代码沉淀下来哪有那么好改。想改成现代的vue/react,工作量不亚于整个程序扬了重写。

作者: 呆呆酱    时间: 2024-10-23 18:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: bbx188    时间: 2024-10-23 18:56
你这说的东西,amh更加不认了
UI那么明显的问题,他都视而不见!!!
你提的这些东西,怕不是把他裤子给脱了
作者: u78    时间: 2024-10-23 18:57
@Amysql
作者: im2828    时间: 2024-10-23 19:01
没必要吵吵,用脚投票就行了,WDCP都比AMH好用,我从WDCP换到宝塔的
作者: louiejordan    时间: 2024-10-23 19:02
搬凳子继续看戏
作者: 炒土豆丝    时间: 2024-10-23 19:06
我选择 1Panel
作者: 华盛顿    时间: 2024-10-23 19:10
很专业,鉴定完毕
作者: 0.0    时间: 2024-10-23 19:16
专业人士说话就是不一样
作者: quintion    时间: 2024-10-23 19:20
其实人家就是不想重构,懒得重构,oneman就是这样洒脱啊,爱用不用。

作者: 华盛顿    时间: 2024-10-23 19:20
本帖最后由 华盛顿 于 2024-10-23 19:23 编辑

突然想起来,当时你发布 耗子面板 的时候,不是一堆人吐槽这个名字吗,
你也很坚持啊,
跟AMH  UI  的坚持有的一拼,

我也想再吐槽一下,光这个名字,就不可能做起来,连AMH的项背都望不到~~~~


作者: ccclt    时间: 2024-10-23 19:23
1、Linux版的php7.4没有什么漏洞,只要把危险函数禁用就行
2、搭建网站的话一般都要开启AMChroot这个插件,完全可以避免你说的这些所谓高危安全漏洞
3、/usr/bin/amh的二进制程序是用amh.c源码编译的,具体可以看安装脚本
作者: 我是小菜鸡    时间: 2024-10-23 19:25
华盛顿 发表于 2024-10-23 19:20
突然想起来,当时你发布 耗子面板 的时候,不是一堆人吐槽这个名字吗,
你也很坚持啊,
跟AMH  UI  的坚持 ...

哈哈哈 每个人都有自己倔强,我好像也建议过楼主改一个名字!
作者: haozi    时间: 2024-10-23 19:25
本帖最后由 haozi 于 2024-10-23 19:28 编辑
ccclt 发表于 2024-10-23 19:23
1、Linux版的php7.4没有什么漏洞,只要把危险函数禁用就行
2、搭建网站的话一般都要开启AMChroot这个插件, ...


但是其他面板什么都不用操作都不存在这些问题哦
作者: trips    时间: 2024-10-23 20:47
你说的那个只要一个网站被日其他就也一样被拿下,我可以证明宝塔也可以这样。。前段时间搞得焦头烂额。然后发现一个cms的漏洞是真吓人。直接几十个全GG。。
作者: haozi    时间: 2024-10-23 20:56
trips 发表于 2024-10-23 20:47
你说的那个只要一个网站被日其他就也一样被拿下,我可以证明宝塔也可以这样。。前段时间搞得焦头烂额。然后 ...

宝塔正常很难利用的,整个面板都是600权限,你这个有可能是被提权了。
作者: 随波逐流    时间: 2024-10-23 21:00
我去,都有bug啊
作者: 王二麻子    时间: 2024-10-23 21:05
考虑隔离安全性,肯定优先1pan了  毕竟容器隔离
作者: MoeBoy    时间: 2024-10-23 21:22
真心建议耗子面板改名
作者: Amysql    时间: 2024-10-23 23:01
amh就是最适合跑lnmp、lamp的,
面板不用php的话,还是要跑别的程序环境,
加上phpmyadmin这些常用程序,还不是要跑回php了?面板不用php也要额外一套环境+php环境。


在amh都可以多nginx、多mysql、多php都可以同时共存,版本都可以自定义安装。
amh环境是独立,不同网站php进程也都独立的,不知道楼主说的都炸了是什么情况?

这么轻易炸了别的面板跑网站lnmp、lamp环境不一样容易炸了吗,
amh可分开限制每个网站进程数,至少一个站不会影响到所有站。



设的root:root的用户权限,755主是限写,限读环境无法跑的,
很多系统文件也都有读权限,情况没多少区别,如果lnmp环境都被入侵了,读取网站配置文件还不容易吗

php环境要安全隔离就开防跨站,amh的防跨站是模拟linux目录隔离的方式,
就完全限制在/web目录下,默认也是有限制运行amh命令的,能执行是什么条件下,ssh执行命令?

也可以直接上网站运行的代码,这边做验证。
或私信,谢谢。

作者: trips    时间: 2024-10-23 23:17
haozi 发表于 2024-10-23 20:56
宝塔正常很难利用的,整个面板都是600权限,你这个有可能是被提权了。

所以话不能说太满。默认网站权限都是770.只要cms漏洞够大就会整个机器沦陷。。
作者: haozi    时间: 2024-10-23 23:22
本帖最后由 haozi 于 2024-10-23 23:25 编辑
trips 发表于 2024-10-23 23:17
所以话不能说太满。默认网站权限都是770.只要cms漏洞够大就会整个机器沦陷。。 ...


真不会,这一般只有内核漏洞或者PHP漏洞可能做到(提权/绕过防跨站),除非你网站php改成用root用户跑了。
作者: haozi    时间: 2024-10-23 23:44
本帖最后由 haozi 于 2024-10-26 13:29 编辑
Amysql 发表于 2024-10-23 23:01
amh就是最适合跑lnmp、lamp的,
面板不用php的话,还是要跑别的程序环境,
加上phpmyadmin这些常用程序,还 ...


第一条认同,确实是最适合的。
第二条,nginx、php这些都没有进程守护,挂掉了面板就打不开了,可以自行去服务器上kill掉nginx试试。
第三条,以宝塔为例nginx炸了并不会影响面板,但是amh支持多nginx这是优点。
第四条不认同,以宝塔为例nginx配置均为600权限,不可能随意读取写入,另外不说给600,起码该给644吧,随便都能往nginx配置目录写配置文件进去,也太离谱了。
第五条指的是chroot吧,开那个确实可以规避前面提的一切问题,但不影响这些问题的客观存在,另外amh默认也没开chroot和open_basedir,连php禁用函数都是空的。

附amh命令行注入的绕过,其他的直接file get content、file put content对应文件,shell exec("cd /usr/local/amh-7.1/web && amh xxx")就完事了,不值一提。
export "A=ls -l"
amh amh-7.1 admin exit '
${A}'
A环境变量设置任意命令即可。
漏洞原因是amh.c中的过滤不完整:
for (k = 1; k < argc; k++)
        {
                i = 0;
                char cmd_row[2048];
                strcpy(cmd_row, argv[k]);
                int cmd_row_len = (int)strlen(cmd_row);
                for (; i < cmd_row_len; i++)
                        if (cmd_row == ' ' || cmd_row == '`' || cmd_row == ';' || cmd_row == '&' || cmd_row == '|' || cmd_row == '(') cmd_row = '_';
                strcpy(argv[k], cmd_row);
        }
PS:这论坛防火墙把命令全拦截了,只能这样了。
作者: 总是吵架的猪    时间: 2024-10-24 00:50
看大佬打架 都是好事 大家选择面板机会更多
作者: louiejordan    时间: 2024-10-24 01:09
haozi 发表于 2024-10-23 23:44
第一条认同,确实是最适合的。
第二条,nginx、php这些都没有进程守护,挂掉了面板就打不开了,可以自行 ...

第二条同意,我曾经就遇到过nginx挂掉导致AMH面板打不开
作者: HOH    时间: 2024-10-24 01:23
提权就拉倒吧,不用root跑基本问题都不大,顶多加加料挖挖矿,用面板的人还指望会加suid么,笑
作者: jackgill    时间: 2024-10-24 10:01
大部分说的都对。
作者: 张富贵    时间: 2024-10-24 10:48
华盛顿 发表于 2024-10-23 19:20
突然想起来,当时你发布 耗子面板 的时候,不是一堆人吐槽这个名字吗,
你也很坚持啊,
跟AMH  UI  的坚持 ...

哈哈哈,看来 每个人都有很奇怪的坚持
哈哈哈哈
作者: lanyecao    时间: 2024-10-24 12:01
神仙打架,不明觉厉
作者: MSN    时间: 2024-10-24 12:36
大佬是耗子面板的创始人吗?
创建网站的时候能不能直接可以选择创建或者不创建对应的数据库?小白嫌麻烦
作者: gmw    时间: 2024-10-24 12:38
你家的面板安几次全是下载不了安不上
作者: haozi    时间: 2024-10-24 13:16
MSN 发表于 2024-10-24 12:36
大佬是耗子面板的创始人吗?
创建网站的时候能不能直接可以选择创建或者不创建对应的数据库?小白嫌麻烦 ...

本来就可以
作者: haozi    时间: 2024-10-24 13:18
gmw 发表于 2024-10-24 12:38
你家的面板安几次全是下载不了安不上

截图看看
作者: MSN    时间: 2024-10-24 16:54

大佬,左侧菜单显示个数据库哎~
作者: wange008    时间: 2024-10-24 18:55
haozi 发表于 2024-10-24 13:18
截图看看

能不能改个logo名字,直接英文名 HZ面板 吧,耗子实在难听,哈哈哈哈
作者: haozi    时间: 2024-10-24 21:14
MSN 发表于 2024-10-24 16:54
大佬,左侧菜单显示个数据库哎~

在做了,预计月底更新
作者: MSN    时间: 2024-10-24 21:38
haozi 发表于 2024-10-24 06:14
在做了,预计月底更新

能听意见,非常号
作者: hyear    时间: 2024-10-24 22:17
这才是该有的气氛嘛 哈哈哈

不怕讨论,不怕交流
作者: qidian8    时间: 2024-10-24 22:32
AMH的轻量确实吸引人,但安全性和稳定性问题不容忽视。
作者: 会翻车吗    时间: 2024-10-24 22:34
AMH的UI的确一言难尽 反正就是属于那种用过一次就不想用第二次的。。。
作者: vultrlinode    时间: 2024-10-27 22:22
的确有这样的问题:
我在低配小鸡安装AMH,选择了高版本的MYSQL, 重启小鸡后MYSQL无法加载,面板无法打开。
AMH真的很强大,你想要的功能应有尽有,但是登录到后台看到各种下拉菜单,多级页面链接,那种感觉真的一言难尽。
我最早用过WDCP,宝塔在最初我认为借鉴了挺多WDCP的UI特色,HAOZI面板也很清爽,但我目前最喜欢的是1PANEL的整体设计。
作者: 你爹临死前    时间: 2024-10-27 23:00
争什么争,掺在一起做撒尿牛丸啊笨蛋!
作者: 玛雅    时间: 2024-10-27 23:50
ccclt 发表于 2024-10-23 19:23
1、Linux版的php7.4没有什么漏洞,只要把危险函数禁用就行
2、搭建网站的话一般都要开启AMChroot这个插件, ...

你是大佬,我听你的,AMH可以主力用在生产环境里吗?
作者: rebeke    时间: 2024-10-28 00:37
amh用不来,反倒是之前用过一个老外的面板,叫什么fast,那个还不错
作者: 柳泊风    时间: 2024-10-28 00:39
rebeke 发表于 2024-10-28 00:37
amh用不来,反倒是之前用过一个老外的面板,叫什么fast,那个还不错

fastpanel  毛子的  我也用过
作者: 海外试管婴儿    时间: 2024-10-28 02:24
cyberpanel咋样
作者: haozi    时间: 2024-10-28 10:12
玛雅 发表于 2024-10-27 23:50
你是大佬,我听你的,AMH可以主力用在生产环境里吗?

不怕死就用呗,该说的都说了。
作者: Amysql    时间: 2024-10-28 10:23
haozi 发表于 2024-10-23 23:44
第一条认同,确实是最适合的。
第二条,nginx、php这些都没有进程守护,挂掉了面板就打不开了,可以自行 ...

如果你要去守护nginx进程也不难,只是你也不想搞它,手动去kill肯定挂了。
上面意思是说正常nginx好好的,实际没这么容易就炸,如果这么容易炸了,
用户的lnmp环境网站都一样容易挂掉,lnmp都是nginx,其它面板都一样,影响不只考虑面板。

是,amh是可以把面板的nginx与用户的nginx分开,或面板换用apache也可以的,
不过以这个假设,也可以说两个nginx或apache都会炸了。

amh的轻量也不只是用nginx、php这些,amh一直是模块化设计,
面板所有软件管理功能,比如不同环境、网站管理功能、文件管理、终端、容器等等
全可按需安装使用、卸载、与独立升级,与其它面板不一样。


你说的这些操作的前提是要靠其它程序的漏洞,lnmp网站被入侵,加与没开防跨站,
如果已有其它漏洞都被入侵了,限写主机的配置也没加多少作用,入侵的想要的都是直接在程序上下手。
要加上限写也是没问题,权限方面也不只看权限值多少,限root,755都行。


是,amh默认是没用open_basedir,你是以某面板为标杆,
看你很多观点都是以open_basedir是能完全防的住了,这是能防新手,
都有其它漏洞被入侵的前提下,非想搞的话,有很多方式出去的,
网站基本都有目录有写权限与所有站共用tmp情况,
拿系统文件与所有站就看有没对方想要的了,值不值花时间。


命令行的执行,面板端过滤函数是有替换回车,命令过滤是少了这个,近期新版本会都加上,
看说你也是开发面板的,要开发维护面板也不易,不管你怎么说都谢谢你,
多个面板用户也多个选择,祝好。
作者: SEO界老司机    时间: 2024-10-28 11:03
刚用UC香港服务器安装了下 耗子面板 ,命令执行后 检查好久没反应

算了还是用 AMH 吧,安装和跑起来也很快,就用AMH了
作者: haozi    时间: 2024-10-28 11:08
本帖最后由 haozi 于 2024-10-28 11:20 编辑
Amysql 发表于 2024-10-28 10:23
如果你要去守护nginx进程也不难,只是你也不想搞它,手动去kill肯定挂了。
上面意思是说正常nginx好好的 ...


很简单,宝塔现在就是行业标杆,对着该抄抄该做做就行了,1panel很多地方也是抄宝塔的,甚至代码都有抄的。
但是amh,这么多年了我是没见一点改进,其他帖子提改ui全部怼回去,这篇帖子提安全建议也怼回去。

这个话题就此结束,祝好。
作者: 华盛顿    时间: 2024-10-28 12:16
haozi 发表于 2024-10-28 11:08
很简单,宝塔现在就是行业标杆,对着该抄抄该做做就行了,1panel很多地方也是抄宝塔的,甚至代码都有抄的 ...

但是耗子,这么多年了我是没见一点改进,其他帖子提改名字全部怼回去,这篇回复改名字建议也怼回去。

这个话题就此结束,祝好。
作者: Telegramr    时间: 2024-10-28 12:30
现在论雲 缺的就是这样的氛围,自从咩咩、caboo、A大、大便........一堆技术大牛消失之后,很难看到这样的技术讨论了。
作者: Telegramr    时间: 2024-10-28 12:35
wange008 发表于 2024-10-24 18:55
能不能改个logo名字,直接英文名 HZ面板 吧,耗子实在难听,哈哈哈哈

你不懂,现在互联网企业都用动物名称和logo,这样好站在风口成为独角兽。

作者: 传奇1900    时间: 2024-10-28 12:39
Telegramr 发表于 2024-10-28 12:35
你不懂,现在互联网企业都用动物名称和logo,这样好站在风口成为独角兽。
...

那我就开发个屎壳郎面板,站在风口成为独角兽屎壳郎
作者: Telegramr    时间: 2024-10-28 12:41
我服务器上还在用Kloxo-MR面板
作者: haozi    时间: 2024-10-28 13:20
本帖最后由 haozi 于 2024-10-28 13:22 编辑
华盛顿 发表于 2024-10-28 12:16
但是耗子,这么多年了我是没见一点改进,其他帖子提改名字全部怼回去,这篇回复改名字建议也怼回去。

这 ...


耗子是我的网名,我的程序用我自己名字有什么问题。而且觉得名字不好听自己面板上改一个用不了10秒钟。
作者: bg7758    时间: 2024-10-28 13:59
haozi 发表于 2024-10-24 21:14
在做了,预计月底更新

  我想起来了 mdserver-web  多个人反馈在左侧加上数据库   开发大佬说  你爱用用  不爱用别用
作者: trips    时间: 2024-10-28 14:34
haozi 发表于 2024-10-23 23:22
真不会,这一般只有内核漏洞或者PHP漏洞可能做到(提权/绕过防跨站),除非你网站php改成用root用户跑了 ...

这事情就是最近发生的,我人都麻了..权限都是宝塔默认那种..还是docker的那种安全挂一个不会都挂..
作者: 总有刁民想害朕    时间: 2024-10-28 15:19
LZ,论坛有你更精彩




欢迎光临 全球主机交流论坛 (https://443502.xyz/) Powered by Discuz! X3.4