信呼协同办公系统多处延时注入漏洞

漏洞版本:V1.2.3 版本整理时间:2017-02-06 22:00:00
漏洞文件位置

文件/webmain/webmainAction.php第158行publicstoreAjax() 下辈子想做头猪的博客
从前台获取tablename_abcdefaultorder参数,然后经由iconvsql()过滤,再分别赋值给$table和$order,跟进去incovsql() 下辈子想做头猪的博客
该函数功能是将$str全部转成小写,然后再将关键字替换为空

select  
alter  
delete  
drop  
update  
insert  
from  
time_so_sec  
convert  
from_unixtime  
unix_timestamp  
curtime  
time_format  
union  
concat  
information_schema  
group_concat  
length  
load_file  
outfile  
database  
system_user  
current_user  
user()  
found_rows  
declare  
master  
exec  

针对替换关键字为空的情况,我们可以通过例如selselectect的方法绕过

漏洞重现

登陆OA之后,点击流程模块-->流程模块条件-->双击流程模块的名称 对该操作进行抓包分析,将defaultorder值改为(if((lenglengthth(uuser()ser())>1111),id,name)) 下辈子想做头猪的博客
如上图所示,若length(user())>0为真时,返回的是按id排序 下辈子想做头猪的博客
defaultorder值改为(if((lenglengthth(uuser()ser())>1111),id,name)),若length(user())>1111为假时,返回的是按name排序,故这里可以利用SQL盲注技巧进行注入.
当然这里用延时注入的方法可能更直观,即将其值改为(if((lenglengthth(uuser()ser())>1),id,sleep(3))),若执行了延时操作则表明if条件不正确
由于是过滤函数可被绕过,那么我们来搜索一个该函数 下辈子想做头猪的博客
发现多处调用了该函数,跟进去仔细查看代码 下辈子想做头猪的博客
在文件的下方调用了limitRows $arr = $this->limitRows($tables, $fields, $where, $order); 下辈子想做头猪的博客
该功能在WEB页面的个人中心-->消息提醒处 下辈子想做头猪的博客
同样的漏洞还发生在publicdelAjax(),publicstoreAjax,publictreestoreAjax,publictreestore,publicsaveAjax,publicsavevalueAjax,操作了,这里就不一 一重现了

zhutougg

继续阅读此作者的更多文章