<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tepid Angler</title>
    <description>The latest articles on DEV Community by Tepid Angler (@tepidangler).</description>
    <link>https://dev.to/tepidangler</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F92466%2F50bbd6d9-9fdb-49c5-999f-d509edd61737.jpeg</url>
      <title>DEV Community: Tepid Angler</title>
      <link>https://dev.to/tepidangler</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tepidangler"/>
    <language>en</language>
    <item>
      <title>Moving Forward.cpp</title>
      <dc:creator>Tepid Angler</dc:creator>
      <pubDate>Wed, 13 Nov 2019 18:26:47 +0000</pubDate>
      <link>https://dev.to/tepidangler/moving-forward-cpp-2odk</link>
      <guid>https://dev.to/tepidangler/moving-forward-cpp-2odk</guid>
      <description>&lt;p&gt;This is gonna be a relatively short and sweet article. I recently began refreshing myself on C++ (post C++98) and that gave me an idea to possibly look into game development. Although I'm very aware it's frowned upon to code your own game engine, that's exactly what I will be doing. So to basically sum things up without being too winded, I'll be using this to post Hack the Box (HTB) write-ups of boxes that I pwn once they retire, and I've also thought of the possibility of detailing my game dev projects here. Anyway, stay tuned for more folks!&lt;/p&gt;

&lt;p&gt;P.S. Below is a simple calculator program I wrote, it's available on my github page as well in the 'Calculator' repo. Feel free to improve it, break it or whatever you feel like doing. If you make it do something cool or unexpected definitely let me know. If you want to add algebraic functions or something similar that's also fine.&lt;/p&gt;

&lt;p&gt;calc.cpp:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* This is my first attempt at a calculator program. It will have the ability to add, divide, subtract, and multiply values given to it by the user */

#include &amp;lt;iostream&amp;gt;
#include &amp;lt;unistd.h&amp;gt;

int getValueFromUser()
{
    std::cout &amp;lt;&amp;lt; "Enter an Integer please: ";
    int input{ 0 };
    std::cin &amp;gt;&amp;gt; input;
    std::cout &amp;lt;&amp;lt; "[+] Storing value, please wait\n";
    sleep(2);
    return input;
}

int add(int x, int y)
{
    return x + y;
}

int multiply(int z, int w)
{
    return z * w;
}

int sub(int b, int c)
{
    return b - c;
}

int divide(int d, int e)
{
    return d / e;
}

void doCalc(int choice)
{
    int a{ };
    int s{ };
    int m{ };
    int di{ };

    switch(choice) {

        case 1 :
            a = ( add( getValueFromUser(), getValueFromUser() ));
            std::cout &amp;lt;&amp;lt; "Your Total for addition is =&amp;gt; " &amp;lt;&amp;lt; a &amp;lt;&amp;lt; "\n";
            std::cout &amp;lt;&amp;lt; "\nThank you for using the Calculator\n";
            break;
        case 2 :
            s = sub( getValueFromUser(), getValueFromUser() );
            std::cout &amp;lt;&amp;lt; "Your Total for subtraction is =&amp;gt; " &amp;lt;&amp;lt; s &amp;lt;&amp;lt; "\n";
            std::cout &amp;lt;&amp;lt; "\nThank you for using the Calculator\n";
            break;
        case 3 :
            m = multiply( getValueFromUser(), getValueFromUser() );
            std::cout &amp;lt;&amp;lt; "Your Total for Multiplication is =&amp;gt; " &amp;lt;&amp;lt; m &amp;lt;&amp;lt; "\n";
            std::cout &amp;lt;&amp;lt; "\nThank you for using the Calculator\n";
            break;
        case 4 :
            di = divide( getValueFromUser(), getValueFromUser() );
            std::cout &amp;lt;&amp;lt; "Your Total for Division is =&amp;gt; " &amp;lt;&amp;lt; di &amp;lt;&amp;lt; "\n";
            std::cout &amp;lt;&amp;lt; "\nThank you for using the Calculator\n";
            break;
        case 5 :
            std::cout &amp;lt;&amp;lt; "Thanks for wasting your own time fam. You played yourself\n";
            exit (EXIT_SUCCESS);
            break;
        default :
            std::cout &amp;lt;&amp;lt; "The Instructions were clear than a mothafucker dog, learn to read.\n";
            std::cout &amp;lt;&amp;lt; "You know what fuck this shit I'm aborting\n";
            exit (EXIT_SUCCESS);
    }
}

int main()
{
    int choice{ 0 };
    std::cout &amp;lt;&amp;lt; "Welcome to Tepi's original Calculator written in C++\n";
    std::cout &amp;lt;&amp;lt; "Would you like do (1) Addition, (2) Subtraction, (3) Multiplication, (4) Division, or (5) Exit?\n&amp;gt;";
    std::cin &amp;gt;&amp;gt; choice;
    doCalc(choice);
    return 0;
}


&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>vi</category>
      <category>discuss</category>
      <category>cpp</category>
    </item>
    <item>
      <title>Using 'scl' of scl-utils to abuse sudo on CentOS/RHEL</title>
      <dc:creator>Tepid Angler</dc:creator>
      <pubDate>Tue, 02 Apr 2019 13:23:38 +0000</pubDate>
      <link>https://dev.to/tepidangler/using-scl-of-scl-utils-to-abuse-sudo-on-centos-rhel-429n</link>
      <guid>https://dev.to/tepidangler/using-scl-of-scl-utils-to-abuse-sudo-on-centos-rhel-429n</guid>
      <description>&lt;p&gt;What:&lt;br&gt;
In an effort to make it easier for unprivleged users on a shared system to use 'scl' an admin (reasonably) might &lt;br&gt;
allow sudo privs with no password for 'scl'. What's expected is for the unprivledged user to be able to execute&lt;br&gt;
the 'scl' binary to see a multitude of different information regarding the binary and whatever collections an &lt;br&gt;
admin may have downloaded for the developers to use on the system. Because the binary passes arguments through 'exec()' &lt;br&gt;
to achieve this, an attacker can leverage the 'exec()' function to pop a shell while abusing sudo to escalate privileges &lt;br&gt;
by simply adding bash as the 'COMMAND' argument in the scl syntax like so 'sudo scl enable rh-ruby25 bash'. &lt;/p&gt;

&lt;p&gt;Who:&lt;br&gt;
It's important to mention that this vulnerability doesn't affect all environments. For instance, if your users are protected by passwords&lt;br&gt;
this adds an extra layer of security against the vulnerability as the attacker would have to then find the password.&lt;br&gt;
Another example, if you have scl installed by default but don't have any packages in the '/opt/rh/' directory then&lt;br&gt;
scl will not have any collections to pull from which results in the 'scl' binary itself failing and then exiting.&lt;br&gt;
As far as who would be affected, any system that has scl-utils downloaded, has a collection installed, and that allows users to&lt;br&gt;
call the 'scl' binary using sudo. &lt;/p&gt;

&lt;p&gt;How:&lt;br&gt;
The driving force behind this abuse stems from the 'args.c' file which holds the source code for how to handle arguments.&lt;br&gt;
While reviewing 'args.c' I noticed they call the 'exec()' function which ultimately starts a new process using the arguments&lt;br&gt;
we gave the 'scl' binary on the command line. This is where our root shell comes from: since there it doesn't drop privileges&lt;br&gt;
to that of the person who called the sudo, we're left with a process that is now running as root.&lt;br&gt;
Lines 331-359 are as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="nf"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;strcmp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s"&gt;"run"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;strcmp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s"&gt;"enable"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;action&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ACTION_COMMAND&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;argc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;strcmp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s"&gt;"--exec"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;strcmp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s"&gt;"-x"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;exec_flag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="cm"&gt;/* Remove -x / --exec from argv */&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;exec_flag&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i2&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;argc&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i2&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="n"&gt;argc&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;argc&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;ret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;EINPUT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;goto&lt;/span&gt; &lt;span class="n"&gt;fail&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;ret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;parse_run_args&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;argc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ret&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;EOK&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;goto&lt;/span&gt; &lt;span class="n"&gt;fail&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Line 356: &lt;code&gt;ret = parse_run_args(argc, argv, args);&lt;/code&gt; is the line that passes our arguments to the 'exec()' function.&lt;br&gt;
To mitigate this vulnerability I have written a patch that checks the 'SUDO_GID' and 'SUDO_UID' environment variables&lt;br&gt;
and then drops the privileges of the process to the user who called the sudo. This stops our attacker from escalating &lt;br&gt;
his privileges allowing the system users to continue using the 'scl' binary the same way they have been before.&lt;/p&gt;

&lt;p&gt;Below I have provided a link to the bug I submitted through bugzilla, which does provide a patch to mitigate this type&lt;br&gt;
of attack:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bugzilla.redhat.com/show_bug.cgi?id=1694875" rel="noopener noreferrer"&gt;https://bugzilla.redhat.com/show_bug.cgi?id=1694875&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Closing:&lt;/p&gt;

&lt;p&gt;I should mention that I did reach out to a vulnerability disclosure program, Zerodium, and was told that this isn't&lt;br&gt;
considered a privilege escalation exploit. Redhat also advised it's a feature. I should also note that even if you don't meet the conditions to escalate privilege's you can still use this binary to escape jails. I also provided the patch (SEE BUGZILLA LINK) to the upstream. With all of this being said I felt it was safe to release this information to the world specifically because until the patch&lt;br&gt;
has been pushed by upstream systems may still be infected and now they will at least have a patch available until&lt;br&gt;
they can apply the patch to a release. Since there has been no CVE issued at this time I feel this issue is best&lt;br&gt;
covered by CWE-264 with a severity of 41.6.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Tepidangler" rel="noopener noreferrer"&gt;
        Tepidangler
      &lt;/a&gt; / &lt;a href="https://github.com/Tepidangler/SCL-patch" rel="noopener noreferrer"&gt;
        SCL-patch
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A patch for the args.c file in the scl binary source
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;SCL-patch&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;A patch for the args.c file in the scl binary source&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Applying the patch&lt;/h1&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;If you already have scl compiled on your host you can delete the binary using&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;# rm -rf path/to/scl/binary&lt;/code&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Steps&lt;/h2&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Create a temporary working space in the /tmp directory and change to that directory&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;$ mkdir /tmp/scl-patch &amp;amp;&amp;amp; cd /tmp/scl-patch&lt;/code&gt;&lt;/p&gt;

&lt;ol start="2"&gt;
&lt;li&gt;Clone scl-utils repo from github&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;$ git clone https://github.com/sclorg/scl-utils.git&lt;/code&gt;&lt;/p&gt;

&lt;ol start="3"&gt;
&lt;li&gt;Clone the patch for args.c from this repo&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;$ git clone https://github.com/Tepidangler/SCL-patch.git&lt;/code&gt;&lt;/p&gt;

&lt;ol start="4"&gt;
&lt;li&gt;
&lt;p&gt;Change to the src directory in scl-utils/
&lt;code&gt;$ cd scl-utils/src/&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Patch the args.c file&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;$ patch &amp;lt; /tmp/scl-patch/SCL-patch/args.patch&lt;/code&gt;&lt;/p&gt;

&lt;ol start="6"&gt;
&lt;li&gt;Compile the source code&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;$ cmake . &amp;amp;&amp;amp; make&lt;/code&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Tepidangler/SCL-patch" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Shoutout to:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/TJ_Null" rel="noopener noreferrer"&gt;@TJnull&lt;/a&gt; &amp;amp; &lt;a href="https://twitter.com/lewellyn" rel="noopener noreferrer"&gt;@lewellyn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to follow them on Twitter&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>linux</category>
      <category>bugs</category>
      <category>c</category>
    </item>
    <item>
      <title>Hack The Box</title>
      <dc:creator>Tepid Angler</dc:creator>
      <pubDate>Mon, 13 Aug 2018 17:42:59 +0000</pubDate>
      <link>https://dev.to/tepidangler/hack-the-box-30m3</link>
      <guid>https://dev.to/tepidangler/hack-the-box-30m3</guid>
      <description>&lt;p&gt;I recently stumbled upon what I now call a gem, Hack The Box. In short it's a series of servers on a vpn that you can hack with the ultimate goal of rooting the box. They have varying difficulties the easiest I've completed (which is 1/2 lol) was 'Jerry', it didn't take much knowledge of anything except maybe enumeration. 'Poison' however was very difficult in the sense that sometimes when starting my testing I have a tendency to get brute-force happy on everything while sometimes overlooking much easier vulnerabilities. Anyway the goal of most of these boxes are to get a user hash and and root hash, you earn points for it which translates to rank and I would assume eventually leads to job offers or something like that. But it's the best 'hacker game' I've seen since Pull the Plug. If you enjoy these kinds of things or are at least interested you should probably check it out. Now be forewarned you have to 'hack' your way through the invitation process, but it's not something that you should find too difficult.&lt;/p&gt;

</description>
      <category>htb</category>
      <category>linux</category>
      <category>discuss</category>
      <category>programming</category>
    </item>
    <item>
      <title>Vulns</title>
      <dc:creator>Tepid Angler</dc:creator>
      <pubDate>Mon, 13 Aug 2018 16:03:52 +0000</pubDate>
      <link>https://dev.to/tepidangler/vulns-205d</link>
      <guid>https://dev.to/tepidangler/vulns-205d</guid>
      <description>

&lt;p&gt;It would seem as though today there is a major emphasis on cyber security. For what reason I'm honestly not sure. Let's play devils advocate and say that there are corporations out there that genuinely care about your CPNI for the sole sake of doing good business. One may argue that it's impossible to cover all vulnerabilities and exploits, and to that I say bullshit. While you're right that anything can be exploited with the right amount of time and effort, the other side to this coin is that most people aren't going to take that time and effort unless there a big payout. As much as I would love to blame corporations for the entirety of this BS I can't, having personally witnessed some of the "cautionary" steps that some of our more powerful collectives of people take to ensure their own trade secrets; it blows my mind that they don't take YOUR information as serious when it comes to protection. Willingness to facilitate crimes by placing the responsibility with others is never the way to go. Not to much can be said, but I CAN say this: if you're into cyber security, or even if you aren't, be very very very careful with who you trust with your personal information..... it could be only a well-crafted google search away&lt;/p&gt;


</description>
      <category>vulns</category>
      <category>metasploit</category>
      <category>linux</category>
      <category>nix</category>
    </item>
  </channel>
</rss>
