浏览模式: 标准 | 列表Tag:微尔

微尔文章系统v1.51 (修正版)上传漏洞

Submitted by admin
2010, August 14, 7:34 PM

漏洞文件:/manage/video/upfile_soft.asp
—————————————————————————————————
fileExt=lcase(right(file.filename,4)) if fileEXT=”asp” or fileEXT=”asa” or fileEXT=”aspx” then response.write “<font size=2>文件格式不对 [ <a href=# onclick=history.go(-1)>重新上传</a> ] </font>” response.end end if
—————————————————————————————————
源码是这样的,据以前的朋友说这个版本存在上传漏洞可以上传cer等asp.dll解析的扩展名

其实不然,这个版本可以上传任意扩展名的文件,因为源码是这样写的

fileExt=lcase(right(file.filename,4)) //获得文件的最后4位

if fileEXT=”asp” or fileEXT=”asa” or fileEXT=”aspx” //如果是否为asp,asa,aspx

比如我们上传 xxx.asp 那么最后4位是 .asp

而判断的是否为asp .asp 并不等于asp

按照源码作者的意思是应该这样写:

if fileEXT=”.asp” or fileEXT=”.asa” or fileEXT=”.aspx” //要在扩展名前加个.

虽然只是一个. 但是意义就完全不同了,因此这个版本的系统可以上传任意扩展名文件

Tags: 微尔, 上传

微尔文章系统v1.51漏洞

Submitted by admin
2010, April 10, 3:53 PM

 

这系统以前有人分析过 今天看到有了更新的版本 于是下载回来看了下

以前的漏洞是补上了 但是新的漏洞又来了 一个是上传漏洞 一个是后台注入

先说上传 在 /manage/video/upfile_soft.asp里 没有包含身份验证文件

gl.asp 但恰恰代码写的不严谨 造成严重漏洞 看下代码:

 if fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" then
  response.write "<font size=2>文件格式不对 [ <a href=# onclick=history.go(-1)>重新上传</a> ]</font>"
 response.end
 end if

错误犯的太低级了 我们可以上传cer  php 以及其他格式的文件来达到邪恶的目的:

打开 http://localhost/manage/video/upload_soft.asp    直接上传cer

 

 

在down文件夹中 也存在同样的漏洞

估计是作者太粗心了 后台验证文件在很多地方没有包含 没包含的地方也同样有注入漏洞

真是太"巧"了吧! 漏洞出现在 /manage/ClassModifySmall.asp

构造一个 http://localhost/manage/ClassModifySmall.asp?SmallClassID=1

注入吧 工具都能跑了.. 前台的安全不能遮掩后台的简陋.

Tags: 微尔

微尔网站管理系统注入漏洞

Submitted by admin
2010, April 10, 3:52 PM

漏洞页面:ProductShow.asp ,videoShow.asp

问题代码:

一:
videoShow.asp
<!--#include file="Inc/SysVideo.asp" -->
<!--#include file="inc/Check_Sql.asp"-->  //头文件调用了 防注入页面,
<!--#include file="inc/mkmenu.asp"-->
<!--#include file="admin/config.asp"-->  
------------------------------以上省略部分代码--------------------------------------------------

dim ID
ID=trim(request("ID"))  //问题出在这,request对象并没有指出用哪种方式提取变量id,
if Id="" then  
 response.Redirect("Video.asp")  //如果id为空,则跳到Video.asp页面,
end if

sql="select * from Download_video where ID=" & ID & "" //这里id直接代入数据库查询,
Set rs= Server.CreateObject("ADODB.Recordset")
rs.open sql,conn,1,3

----------------------------以下省略部分代码--------------------------------------------------

变量都可以用request来直接取得的,并且是有先后顺序的,譬如你用这样的语句request("id")取得id变量,asp会先从Form过来的数据找变量,然后是QueryString部分,然后是Cookie部分。但是如果你指定了request.cookies("id")就只会从cookie里找变量内容,没有的话就为空,同理,如果用的是request.form("id")就会只从表单里取变量而不会理会其他提交方式中的内容。这三个取得变量的地方也是是我们经常提交数据的地方,并且都是很容易就能修改的,而videoShow.asp他写的是直接request("id"),并没有指明是那种方式,即使加了防注入,我们也可以突破防注入,用cookies注入,修补办法就是加上request的方法,把request("id")改为request.queryString("id"),

看看防注入页面,防注入页面只对  '----- 对 get query 值 的过滤.和 '-----对 post 表 单值的过滤.

也就是过滤了request.QueryString和request.form的方法,而并没有过滤request.cookies的方法,cookies注

入也就产生了

二:

ProductShow.asp:

<!--#include file="Inc/SysProduct.asp" -->  //头文件
<!--#include file="jjfunc.asp"-->     //这里程序员忽略了调用 防注入系统,
<%
ShowSmallClassType=ShowSmallClassType_Article
dim ID
ID=trim(request("ID"))   /这里 trim函数过滤了空格  注意他是直接提取id变量的值,没指哪种方式,而防                          注入系统只检查request.form和request.queryString,而request.cookies忽略了                           存在cookies注入,修补办法就是将request("ID")改为request.queryString(ID),
if ID="" then
 response.Redirect("Product.asp")  //id为空,则转向Product.asp页面,
end if

sql="select * from Product where ID=" & ID & ""   //这里id参数直接代入数据库查询,
Set rs= Server.CreateObject("ADODB.Recordset")
rs.open sql,conn,1,3
if rs.bof and rs.eof then
 response.write"<SCRIPT language=JavaScript>alert('找不到此产品!');"
  response.write"javascript:history.go(-1)</SCRIPT>"
else 
 rs("Hits")=rs("Hits")+1
 rs.update
Start=Rs("Title")
BigClassName=Rs("BigClassName")
SmallClassName=Rs("SmallClassName")
 

%>

漏洞就为大家简单介绍完了,总结来说,就是ProductShow.asp ,videoShow.asp页面都存在cookies注入,而

ProductShow.asp 由于忽略了调用防注入页面,可以直接注入,

具体利用方法 看下个动画,就先到这里,


漏洞利用:

现在本机测试,直接注入ProductShow.asp页面,

  可以注入  现在去测试下 官方网站
  官方网站也可以注入

去网上找个

都可以注入  下面给大家演示下 cookies注入

 Powered by:VierCMS
  也可以注入

Tags: 微尔