网络安全 频道

[攻防手记]SQL注射漏洞的成因及修补

    一句话木马已经成功插进去了,这样成功了拿到WEBSHELL。

    我们回到后台继续看看还有什么可以利用的地方,转了半天也没发现可利用的。看来还是先用数据库备份拿个SHELL 再说,跟朋友要了个ASP大马,然后保存为jpg形式上传,得到上传地址为UploadFile/200818135334.jpg,数据库备份那里路径就写 UploadFile/200818135334.jpg 备份数据库名称写1.asp,然后点备份,成功获得了一个WEBSHELL。

    拿到SHELL 了以后就在想怎么帮朋友修补漏洞,先看存在注射漏洞页viewInfo_c.asp  Ctrl+F 搜索“request”一下就跳出来代码了,我们来看看查询是怎么写的?简单解释下代码,如下:

    <%
    dim ID
    dim rs,sql 
    ID=request("id") //从客户端获取ID的值
    sql = "select * from Info where ID="& ID  // 把查询语句赋值给SQL变量
    Set rs = Server.CreateObject("ADODB.Recordset") //创建记录对象
    rs.open sql,conn,1,1    //执行查询语句
    if not (rs.eof and rs.bof) then  //判断记录是否存在
    %>

    我们看到因为程序作者是直接使用request从客户端获取ID的值,并没有对程序进行过滤,也没有对输入的语句进行判断,所以导致存在注射漏洞。而且现在不光是这一个页面存在漏洞,笔者在WEBSHELL里随便打开一个页面搜索request发现全部都是ID=request("id") 并没有进行任何过滤,同样也存在了注射漏洞。如图7

0
相关文章