1+ import javax .servlet .ServletException ;
2+ import javax .servlet .http .HttpServlet ;
3+ import javax .servlet .http .HttpServletRequest ;
4+ import javax .servlet .http .HttpServletResponse ;
5+ import java .sql .DriverManager ;
6+ import java .sql .Driver ;
7+ import java .sql .SQLException ;
8+ import java .io .IOException ;
9+ import com .zaxxer .hikari .HikariConfig ;
10+ import com .zaxxer .hikari .HikariDataSource ;
11+ import java .util .*;
12+ import org .springframework .jdbc .datasource .*;
13+ import org .jdbi .v3 .core .Jdbi ;
14+ import org .springframework .boot .jdbc .DataSourceBuilder ;
15+
16+ public class JdbcUrlSSRF extends HttpServlet {
17+
18+ protected void doGet (HttpServletRequest request , HttpServletResponse response )
19+ throws ServletException , IOException {
20+
21+ String jdbcUrl = request .getParameter ("jdbcUrl" );
22+ Driver driver = new org .postgresql .Driver ();
23+ DataSourceBuilder dsBuilder = new DataSourceBuilder ();
24+
25+ try {
26+ driver .connect (jdbcUrl , null ); // $ SSRF
27+
28+ DriverManager .getConnection (jdbcUrl ); // $ SSRF
29+ DriverManager .getConnection (jdbcUrl , "user" , "password" ); // $ SSRF
30+ DriverManager .getConnection (jdbcUrl , null ); // $ SSRF
31+
32+ dsBuilder .url (jdbcUrl ); // $ SSRF
33+ }
34+ catch (SQLException e ) {}
35+ }
36+
37+ protected void doPost (HttpServletRequest request , HttpServletResponse response )
38+ throws ServletException , IOException {
39+
40+ String jdbcUrl = request .getParameter ("jdbcUrl" );
41+ HikariConfig config = new HikariConfig ();
42+
43+ config .setJdbcUrl (jdbcUrl ); // $ SSRF
44+ config .setUsername ("database_username" );
45+ config .setPassword ("database_password" );
46+
47+ HikariDataSource ds = new HikariDataSource ();
48+ ds .setJdbcUrl (jdbcUrl ); // $ SSRF
49+
50+ Properties props = new Properties ();
51+ props .setProperty ("driverClassName" , "org.postgresql.Driver" );
52+ props .setProperty ("jdbcUrl" , jdbcUrl );
53+
54+ HikariConfig config2 = new HikariConfig (props ); // $ SSRF
55+ }
56+
57+ protected void doPut (HttpServletRequest request , HttpServletResponse response )
58+ throws ServletException , IOException {
59+
60+ String jdbcUrl = request .getParameter ("jdbcUrl" );
61+
62+ DriverManagerDataSource dataSource = new DriverManagerDataSource ();
63+
64+ dataSource .setDriverClassName ("org.postgresql.Driver" );
65+ dataSource .setUrl (jdbcUrl ); // $ SSRF
66+
67+ DriverManagerDataSource dataSource2 = new DriverManagerDataSource (jdbcUrl ); // $ SSRF
68+ dataSource2 .setDriverClassName ("org.postgresql.Driver" );
69+
70+ DriverManagerDataSource dataSource3 = new DriverManagerDataSource (jdbcUrl , "user" , "pass" ); // $ SSRF
71+ dataSource3 .setDriverClassName ("org.postgresql.Driver" );
72+
73+ DriverManagerDataSource dataSource4 = new DriverManagerDataSource (jdbcUrl , null ); // $ SSRF
74+ dataSource4 .setDriverClassName ("org.postgresql.Driver" );
75+ }
76+
77+ protected void doDelete (HttpServletRequest request , HttpServletResponse response )
78+ throws ServletException , IOException {
79+
80+ String jdbcUrl = request .getParameter ("jdbcUrl" );
81+
82+ Jdbi .create (jdbcUrl ); // $ SSRF
83+ Jdbi .create (jdbcUrl , null ); // $ SSRF
84+ Jdbi .create (jdbcUrl , "user" , "pass" ); // $ SSRF
85+
86+ Jdbi .open (jdbcUrl ); // $ SSRF
87+ Jdbi .open (jdbcUrl , null ); // $ SSRF
88+ Jdbi .open (jdbcUrl , "user" , "pass" ); // $ SSRF
89+ }
90+
91+ }
0 commit comments