一、缘起
群里老哥丢出来一个某厂的面试靶场,跟着大佬学了些思路,记录如下。
整体流程:sql注入读取网站配置文件>拿到tomcat登录账号密码>登录tomcat上传war包>getshell。以下是脱敏后记录的详细过程:
二、 初探
目标是一个阉割版ecshop搭建的商城系统,利用已公开的漏洞无法拿下…
目标:http://1x.x.x.x:8080/eshop/UserLogin.jsp
直接web路径访问端口:http://1x.x.x.x:8080/发现tomcat的管理界面入口:
尝试爆破无果。只能回到web想其他办法
三、注入
回到web,首先注册账号并登录。在商品展示页面有一个很明显的注入:
看到Jsp脚本就条件反射盲猜Oracle数据库,结果死的很惨。我是通过dual表+jsp印象流判断目标数据库是Oracle,接下来获取数据库信息发现走不通,回过头才发现MySQL数据库也是有dual表的。然后通过不存在sys.user_tables表排除Oracle数据库。通过存在information_schema数据库确定目标是mysql数据库。
http://xxxx:8080/eshop/GoodsDetail.jsp?id=15 and (select count() from information_schema.TABLES)>0–+*
小声bb注入判断数据库类型参考:https://www.cnblogs.com/riyir/p/12623272.html
接下来就是常规的注入流程:
order by 8--+ # 报错
order by 7--+ # 回显正常,确认目标字段数
然后在回显的字符列上进行数据库信息收集:
http://xxxx:8080/eshop/GoodsDetail.jsp?id=-15 UNION SELECT 1,@@version_compile_os,3,user(),5,6,7–+
MySQL数据库root权限在Linux里面一般是没有写入权限的,所以这里无法通过注入直接拿shell。按照流程走下去应该是找到网站后台,通过管理员账号再想办法拿shell。但是阉割版的cms后台路径被管理员藏起来了,通过常规的扫描和爬行无法找到目标后台。陷入僵局时白嫖了大佬的思路,这里的是注入没有写入权限但是有读取权限,可以读取的tomcat 配置文件获取登录的账号密码。从tomcat manager登录后界面导入war包拿shell。
四、getshell
通过注入找到mysql的安装目录
/usr/local/mysql是mysql的安装路径,假设tomcat和MySQL安装在同一目录那我们要读取的文件物理路径为:/usr/local/tomcat/conf/tomcat-users.xml
但是实际是没有读取到的,从500的报错信息得知目标是tomcat7,Linux系统下应用安装路径一般要加版本号,尝试物理路径读取:/usr/local/tomcat7/conf/tomcat-users.xml
UNION SELECT 1,load_file('/usr/local/tomcat7/conf/tomcat-users.xml'),3,@@basedir,5,6,7--+
成功读取到tomcat配置文件:
接下来:登录tomcat》部署war》getshell
拿下: