首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞检测>文章内容
UPD论坛安全性分析
来源:www.itaq.org 作者:Jambalaya 发布时间:2004-09-24  

UPD论坛安全性分析

作者: [ITS]Jambalaya
小组论坛: www.itaq.org


前言:不久前看到一篇关于UPD论坛安全性的文章,因为闲来无事就从网上弄了一个下来,准备随便看看。我听很多人和我说CGI不安全,PHP安全。其实没有一种语言具备先天安全性,安全性是存在于编写代码人的思想中的,尽管PHP从刚开始的对magic_gpc_quote的限制到PHP4.0中对register_globals的禁止都没有阻拦住php各种论坛和系统的漏洞层出不穷,任何代码编写思想的不严谨和对漏洞成因的不了解对会直接或间接导致漏洞,如果你不信,那我们就来一起来看看吧!

一、profile.php中的逻辑错误

1、描述
^^^^^^^
profile.php是修改资料的文件,在profile.php中存在基本的逻辑错误导致恶意用户可以通过本地提交直接修改管理员的密码。

2、漏洞具体成因:
^^^^^^^^^^^^^^^
拿到论坛代码简单的浏览了一下,发现修改用户密码的地方并没有检查用户原来的旧密码。而是直接输入新密码,源代码如下:
<td bgcolor='$table1' width=80%><font size='$font_m' face='$font_face' color='$font_color_main'><b>用户名</b></font></td>
<td bgcolor='$table1' width=80%><font size='$font_m' face='$font_face' color='$font_color_main'>
$rec[user_name]
</td>
</tr>
<tr>
<td bgcolor='$table1' width=80%><font size='$font_m' face='$font_face' color='$font_color_main'><b>新密码</b></td>
<td bgcolor='$table1' width=80%><font size='$font_m' face='$font_face' color='$font_color_main'>
<input type='password' name='u_newpass'></font>
我们注意到用户名就是简单的$rec[user_name]直接提取了出来的,如果我们在源代码中修改这个值,并提交一个管理员的ID,然后通过本地提交就可以轻易的更改管理员的密码。
3、利用方法
注册一个用户Jambalaya,打开profile.php的页面,另存为1.htm,打开后找到Jambalaya修改为admin(或者其他管理员Id).查找action后面的地址,更改为要试验的的URL,如:http://127.0.0.1/myhome/upd/profile.php.输入密码后提交。看看,你已经可以用管理员登陆了。

二、admin_members.php
1、描述
^^^^^^^
因为后台程序admin_members.php验证存在缺陷,导致恶意用户可以直接添加或者更改、删除论坛管理员,进而威胁论坛或服务器安全。
2、具体漏洞成因
^^^^^^^^^^^^^^^
我们先来看一下具体的代码:

if(!isset($verify))
{
$verify = "";
}
if(isset($power_env) && isset($user_env) && isset($pass_env) && isset($id_env))
{
if(is_logged_in($user_env, $pass_env, $power_env, $id_env))
{

if (isset($action))
{

if($action == "edit")
{
if(isset($id))
{
$rec = get($id, "./db/users");

if(isset($level))
{
@$rec[level] = $level;
$rec = implode("<~>", $rec);
edit($id, $rec, "./db/users", "no");
echo "successfully edited user!";
} else {
//......
$power_env是权限的设置,id_env是你的级别。当$power_env等于3并且id_env=2的时候是论坛管理员,可是在整个程序中并没有检查权限是否为管理员,只是检查了power_env是否为空,并且power_env和id_env也并没有初始化,呵呵,好极了~~~~我们可以直接提升自己为管理员,不信?来看看~~~

3、利用方法
^^^^^^^^^^^
注册一个用户
用户名: itaq
密码: www.itaq.org
重复密码: www.itaq.org
信箱: love@myheart.org

然后我们提交如下的URL:
http://127.0.0.1/myhome/upd/admin_members...._env=3&id_env=2
id是你在论坛的id值,level为3是管理员,2是斑竹,1是普通会员。
提交后看到什么了?
successfully edited user!
呵呵,重新登陆看看,你已经是管理员了吧~~~

这篇文章只是挑了其中两个错误来说明问题,其实这个论坛诸如此类的漏洞还有很多,很多没过滤或者缺少验证的地方,大家有兴趣自己看吧。
正如你所见,安全是一种意识,而不是一种功能。所以没有哪种语言是安全的,就好像没有哪个国家的语言不存在二义性一样。论坛的代码导致的漏洞层出不穷,希望这能给编写代码的朋友们一些警示。
在这里感谢IT安全的各位好友们对我的支持和鼓励,特别是SystEM32他一直在激励我努力学习技术。也感谢analysist在上次面对面的聊天中给我的一些启示,让我明白了不少东西。
行问仓促,难免有错,欢迎来www.itaq.org交流技术。



 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·MS07-014调试手记
·udp_sendmsg空指针漏洞分析
·一段对perl 木马的分析
·小心我“DIR”溢出你!
·CVE-2010-4258漏洞分析
·Adobe Reader 'CoolType.dll' TT
·PHPBB<+2.0.10 漏洞说明
·袁哥写的漏洞研究方法总结
·利用异常处理执行shellcode实例
·注入点检测新方法
·Apache mod_ssl buffer over分析
·RPC漏洞的通用分析方法
  相关文章
·水晶论坛(WDB)安全性分析
·庖丁解D,游刃有余--Discuz!免费
·PHPBB<+2.0.10 漏洞说明
·Ofstar和phpind论坛安全性分析
·用Snort从原理上检测MS05-051攻
·雪人论坛的Sql Injection的漏洞
·一段对perl 木马的分析
·Apache mod_ssl buffer over分析
·AIX捉虫记之invscoutd
·利用异常处理执行shellcode实例
·windows溢出随笔
·Acrobat Reader5.1漏洞分析
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved