poniedziałek, 7 maja 2012

GENU CMS 2012.3 - Multiple SQL Injection Vulnerabilities

GENU jest  napisany w języku PHP i korzysta z serwera baz danych MySQL, PostgreSQL lub SQLite. Jest w pełni konfigurowalny, ponieważ wykorzystuje system szablonów i obsługuje wiele języków.


Dziurawe Moduły:
 
   [+] posts/search.php
   [+] news/search.php
   [+] comments/search.php
 
W pliku: /news/search.php
W lini 82: 
 
                   AND LOWER(' . TABLE_NEWS . '.' . $_GET['match'] . ') 
                   LIKE  \\\\'%' . strtolower($search) . '%'

W pliku: /comments/search.php
W lini 77: 
 

                   AND LOWER(' . TABLE_COMMENTS . '.' . $_GET['match'] . ') 
                   LIKE  '%' . strtolower($search) . '%'

W pliku: /posts/search.php
W lini 78: 
 

                   AND LOWER(' . TABLE_POSTS . '.' . $_GET['match'] . ') 
                   LIKE  '%' . strtolower($search) . '%' 

 
Zmienna $_GET['match'] nie jest w żaden sposób filtrowana.
Możemy np. w tych liniach zmienną $_GET['match'] zamienić na zmienną $match
i dodać poniższy kod:
 
W pliku: /news/search.php
W lini 71
W pliku: /comments/search.php
W lini 69

W pliku: /posts/search.php
W lini 69

Można to zabezpieczyć dodając przykładowy kod:

if(isset($_GET['match']))
{
   if ($_GET['match'] == 'news_subject') $match = 'news_subject';
   if ($_GET['match'] == 'news_text') $match = 'news_text';
   else $match = 'news_subject';
}
 

Brak komentarzy:

Prześlij komentarz