Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to protect against this type of attack?

I had someone run a pentest against an application recently and one of the critical problems it found was when some garbage was passed in a URL like this:

http://example.com/index.php/
%27%3e%3c%69%4d%67%20%53%72%43%3d%78%20%4f%6e%45%72%52%6f%52%3d%61%6c%65%
72%74%28%34%37%34%31%32%29%3e

The problem is that the attacker simply adds a slash then some encoded javascript (an image tag with alert box), which kills the page. Simple and effective attack.

How do I code against it? I am already cleaning all expected user inputs (such as when a user passes index.php?id=<script>alert(1)</script>). That part works fine.

How do I protect against unexpected data quoted below the first paragraph above? (Also, is there a specific name for this type of XSS attack?)

like image 607
a coder Avatar asked Feb 19 '15 15:02

a coder


People also ask

What are the controls to prevent an attack?

Preventive controls attempt to prevent an incident from occurring. Detective controls attempt to detect incidents after they have occurred. Corrective controls attempt to reverse the impact of an incident. Deterrent controls attempt to discourage individuals from causing an incident.


Video Answer


2 Answers

Be carefull with the use of $_SERVER['PHP_SELF]

You should do htmlspecialchars($_SERVER["PHP_SELF"]); or htmlentities($_SERVER["PHP_SELF"]);

And that's a normal XSS attack.

More info: Info

like image 125
lmarcelocc Avatar answered Oct 18 '22 08:10

lmarcelocc


I was using $_SERVER['PHP_SELF'] in an href tag, so that's where the JavaScript was triggered.

The solution is simple. I run PHP_SELF through a filter before using, and any passed garbage is cleaned and safe to use on the page.

like image 27
a coder Avatar answered Oct 18 '22 09:10

a coder