WebDAV

Overview

Web Distributed Authoring and Versioning (WebDAV) is an extension of the Hypertext Transfer Protocol (HTTP) that allows clients to perform remote Web content authoring operations. WebDAV is defined in RFC 4918 by a working group of the Internet Engineering Task Force.

The WebDAV protocol provides a framework for users to create, change and move documents on a server.

WebDAV verbs

WebDAV extends the set of standard HTTP verbs and headers allowed for request methods.

The added verbs include:

  • COPY: copy a resource from one URI to another

  • LOCK: put a lock on a resource. WebDAV supports both shared and exclusive locks.

  • MKCOL: create collections (a.k.a. a directory)

  • MOVE: move a resource from one URI to another

  • PROPFIND: retrieve properties, stored as XML, from a web resource. It is also overloaded to allow one to retrieve the collection structure (also known as directory hierarchy) of a remote system.

  • PROPPATCH: change and delete multiple properties on a resource in a single atomic act

  • UNLOCK: remove a lock from a resource

Network scan and basic recon

nmap can be used to scan the network for exposed HTTP WebDAV services.

nmap includes the following default NSE script, triggered by usning -sC:

  • http-webdav-scan, which will detect and attempt to retrieve information about a WebDAV installation, notably the allowed verbs.

nmap -v -sV -sC -oA nmap_WebDAV -p 80,443  <HOST | RANGE | CIDR>

The Metasploit module auxiliary/scanner/http/webdav_scanner can be used to detect webservers with WebDAV enabled on a single IP or a CIDR identifier.

msf> use auxiliary/scanner/http/webdav_scanner

WebDAV content browsing

While a browser may be used to manually browse the content of a WebDAV webserver, the Metasploit module auxiliary/scanner/http/webdav_website_content can be used to automatically enumerate the accessible files.

msf> use auxiliary/scanner/http/webdav_website_content

WebDAV client

The DAV Explorer utility (dave on Linux systems) can be used to interact with a WebDAV service through Linux like commands interfaced with the WebDAV HTTP verbs.

The supported commands are:

  • cat shows the contents of a remote file

  • cd changes directories

  • copy copies one remote resource to another

  • delete deletes a remote resource

  • edit edits the contents of a remote file

  • get downloads the file or directory at URL

  • help prints list of commands or help for CMD

  • lcd changes local directory

  • lls lists local directory contents

  • lock locks a resource

  • ls lists remote directory contents or file props

  • mkcol make a remote collection (directory)

  • move moves a remote resource to another

  • open connects to the WebDAV-enabled server at URL

  • option show the HTTP methods allowed for a URL

  • propfind show the properties of a resource

  • put uploads a local file or directory to URL

  • pwd prints the currently opened URL (working directory)

  • quit exits dave

  • set sets a custom property on a resource

  • sh executes a local command (alias !)

  • showlocks show my locks on a resource

  • steal remove ANY locks on a resource

  • unlock unlocks a resource

  • unset unsets a property from a resource

Usage:

dave <URL>
dave -u <USERNAME> -p <PASSWORD> <URL>

Remote Code Execution through files upload

Automated files upload tests with davtest

The davtest Perl script can be used to automatically detect if files of various types can be upload on a WebDAV server.

The script attempts to:

  • PUT test files of various programming languages

  • PUT files with .txt extension then MOVE them to executable file types

Usage:

davtest -url <URL>

Files upload

davtest can also be used to upload a specific file on a WebDAV server:

davtest -url <URL> -directory <UPLOAD_DIR> -uploadfile <LOCAL_FILE_PATH> --uploadloc <REMOTE_FILE_NAME>

Metasploit payload deploying

If asp files can be uploaded, the Metasploit module exploit/windows/iis/iis_webdav_upload_asp can be used to automatically deploy a Metasploit payload.

The module will firstly try to directly upload an asp executable and, if the upload is not permitted, try to upload a txt file and move / copy it to an asp executable.

msf> use exploit/windows/iis/iis_webdav_upload_asp

Windows 2003 R2 WebDAV filter bypass

On IIS 6 (Windows 2003 and 2003 R2), the policy filter restricting the uploaded files types can be bypassed. This bypass can be used to execute files on the webserver even if the upload of such files is restricted. The only pre requisite is being able to upload file of any type.

To exploit the filter bypass:

  • Generate an executable that will be executed by the webserver, such as a reverse shell (Refer to the [General] Shells note)

  • Rename the executable to a file type that can be uploaded, for example .txt

  • Upload the file using the dave or davetest tools

  • Rename the file on the server using dave

mv <FILE> <FILENAME>.<EXECUTABLE_EXTENSION>;.<UPLOADABLE_EXTENSION>

# For example, txt uploadable file for asp executable
mv file.txt file.asp;.txt
  • Browse to the renamed file for execution

Known vulnerabilities

Microsoft IIS WebDav ScStoragePathFromUrl Overflow - CVE-2017-7269

A buffer overflow in the ScStoragePathFromUrl function in the WebDAV service in Internet Information Services (IIS) 6.0 in Microsoft Windows Server 2003 R2 can be leveraged to execute arbitrary code.

A Metasploit module is available for the exploit:

msf> use exploit/windows/iis/iis_webdav_scstoragepathfromurl

Last updated