Authored by Erwin Chan

AnyDesk version 7.0.9 suffers from an arbitrary file write vulnerability via a symlink attack.

# Exploit Title: AnyDesk allow arbitrary file write by symbolic link attack lead to denial-of-service attack on local machine
# Google Dork: [if applicable]
# Date: 24/5/2022
# Exploit Author: Erwin Chan
# Vendor Homepage: https://anydesk.com/en
# Software Link: https://anydesk.com/en
# Version: 7.0.9
# Tested on: Windows 11



It was found that AnyDesk (version 7.0.9) was vulnerable to arbitrary file
write by symbolic link attack leading to denial-of-service attack on local
machine. It was noted that two functions were affected.

*Affected function A*
When there was a remote connection come in, a directory under AppData of
current user (without admin privilege) and a "ad.trace" file (i.e.,
"C:Users<user>AppDataRoamingAnyDesk") will be created by "AnyDesk.exe"
with "NT AuthoritySYSTEM" privilege.

*Affected function B*
After a connection was made, local or remote user could use the chat room.
The chat log was written to folder
"C:Users<user>AppDataRoamingAnyDeskchat" by "AnyDesk.exe" with "NT
AuthoritySYSTEM" privilege. Or the local user (without admin privilege)
could change the location of the chat log to anywhere that he/she has
"Modify" privilege.

*Vulnerability Summary*
Since the directories (i.e., "C:Users<user>AppDataRoamingAnyDesk",
"C:Users<user>AppDataRoamingAnyDeskchat") were assigned with
"Modify" privilege for current user, current user could modify the entire
directory. With this setup, an unprivileged user is able to achieve
arbitrary file write by creating a symbolic link to a privileged location
(e.g., C:WindowsSystem32). As a result, a malicious user could
potentially deny any service by overwriting the configuration or system
file of applications such as Anti Virus solutions. It was noted that the
file content could be manipulated in affected function B such that a low
privileged user could write an arbitrary file to an arbitrary location.

*Affected function A: Exploit steps by local user (without admin privilege)*

1. Remove the directory "C:Users<user>AppDataRoamingAnyDesk"
2. Create symbolic link of "ad.trace" file to a privileged location
(e.g., C:WindowsSystem32test.file) (PoC binary could be found here:
https://github.com/googleprojectzero/symboliclink-testing-tools/blob/main/CreateSymlink/CreateSymlink_readme.txt
)


1. Connect to local machine (target machine) from a remote machine.
After the connection was initiated, the content of "ad.trace" file would be
written to target file (e.g., C:WindowsSystem32test.file)

*Affected function B: Exploit steps by local user (without admin privilege)*

1. edit username of remote connector


1. Establish a AnyDesk connection from remote. Enter arbitrary text into
the chat box. Mark down the filename of chat log


1. Remove the directory "C:Users<user>AppDataRoamingAnyDeskchat"
2. Create symbolic link of chat log file (e.g., 657584961.txt) to a
privileged location (e.g., C:Windowstest.conf) (PoC binary could be found
here:
https://github.com/googleprojectzero/symboliclink-testing-tools/blob/main/CreateSymlink/CreateSymlink_readme.txt
)


1. Open the chat room and enter arbitrary content into it. After that,
the content of chat room would be written to target file (e.g.,
C:Windowstest.conf)


Please let me know if any detail need further. Thanks

Regards,
Erwin