■KVMにOWASP_Broken_Web_Apps_VM_1.2.ovaを導入する。
以下よりダウンロード
OWASP Broken Web Applications Project
https://sourceforge.net/projects/owaspbwa/files/1.2/
■KVMホストのバージョン
$ lsb_release -d
Description: Debian GNU/Linux 9.5 (stretch)
$ dpkg -l | awk '/^ii/&&/kvm/{print $2,$3}'
qemu-kvm 1:2.8+dfsg-6+deb9u4
■OVAを展開してVMDKをQCOW2に変換
lpic303-1.imgに合わせて、[hostname].imgの形式とする。
$ du -h OWASP_Broken_Web_Apps_VM_1.2.ova
2.5G OWASP_Broken_Web_Apps_VM_1.2.ova
$ tar tvf OWASP_Broken_Web_Apps_VM_1.2.ova
-rw-r--r-- someone/64 5653 2015-08-03 13:28 OWASP_Broken_Web_Apps_VM_1.2.ovf
-rw-r--r-- someone/64 169 2015-08-03 13:28 OWASP_Broken_Web_Apps_VM_1.2.mf
-rw-r--r-- someone/64 2616692736 2015-08-03 13:34 OWASP_Broken_Web_Apps_VM_1.2-disk1.vmdk
$ qemu-img convert -O qcow2 OWASP_Broken_Web_Apps_VM_1.2-disk1.vmdk OWASP_Broken_Web_Apps_VM_1.2-disk1.qcow2
$ du -h OWASP_Broken_Web_Apps_VM_1.2-disk1.qcow2
5.9G OWASP_Broken_Web_Apps_VM_1.2-disk1.qcow2
$ sudo file /var/lib/libvirt/images/lpic303-1.img
/var/lib/libvirt/images/lpic303-1.img: QEMU QCOW Image (v3), 21474836480 bytes
$ sudo file OWASP_Broken_Web_Apps_VM_1.2-disk1.qcow2
OWASP_Broken_Web_Apps_VM_1.2-disk1.qcow2: QEMU QCOW Image (v3), 8589934592 bytes
$ sudo mv OWASP_Broken_Web_Apps_VM_1.2-disk1.qcow2 /var/lib/libvirt/images/owasp-bwa.img
$ sudo chown root:root /var/lib/libvirt/images/owasp-bwa.img
$ sudo chmod 600 /var/lib/libvirt/images/owasp-bwa.img
$ sudo ls -lh /var/lib/libvirt/images/ | awk '/lpic303-1|owasp-bwa/'
-rw------- 1 root root 21G 7月 19 15:08 lpic303-1.img
-rw------- 1 root root 5.9G 7月 19 15:20 owasp-bwa.img
■仮想マシンの構成を確認する。
CPU1コア、1GBメモリ、NW(NAT)、ubuntuベースのrootのパスワードが[owaspbwa]。
$ awk '/<Name>|CPU|memory|Network ovf|osType|Login/' OWASP_Broken_Web_Apps_VM_1.2.ovf
<Network ovf:name="nat">
<Name>OWASP Broken Web Apps VM v1.2</Name>
<OperatingSystemSection ovf:id="93" vmw:osType="ubuntuGuest">
<rasd:Description>Number of Virtual CPUs</rasd:Description>
<rasd:ElementName>1 virtual CPU(s)</rasd:ElementName>
<rasd:ElementName>1024MB of memory</rasd:ElementName>
Login with username=root and password=owaspbwa</Annotation>
■以下からするとid=93は32bit版のubuntuらしい。
バージョンが無いので適当に最新の17.10にした。
(実際後で確認したところ、10.04.1 LTSでした)
OpenNode OVF Reference
https://opennodecloud.com/howto/2013/12/25/howto-ON-ovf-reference.html
$ w3m -dump https://opennodecloud.com/howto/2013/12/25/howto-ON-ovf-reference.html | grep -A 105 "CIM OsType value map" | grep Ubuntu
"Ubuntu" [93]
"Ubuntu 64-Bit" [94]
■上記と下記の記事をもとに拡張性を考慮して、仮想マシンマネージャから、
カレント2/最大4コア、カレント2GB/最大4GB、ホストオンリーアダプタに接続する方針で構成。
OWASP BWA インストール (VirtualBox) - 脆弱性診断研究会
https://nilfigo.hatenablog.com/entry/2018/05/21/170000
debian stretchのKVMで仮想マシンのCPU、メモリ、NICの増設とディスクの拡張をしてみた。
http://labunix.hateblo.jp/entry/20180502/1525262971
■
$ virsh list | awk '/Id|^-|owasp/'
Id Name State
----------------------------------------------------
8 owasp-bwa running
$ virsh dumpxml owasp-bwa | awk '/vcpu/'
<vcpu placement='static' current='2'>4</vcpu>
$ virsh dominfo owasp-bwa | awk '/mem/';virsh dommemstat owasp-bwa | awk '/actual/'
Max memory: 4194304 KiB
Used memory: 2097152 KiB
actual 2097152
$ virsh dumpxml owasp-bwa | awk 'BEGIN{f=0}{if($1=="<interface"||$1=="</interface>") \
{f+=1;print $0}else{if(f==1){gsub(":[0-9a-f][0-9a-f]",":XX",$0);print $0}}}'
<interface type='bridge'>
<mac address='52:XX:XX:XX:XX:XX'/>
<source bridge='br1'/>
<target dev='vnet1'/>
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
■ネットワークはDHCPで取得しない。
というかどの物理NICにも接続されていないし、デフォルトGWも無い。
$ sudo brctl show br1
bridge name bridge id STP enabled interfaces
br1 8000.fe5400d4fd20 no vnet1
$ grep -A 10 "^# The priv" /etc/network/interfaces
auto br1
iface br1 inet static
address 192.168.0.5
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
bridge_ports none
bridge_stp off
bridge_fd 0
bridge_maxwait 0
■仮想マシン側で仮にIPアドレスを設定して、
ssh接続の上、interfaceファイルを編集する。
何のサービスが動いているのか知らないので、システムの再起動を行う
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 52:54:00:d4:fd:20 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.10/24 scope global eth0
inet6 fe80::5054:ff:fed4:fd20/64 scope link
valid_lft forever preferred_lft forever
10,13c10
< iface eth0 inet static
< address 192.168.0.10
< network 192.168.0.0
< netmask 255.255.255.0
---
> iface eth0 inet dhcp
ssh stop/waiting
ssh start/running, process 2469
logout
Connection to 192.168.0.10 closed.
■ホスト側ではIPアドレスではなく名前でアクセスしたいので、以下を設定
$ grep -A 2 owasp .ssh/config
Host owasp-bwa
User root
Hostname 192.168.0.10
■32bit版「Ubuntu 10.04.1 LTS」ベース
Description: Ubuntu 10.04.1 LTS
Linux owaspbwa 2.6.32-25-generic-pae
■KVMホストに対して[http://ip-address:8000]でアクセスがあったら、
[http://owasp-bwa:80]にアクセスするようにsocatを使う。
あくまで一時的で以下を考慮して。
・FWのポート転送はうちの環境では開放する箇所が多すぎる
・sshのポートフォワーディングでは暗号化されてしまいパケットキャプチャ出来なくなる。
・他のポートにアクセスする必要が出た場合にも応用が効く。
$ socat tcp-listen:8000,fork tcp-connect:192.168.0.10:80
■稼働中の仮想マシンにCPUを増設するには。
$ virsh setvcpus owasp-bwa 4
$ virsh dumpxml owasp-bwa | awk '/vcpu/'
■稼働中にCPUを増設した際には、仮想マシン内から以下を実行することを忘れないように。
$ su root -c 'echo 1 > /sys/devices/system/cpu/cpu{2,3}/online'
■稼働中の仮想マシンにメモリを増設するには。
32bit版なので、3GBで十分だけど。。。
$ virsh setmem owasp-bwa 4G
$ virsh dominfo owasp-bwa | awk '/mem/';virsh dommemstat owasp-bwa | awk '/actual/'
■firefoxでプロキシ除外して確認出来し、
ホストオンリーのだし、デフォルトGW無いL2環境だし、
ブロードキャスト等もFW配下で隔離されているのでポートスキャンしてみる。
「うわぁ。。。」と思ったけど、ヤラれサーバなので気にしないことにする。
$ sudo ./myscripts/penetration.sh
Usage: ./myscripts/penetration.sh [target_ip_address]
$ sudo ./myscripts/penetration.sh 192.168.0.10
Starting Nmap 7.40 ( https://nmap.org ) at 2018-07-19 16:17 JST
...
Completed NSE at 16:39, 0.01s elapsed
Nmap scan report for 192.168.0.10
Host is up (0.00029s latency).
Not shown: 65526 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 1024 ea:83:1e:45:5a:a6:8c:43:1c:3c:e3:18:dd:fc:88:a5 (DSA)
|_ 2048 3a:94:d8:3f:e0:a2:7a:b8:c3:94:d7:5e:00:55:0c:a7 (RSA)
80/tcp open http Apache httpd 2.2.14 ((Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL...)
|_http-favicon: Unknown favicon MD5: 1F8C0B08FB6B556A6587517A8D5F290B
| http-methods:
| Supported Methods: GET HEAD POST OPTIONS TRACE
|_ Potentially risky methods: TRACE
|_http-server-header: Apache/2.2.14 (Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/0.9.8k Phusion_Passenger/4.0.38 mod_perl/2.0.4 Perl/v5.10.1
|_http-title: owaspbwa OWASP Broken Web Applications
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
143/tcp open imap Courier Imapd (released 2008)
|_imap-capabilities: completed ACL UIDPLUS CAPABILITY ACL2=UNIONA0001 THREAD=ORDEREDSUBJECT IMAP4rev1 CHILDREN IDLE QUOTA OK SORT THREAD=REFERENCES NAMESPACE
443/tcp open ssl/http Apache httpd 2.2.14 ((Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL...)
|_http-favicon: Unknown favicon MD5: 1F8C0B08FB6B556A6587517A8D5F290B
| http-methods:
| Supported Methods: GET HEAD POST OPTIONS TRACE
|_ Potentially risky methods: TRACE
|_http-server-header: Apache/2.2.14 (Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/0.9.8k Phusion_Passenger/4.0.38 mod_perl/2.0.4 Perl/v5.10.1
|_http-title: owaspbwa OWASP Broken Web Applications
| ssl-cert: Subject: commonName=owaspbwa
| Issuer: commonName=owaspbwa
| Public Key type: rsa
| Public Key bits: 1024
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2013-01-02T21:12:38
| Not valid after: 2022-12-31T21:12:38
| MD5: 0fb9 ca0b e9b7 b26f de6c 3555 6186 2399
|_SHA-1: e469 e1f2 9877 40c3 3aec ee7c f630 ca19 31be 05ae
|_ssl-date: 2018-07-19T07:39:01+00:00; -1s from scanner time.
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
5001/tcp open java-rmi Java RMI
8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1
|_http-server-header: Apache-Coyote/1.1
|_http-title: Site doesn't have a title.
8081/tcp open http Jetty 6.1.25
| http-methods:
| Supported Methods: GET HEAD POST TRACE OPTIONS
|_ Potentially risky methods: TRACE
|_http-server-header: Jetty(6.1.25)
|_http-title: Choose Your Path
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port5001-TCP:V=7.40%I=7%D=7/19%Time=5B50400E%P=x86_64-pc-linux-gnu%r(NU
SF:LL,4,"\xac\xed\0\x05");
MAC Address: 52:54:00:D4:FD:20 (QEMU virtual NIC)
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.17 - 2.6.36
Uptime guess: 0.016 days (since Thu Jul 19 16:16:02 2018)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=192 (Good luck!)
IP ID Sequence Generation: All zeros
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_clock-skew: mean: -1s, deviation: 0s, median: -1s
| nbstat: NetBIOS name: OWASPBWA, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| Names:
| OWASPBWA<00> Flags: <unique><active>
| OWASPBWA<03> Flags: <unique><active>
| OWASPBWA<20> Flags: <unique><active>
| \x01\x02__MSBROWSE__\x02<01> Flags: <group><active>
| WORKGROUP<1d> Flags: <unique><active>
| WORKGROUP<1e> Flags: <group><active>
|_ WORKGROUP<00> Flags: <group><active>
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_smbv2-enabled: Server doesn't support SMBv2 protocol
TRACEROUTE
HOP RTT ADDRESS
1 0.29 ms 192.168.0.10
NSE: Script Post-scanning.
Initiating NSE at 16:39
Completed NSE at 16:39, 0.00s elapsed
Initiating NSE at 16:39
Completed NSE at 16:39, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1299.40 seconds
Raw packets sent: 128025 (5.636MB) | Rcvd: 128020 (5.123MB)