Add _site static files

master
Tait Hoyem 4 years ago
parent 92f8349743
commit 99b4ad133d

@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<title>The "Quiz Your Friends" Cross-Site Scripting Vulnerability | tait.tech</title>
<title>The "Quiz Your Friends" XSS Exploit | tait.tech</title>
<link rel="stylesheet" href="/assets/css/style.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
@ -26,73 +26,11 @@
</div>
</nav>
<h1>The "Quiz Your Friends" Cross-Site Scripting Vulnerability</h1>
<h4 class="post-date line-under">Wednesday, April 22 2020</h4>
<h1>The "Quiz Your Friends" XSS Exploit</h1>
<h4 class="post-date line-under"></h4>
<div class="article">
<p>This was fun to write! I found a cross-site scripting (XSS) attack
in a well-known quiz hosting website.
I disclosed the vulnerability to them years ago, so I thought
now might be a good time to write about it.</p>
<p>In this first section I will explain what XSS is.</p>
<p>In the <a href="#executing-an-exploit">second section</a> I will show you how I found this exploit and how to reproduce it yourself.</p>
<h2 id="what-is-cross-site-scripting-xss">What is cross-site scripting (XSS)</h2>
<p>Cross-site scripting, XSS for short,
is a technique to execute arbitrary Javascript code on a user visitng a website
by linking to Javascript code stored on another website.</p>
<p>So for example:</p>
<p>I have a file on my website called <a href="/assets/js/hacked.js">hacked.js</a>.
If I was able to run this javascript file on anybody visiting a certain website <em>that is not mine</em>, this would be called cross-site scripting.</p>
<p>Click the above <code class="highlighter-rouge">hacked.js</code> link to view the code I use to “hack” this website.
Its safe, I promise ;)</p>
<p>Now, how can we get this code to execute when a user visits this site?</p>
<h3 id="how-do-these-happen">How Do These Happen?</h3>
<p>Most of the time, these attacks are done using poorly sanatized <code class="highlighter-rouge">&lt;input&gt;</code> elements.
Sanitization is when an input box of some type does not <a href="">escape</a> html characters like <code class="highlighter-rouge">&lt;</code> or <code class="highlighter-rouge">&gt;</code>.</p>
<p>Sanitization is when a program (usually on the server side),
will remove characters like <code class="highlighter-rouge">&lt;</code> and replace them with <a href="">escape characters</a>
which internally would be something like <code class="highlighter-rouge">&amp;lt;</code>,
but your browser would interpret that as “show me the character less than sign”.</p>
<h3 id="a-thought-experiment">A Thought Experiment</h3>
<p>The question is:</p>
<p>If we suppose that a website is built with sequenses like these: <code class="highlighter-rouge">&lt;body&gt;</code>, <code class="highlighter-rouge">&lt;p&gt;</code> (for paragraph), <code class="highlighter-rouge">&lt;link&gt;</code> and <code class="highlighter-rouge">&lt;b&gt;</code> for bold, then why can you also <em>see</em> the left and right angle bracket characters?
Why doesnt everything after me typing <code class="highlighter-rouge">&lt;b&gt;</code> turn bold?</p>
<p>The answer is:</p>
<p>There are special characters to type a visible left (&lt;)
and right angle bracket (&gt;) in a website.
If I type with the left and right bracket on my keyboard,
things will indeed <b>show up bold</b>.</p>
<p>This is the code for the sentence I wrote above:</p>
<pre class="terminal">
There are special characters to type a visible left (&amp;lt;)
and right angle bracket (&amp;gt;) in a website.
If I type with the left and right bracket on my keyboard,
things will indeed &lt;b&gt;show up bold&lt;/b&gt;.
</pre>
<p>Notice how all visible left angle brackets used an <code class="highlighter-rouge">&amp;lt;</code> to show them?</p>
<p>This is the core of an XSS exploit.</p>
<p>If when a site takes in input it does not convert all &lt;s and &gt;s to &amp;lt; and &amp;gt;,
then when this data is returned to the user the browser will interpret the user input being displayed <em>as HTML code</em>.</p>
<h2 id="todo-write-intro">TODO write intro</h2>
<h2 id="how-i-found-this-exploit">How I Found This Exploit</h2>
@ -170,7 +108,7 @@ How can this be done?</p>
</div>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/2020/04/22/quiz-your-friends.html">beta.tait.tech</a>.
This page is mirrored on <a href="https://beta.tait.tech/2020-04-27-quiz-your-friends-xss.html">beta.tait.tech</a>.
</footer>
</div>

@ -0,0 +1,137 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>What is XSS? | tait.tech</title>
<link rel="stylesheet" href="/assets/css/style.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="wrapper">
<nav>
<input type="checkbox" id="menu">
<label for="menu">&#9776;</label>
<div class="menu-content">
<a href="/" class="nav-link" >Home</a>
<a href="/blog/" class="nav-link" >Blog</a>
<a href="/links/" class="nav-link" >Links</a>
<a href="/ideas/" class="nav-link" >Ideas</a>
<a href="https://github.com/TTWNO/" class="nav-link" target="_blank" rel="noopener noreferrer" >Code</a>
</div>
</nav>
<h1>What is XSS?</h1>
<h4 class="post-date line-under">Saturday, April 25 2020</h4>
<div class="article">
<p>I found a cross-site scripting (XSS) attack
in a well-known quiz hosting website.
I disclosed the vulnerability to them years ago, so I thought
now might be a good time to write about it.</p>
<p>In this first article I will explain what XSS is.</p>
<p>In the next article I will explain how I found this attack.</p>
<h2 id="what-is-cross-site-scripting-xss">What is cross-site scripting (XSS)</h2>
<p>Cross-site scripting, XSS for short,
is a technique to execute arbitrary Javascript code on a user visiting a website
by linking to Javascript code stored on another server.</p>
<p>So for example:</p>
<p>I have a file on my website called <a href="/assets/js/hacked.js">hacked.js</a>.
If I was able to run this javascript file on anybody visiting a certain website <em>that is not mine</em>, this would be called cross-site scripting.</p>
<p>Click the above <code class="highlighter-rouge">hacked.js</code> link to view the code I use to “hack” this website.
Its safe, I promise ;)</p>
<p>Now, how can we get this code to execute when a user visits this site?
To explain, I will start with some of the underlying technologies.</p>
<h3 id="escape-characters">Escape Characters!</h3>
<p>No, this is not a Sherlock Holmes novel!</p>
<p>If we suppose that a website is built with sequences like these (called “tags”):
<code class="highlighter-rouge">&lt;body&gt;</code>, <code class="highlighter-rouge">&lt;p&gt;</code> (for paragraph), <code class="highlighter-rouge">&lt;link&gt;</code> and <code class="highlighter-rouge">&lt;b&gt;</code> for bold,
then why can you <em>see</em> the left and right angle bracket characters?
Dont they mean something? Shouldnt they be telling the browser:
<em>“Hey! Make me bold!”?</em>
Why <em>doesnt</em> everything after me typing <code class="highlighter-rouge">&lt;b&gt;</code> turn bold?</p>
<p>The answer is:</p>
<p>There are special characters in HTML to type a visible left (&lt;)
and visible right angle bracket (&gt;) in a website.
If I use the left and right brackets on my keyboard however,
things will indeed <b>show up bold</b>.</p>
<p>This is the code for the sentence I wrote above:</p>
<pre class="terminal">
There are special characters in HTML to type a visible left (&amp;lt;)
and visible right angle bracket (&amp;gt;) in a website.
If I use the left and right brackets on my keyboard however,
things will indeed &lt;b&gt;show up bold&lt;/b&gt;.
</pre>
<p>Notice how all visible left angle brackets use an <code class="highlighter-rouge">&amp;lt;</code> to show them?</p>
<p>These are called <a href="https://en.wikipedia.org/wiki/Escape_character">escape characters</a>.
They tell a system, in this case your web browser:
<em>“Hello! Please show me off! I dont want to be hidden.”</em></p>
<h4 id="sanitization">Sanitization</h4>
<p>Most of the time XSS attacks are done using poorly sanitized HTML <code class="highlighter-rouge">&lt;input&gt;</code> elements.</p>
<p>Sanitization is when a program (usually on the server side),
will remove characters like <code class="highlighter-rouge">&lt;</code> and replace them with the aforementioned “escape characters”.
Internally this would be something like <code class="highlighter-rouge">&amp;lt;</code>,
but they would show up to a user as <code class="highlighter-rouge">&lt;</code>.</p>
<p>When inputs are not properly sanitized <em>and</em> the input is shown to the user in another part of the website,
then a malicous user can type in HTML that will run whenever anybody tries to look at what they typed.</p>
<p>HTML, by itself is not very dangerous.
The worst thing you could do is probably put a link on your name,
and then point it to a porn site.
Make your name bold, italic. Maybe make the background a funny color.
Although this may annoy your victim it is not dangerous security wise.</p>
<p>There is one tag however, that <em>is</em> scary…</p>
<h2 id="script"><code class="highlighter-rouge">&lt;script&gt;</code></h2>
<p>The <code class="highlighter-rouge">&lt;script&gt;</code> tag allows you to write code that can:</p>
<ol>
<li>Change the page contents.</li>
<li>Redirect the user to a new page automatically.</li>
<li>Get a users location.</li>
<li>Open a users microphone/webcam.</li>
<li>With the <code class="highlighter-rouge">src</code> <a href="https://www.w3schools.com/htmL/html_attributes.asp">attribute</a> you can also load a script from another site. (This is XSS)</li>
</ol>
<p>Those last two will ask for permission from the user (if their browser isnt insanely insecure).</p>
<p>In my next article Ill talk about a website I found which is vulnerable to this attack.
And, show you how you can run your own XSS attack.</p>
</div>
<footer>
This page is mirrored on <a href="https://beta.tait.tech/2020/04/25/xss.html">beta.tait.tech</a>.
</footer>
</div>
</body>
</html>

@ -30,9 +30,9 @@
<tr>
<td>
<h3 class="post-title"><a class="post-title-link" href="/2020/04/22/quiz-your-friends.html">The "Quiz Your Friends" Cross-Site Scripting Vulnerability</a></h2>
<span class="post-date">22 April 2020</span>
<div class="post-excerpt"><p>This was fun to write! I found a cross-site scripting (XSS) attack
<h3 class="post-title"><a class="post-title-link" href="/2020/04/25/xss.html">What is XSS?</a></h2>
<span class="post-date">25 April 2020</span>
<div class="post-excerpt"><p>I found a cross-site scripting (XSS) attack
in a well-known quiz hosting website.
I disclosed the vulnerability to them years ago, so I thought
now might be a good time to write about it.</p>

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.0.0">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2020-04-25T11:45:14+00:00</updated><id>http://localhost:4000/feed.xml</id><entry><title type="html">The “Quiz Your Friends” Cross-Site Scripting Vulnerability</title><link href="http://localhost:4000/2020/04/22/quiz-your-friends.html" rel="alternate" type="text/html" title="The &quot;Quiz Your Friends&quot; Cross-Site Scripting Vulnerability" /><published>2020-04-22T00:00:00+00:00</published><updated>2020-04-22T00:00:00+00:00</updated><id>http://localhost:4000/2020/04/22/quiz-your-friends</id><content type="html" xml:base="http://localhost:4000/2020/04/22/quiz-your-friends.html">&lt;p&gt;This was fun to write! I found a cross-site scripting (XSS) attack
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.0.0">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2020-04-25T12:49:41+00:00</updated><id>http://localhost:4000/feed.xml</id><entry><title type="html">What is XSS?</title><link href="http://localhost:4000/2020/04/25/xss.html" rel="alternate" type="text/html" title="What is XSS?" /><published>2020-04-25T00:00:00+00:00</published><updated>2020-04-25T00:00:00+00:00</updated><id>http://localhost:4000/2020/04/25/xss</id><content type="html" xml:base="http://localhost:4000/2020/04/25/xss.html">&lt;p&gt;I found a cross-site scripting (XSS) attack
in a well-known quiz hosting website.
I disclosed the vulnerability to them years ago, so I thought
now might be a good time to write about it.&lt;/p&gt;
&lt;p&gt;In this first section I will explain what XSS is.&lt;/p&gt;
&lt;p&gt;In this first article I will explain what XSS is.&lt;/p&gt;
&lt;p&gt;In the &lt;a href=&quot;#executing-an-exploit&quot;&gt;second section&lt;/a&gt; I will show you how I found this exploit and how to reproduce it yourself.&lt;/p&gt;
&lt;p&gt;In the next article I will explain how I found this attack.&lt;/p&gt;
&lt;h2 id=&quot;what-is-cross-site-scripting-xss&quot;&gt;What is cross-site scripting (XSS)&lt;/h2&gt;
&lt;p&gt;Cross-site scripting, XSS for short,
is a technique to execute arbitrary Javascript code on a user visitng a website
by linking to Javascript code stored on another website.&lt;/p&gt;
is a technique to execute arbitrary Javascript code on a user visiting a website
by linking to Javascript code stored on another server.&lt;/p&gt;
&lt;p&gt;So for example:&lt;/p&gt;
@ -21,118 +21,77 @@ If I was able to run this javascript file on anybody visiting a certain website
&lt;p&gt;Click the above &lt;code class=&quot;highlighter-rouge&quot;&gt;hacked.js&lt;/code&gt; link to view the code I use to “hack” this website.
Its safe, I promise ;)&lt;/p&gt;
&lt;p&gt;Now, how can we get this code to execute when a user visits this site?&lt;/p&gt;
&lt;p&gt;Now, how can we get this code to execute when a user visits this site?
To explain, I will start with some of the underlying technologies.&lt;/p&gt;
&lt;h3 id=&quot;how-do-these-happen&quot;&gt;How Do These Happen?&lt;/h3&gt;
&lt;h3 id=&quot;escape-characters&quot;&gt;Escape Characters!&lt;/h3&gt;
&lt;p&gt;Most of the time, these attacks are done using poorly sanatized &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;input&amp;gt;&lt;/code&gt; elements.
Sanitization is when an input box of some type does not &lt;a href=&quot;&quot;&gt;escape&lt;/a&gt; html characters like &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;&lt;/code&gt; or &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;No, this is not a Sherlock Holmes novel!&lt;/p&gt;
&lt;p&gt;Sanitization is when a program (usually on the server side),
will remove characters like &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;&lt;/code&gt; and replace them with &lt;a href=&quot;&quot;&gt;escape characters&lt;/a&gt;
which internally would be something like &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;amp;lt;&lt;/code&gt;,
but your browser would interpret that as “show me the character less than sign”.&lt;/p&gt;
&lt;h3 id=&quot;a-thought-experiment&quot;&gt;A Thought Experiment&lt;/h3&gt;
&lt;p&gt;The question is:&lt;/p&gt;
&lt;p&gt;If we suppose that a website is built with sequenses like these: &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;body&amp;gt;&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;p&amp;gt;&lt;/code&gt; (for paragraph), &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;link&amp;gt;&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;b&amp;gt;&lt;/code&gt; for bold, then why can you also &lt;em&gt;see&lt;/em&gt; the left and right angle bracket characters?
Why doesnt everything after me typing &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;b&amp;gt;&lt;/code&gt; turn bold?&lt;/p&gt;
&lt;p&gt;If we suppose that a website is built with sequences like these (called “tags”):
&lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;body&amp;gt;&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;p&amp;gt;&lt;/code&gt; (for paragraph), &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;link&amp;gt;&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;b&amp;gt;&lt;/code&gt; for bold,
then why can you &lt;em&gt;see&lt;/em&gt; the left and right angle bracket characters?
Dont they mean something? Shouldnt they be telling the browser:
&lt;em&gt;“Hey! Make me bold!”?&lt;/em&gt;
Why &lt;em&gt;doesnt&lt;/em&gt; everything after me typing &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;b&amp;gt;&lt;/code&gt; turn bold?&lt;/p&gt;
&lt;p&gt;The answer is:&lt;/p&gt;
&lt;p&gt;There are special characters to type a visible left (&amp;lt;)
and right angle bracket (&amp;gt;) in a website.
If I type with the left and right bracket on my keyboard,
&lt;p&gt;There are special characters in HTML to type a visible left (&amp;lt;)
and visible right angle bracket (&amp;gt;) in a website.
If I use the left and right brackets on my keyboard however,
things will indeed &lt;b&gt;show up bold&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;This is the code for the sentence I wrote above:&lt;/p&gt;
&lt;pre class=&quot;terminal&quot;&gt;
There are special characters to type a visible left (&amp;amp;lt;)
and right angle bracket (&amp;amp;gt;) in a website.
If I type with the left and right bracket on my keyboard,
There are special characters in HTML to type a visible left (&amp;amp;lt;)
and visible right angle bracket (&amp;amp;gt;) in a website.
If I use the left and right brackets on my keyboard however,
things will indeed &amp;lt;b&amp;gt;show up bold&amp;lt;/b&amp;gt;.
&lt;/pre&gt;
&lt;p&gt;Notice how all visible left angle brackets used an &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;amp;lt;&lt;/code&gt; to show them?&lt;/p&gt;
&lt;p&gt;This is the core of an XSS exploit.&lt;/p&gt;
&lt;p&gt;If when a site takes in input it does not convert all &amp;lt;s and &amp;gt;s to &amp;amp;lt; and &amp;amp;gt;,
then when this data is returned to the user the browser will interpret the user input being displayed &lt;em&gt;as HTML code&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&quot;how-i-found-this-exploit&quot;&gt;How I Found This Exploit&lt;/h2&gt;
&lt;p&gt;While filling in one of my friends surveys I thought it would be
funny for them to know it is me without anyone else knowing.
We were young and had &lt;code class=&quot;highlighter-rouge&quot;&gt;Inspect Element&lt;/code&gt;ed a few things together,
so it was a safe bet that an HTML joke would let them know.&lt;/p&gt;
&lt;p&gt;So I typed in my name like so:&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;BOLD_STEVE.JPG&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now in theory this should have shown in in the leaderboard as: “&amp;lt;b&amp;gt;Bold Steve&amp;lt;/b&amp;gt;”
However, to my horror and excitement, I saw this in the leaderboard:&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;BOLD_STEVE_LEADERBOARD.JPG&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The text “Bold Steve” showed up &lt;strong&gt;in bold&lt;/strong&gt; on the leaderboard.
This told me all I needed to know. To add a &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag was next.&lt;/p&gt;
&lt;p&gt;Notice how all visible left angle brackets use an &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;amp;lt;&lt;/code&gt; to show them?&lt;/p&gt;
&lt;h4 id=&quot;hacking&quot;&gt;Hacking:&lt;/h4&gt;
&lt;p&gt;These are called &lt;a href=&quot;https://en.wikipedia.org/wiki/Escape_character&quot;&gt;escape characters&lt;/a&gt;.
They tell a system, in this case your web browser:
&lt;em&gt;“Hello! Please show me off! I dont want to be hidden.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So I went on my merry way thinking about ways to use malicious javascript.
Then, I thought that might be mean, so I decided to warn users instead.
I filled in the name with a script tag and a call to &lt;code class=&quot;highlighter-rouge&quot;&gt;alert()&lt;/code&gt; to warn the user about this site.&lt;/p&gt;
&lt;h4 id=&quot;sanitization&quot;&gt;Sanitization&lt;/h4&gt;
&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;JAVASCRIPT_NAME.JPG&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Most of the time XSS attacks are done using poorly sanitized HTML &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;input&amp;gt;&lt;/code&gt; elements.&lt;/p&gt;
&lt;p&gt;I ran out of room before I could finish it. Hmmm.
What if I do “Inspect Element” and manually override the max-length attribute?&lt;/p&gt;
&lt;p&gt;The unfortunate truth is: this worked as well!&lt;/p&gt;
&lt;p&gt;Not only could I manually set the max-length by changing it in the HTML,
but there were no client-side OR server-side checks to make sure the name I was sending was less than or equal to 20 characters.&lt;/p&gt;
&lt;p&gt;If Javascript checked it, it would have stopped me (although maybe not a professional).
If the server checked it, it could have stopped almost anyone.&lt;/p&gt;
&lt;h5 id=&quot;server-side-validation&quot;&gt;Server-Side Validation&lt;/h5&gt;
&lt;p&gt;As a side note, here is a great reason why you should do most of your validation on the server side.
As a user, I can edit any of the HTML, CSS, or Javascript your server serves to me.&lt;/p&gt;
&lt;p&gt;Imagine trying to fit in a script tag doing anything useful with 20 characters?&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;script src=&quot;http:&quot;&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Theres your 20 characters! No more! Good luck trying to do anything useful with this!&lt;/p&gt;
&lt;p&gt;The Quiz My Friends server has &lt;em&gt;no such checks in place&lt;/em&gt;.
Therefore, I can send an almost arbitrary load to them.
Being able to send something potentially very large (more than a few megabytes) is a vulnerability of its own.
Imagine being able to send entire executable progrmas as your “name” in one of these quizes?&lt;/p&gt;
&lt;p&gt;Sanitization is when a program (usually on the server side),
will remove characters like &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;&lt;/code&gt; and replace them with the aforementioned “escape characters”.
Internally this would be something like &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;amp;lt;&lt;/code&gt;,
but they would show up to a user as &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;executing-an-exploit&quot;&gt;Executing An Exploit&lt;/h2&gt;
&lt;p&gt;When inputs are not properly sanitized &lt;em&gt;and&lt;/em&gt; the input is shown to the user in another part of the website,
then a malicous user can type in HTML that will run whenever anybody tries to look at what they typed.&lt;/p&gt;
&lt;p&gt;Suppose were on a vulnerable site like &lt;a href=&quot;https://www.quizyourfriends.com/&quot;&gt;Quiz Your Friends&lt;/a&gt;
and you decide you want to hack your friends quiz!
How can this be done?&lt;/p&gt;
&lt;p&gt;HTML, by itself is not very dangerous.
The worst thing you could do is probably put a link on your name,
and then point it to a porn site.
Make your name bold, italic. Maybe make the background a funny color.
Although this may annoy your victim it is not dangerous security wise.&lt;/p&gt;
&lt;h4 id=&quot;creating-a-quiz&quot;&gt;Creating A Quiz&lt;/h4&gt;
&lt;p&gt;There is one tag however, that &lt;em&gt;is&lt;/em&gt; scary…&lt;/p&gt;
&lt;p&gt;Here is my quiz below:&lt;/p&gt;
&lt;h2 id=&quot;script&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;script&amp;gt;&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;CREATING_QUIZ.IMG&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag allows you to write code that can:&lt;/p&gt;
&lt;h4 id=&quot;setting-a-name-with-an-html-tag&quot;&gt;Setting A Name With an HTML Tag&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Change the page contents.&lt;/li&gt;
&lt;li&gt;Redirect the user to a new page automatically.&lt;/li&gt;
&lt;li&gt;Get a users location.&lt;/li&gt;
&lt;li&gt;Open a users microphone/webcam.&lt;/li&gt;
&lt;li&gt;With the &lt;code class=&quot;highlighter-rouge&quot;&gt;src&lt;/code&gt; &lt;a href=&quot;https://www.w3schools.com/htmL/html_attributes.asp&quot;&gt;attribute&lt;/a&gt; you can also load a script from another site. (This is XSS)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Just like the image above, about how I found out about this vulnerability: go ahead and use an HTML tag in your name to test this out.&lt;/p&gt;
&lt;p&gt;Those last two will ask for permission from the user (if their browser isnt insanely insecure).&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;BOLD_ITALIC_STEVE.JPG&lt;/code&gt;&lt;/p&gt;</content><author><name></name></author><summary type="html">This was fun to write! I found a cross-site scripting (XSS) attack in a well-known quiz hosting website. I disclosed the vulnerability to them years ago, so I thought now might be a good time to write about it.</summary></entry><entry><title type="html">rfi: A Simple Linux utility to get a random file from a directory</title><link href="http://localhost:4000/2020/04/21/rfi.html" rel="alternate" type="text/html" title="rfi: A Simple Linux utility to get a random file from a directory" /><published>2020-04-21T00:00:00+00:00</published><updated>2020-04-21T00:00:00+00:00</updated><id>http://localhost:4000/2020/04/21/rfi</id><content type="html" xml:base="http://localhost:4000/2020/04/21/rfi.html">&lt;p&gt;I made a &lt;a href=&quot;https://lbry.tv/@tait:7/rfi:5&quot;&gt;little video&lt;/a&gt; about this script I wrote:&lt;/p&gt;
&lt;p&gt;In my next article Ill talk about a website I found which is vulnerable to this attack.
And, show you how you can run your own XSS attack.&lt;/p&gt;</content><author><name></name></author><summary type="html">I found a cross-site scripting (XSS) attack in a well-known quiz hosting website. I disclosed the vulnerability to them years ago, so I thought now might be a good time to write about it.</summary></entry><entry><title type="html">rfi: A Simple Linux utility to get a random file from a directory</title><link href="http://localhost:4000/2020/04/21/rfi.html" rel="alternate" type="text/html" title="rfi: A Simple Linux utility to get a random file from a directory" /><published>2020-04-21T00:00:00+00:00</published><updated>2020-04-21T00:00:00+00:00</updated><id>http://localhost:4000/2020/04/21/rfi</id><content type="html" xml:base="http://localhost:4000/2020/04/21/rfi.html">&lt;p&gt;I made a &lt;a href=&quot;https://lbry.tv/@tait:7/rfi:5&quot;&gt;little video&lt;/a&gt; about this script I wrote:&lt;/p&gt;
&lt;pre class=&quot;terminal&quot;&gt;
$ rfi

@ -29,8 +29,11 @@
<lastmod>2020-04-21T00:00:00+00:00</lastmod>
</url>
<url>
<loc>http://localhost:4000/2020/04/22/quiz-your-friends.html</loc>
<lastmod>2020-04-22T00:00:00+00:00</lastmod>
<loc>http://localhost:4000/2020/04/25/xss.html</loc>
<lastmod>2020-04-25T00:00:00+00:00</lastmod>
</url>
<url>
<loc>http://localhost:4000/2020-04-27-quiz-your-friends-xss.html</loc>
</url>
<url>
<loc>http://localhost:4000/blog/</loc>

Loading…
Cancel
Save