Asp 安全审计 hi.baidu/micropoor
ASP 代码安全审计
------
PHP 安全新闻早 8 点特别篇
2012/3/20
注入漏洞: 1.Request.QueryString:获取地址栏参数(以及以 GET 方式提交的数据) 如:Request.QueryString("id") 2.Request.Form: 获取以 POST 方式提交的数据(接收 Form 提交来的数据) 如:Request.Form("id") 3.Request.Cookies: 获取浏览器 Cookier 信息。 4.Request:包含以上三种方式(优先获取 GET 方式提交的数据),它会在 QueryString、Form、 ServerVariable 中都搜寻一遍。而且有时候也会得到不同的结果。 如:Request("id") 例示代码: <% // //数字型 Response.Expires=0 dim sql dim rs articleid=request("film2") urlid=request("film1") if articleid="" or urlid="" then response.write"非法操作" response.end end if set rs=server.createobject("adodb.recordset") sql="select serverip,canlook,movietype,title from learning where articleid="&;articleid rs.open sql,conn,1,1 serverip=rs("serverip") okip=Request.Servervariables("HTTP_X_FORWARDED_FOR") If okip="" Then okip=Request.Servervariables("REMOTE_ADDR") set rst8=server.createobject("adodb.recordset") sql="select okip,testok,endtimes from okip where okip='"&;okip&;"'" rst8.open sql,conn,1,1 if rst8.eof and rst8.bof then if request.cookies("userid")="" or request.cookies("password")="" then %> <% // //字符型 if request("username")<>"" then set rst=server.createobject("adodb.recordset")
1
Asp 安全审计 hi.baidu/micropoor
sql="select user from users where username='"&;request("username")&;"' password='"&;md5(request("pws"))&;"'" //注意两者的
sql rst.open sql,conn,1,3 %>
and
<% //Cookies 注入 'SQL 通用防注入程序 'Aseanleung '--------定义部份-----------------Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr Dim fso1,all_tree2,file1,files,filez,fs1,zruserip If Request.QueryString<>"" Then (对 Request.QueryString 提交(客户采用 GET 方式提交)的数 据进行判断,并没有指明对其它方式提交的数据进行判断) '自定义需要过滤的字串,用 "|" 分隔 Fy_In = "'|;|%|*|and|exec|insert|select|delete|update|count|chr|mid|master|truncate|char|declare|script" ( 阻 止 了常用的 SQL 注入的语句) Fy_Inf = split(Fy_In,"|") For Each Fy_Get In Request.QueryString For Fy_Xh=0 To Ubound(Fy_Inf) If Instr(LCase(Request.QueryString(Fy_Get)),Fy_Inf(Fy_Xh))<>0 Then zruserip=Request.ServerVariables("HTTP_X_FORWARDED_FOR") If zruserip="" Then zruserip=Request.ServerVariables("REMOTE_ADDR") Response.Write "内容含有非法字符!请不要有'或 and 或 or 等字符,请去掉这些字符再发! !
" Response.Write "如是要攻击网站,
系统记录了你的操作↓
" Response.Write "操作IP:"&;zruserip&;"
" Response.Write "操作时间:"&;Now&;"
" Response.Write "操作页面:"&;Request.ServerVariables("URL")&;"
" Response.Write "提交方式:GET
" Response.Write "提交参数:"&;Fy_Get&;"
" Response.Wri
te "提交数据:"&;Request.QueryString(Fy_Get) %> //cookie 注入其原理也和平时的注入一样,只不过提交的参数已 cookie 方式提交了,而一般 的注入我们是使用 get 或者 post 方式提交,get 方式提交就是直接在网址后面加上需要注入 的语句, post 则是通过表单方式, 和 post 的不同之处就在于一个我们可以通过 IE 地址栏 get 处看到我们提交的参数,而另外一个却不能。
程序阻止了
常用的 SQL 语句使用,但只对客户采用 GET 方式提交的数据进行判断,而没有对 其它方式提交的数据进行判断,导致了 Re