안전하지 않은 직접 개체 참조

직접 개체 참조는 개발자가 공격자가 이러한 참조를 조작하여 권한이없는 데이터에 액세스 할 수 있도록 허용하는 유효성 검사 메커니즘없이 파일, 디렉터리 또는 데이터베이스 키와 같은 내부 구현 개체에 대한 참조를 노출 할 때 발생할 수 있습니다.

간단한 다이어그램을 통해이 결함의 위협 원, 공격 벡터, 보안 약점, 기술적 영향 및 비즈니스 영향을 이해하겠습니다.

앱은 계정 정보에 액세스하는 SQL 호출에서 확인되지 않은 데이터를 사용합니다.

String sqlquery = "SELECT * FROM useraccounts WHERE account = ?";
PreparedStatement st = connection.prepareStatement(sqlquery, ??);
st.setString( 1, request.getParameter("acct"));
ResultSet results = st.executeQuery( );

공격자는 관리자를 가리 키도록 브라우저에서 쿼리 매개 변수를 수정합니다.

http://webapp.com/app/accountInfo?acct=admin

손에

Step 1− Webgoat에 로그인하고 액세스 제어 결함 섹션으로 이동합니다. 목표는 tomcat-users.xml이있는 경로를 탐색하여 검색하는 것입니다. 아래는 시나리오의 스냅 샷입니다.

Step 2 − 파일의 경로는 '현재 디렉터리 위치'필드에 표시됩니다.-C : \ Users \ userName $ \. extract \ webapps \ WebGoat \ lesson_plans \ en 또한 tomcat-users.xml 파일이 아래에 보관되어 있음을 알고 있습니다. C : \ xampp \ tomcat \ conf

Step 3− 현재 디렉터리를 완전히 탐색하고 C : \ Drive에서 탐색해야합니다. Burp Suite를 사용하여 트래픽을 차단하여 동일한 작업을 수행 할 수 있습니다.

Step 4 − 시도가 성공하면 "축하합니다.이 강의를 성공적으로 완료했습니다."라는 메시지와 함께 tomcat-users.xml이 표시됩니다.

예방 메커니즘

개발자는 다음 리소스 / 포인트를 가이드로 사용하여 개발 단계 자체에서 안전하지 않은 직접 개체 참조를 방지 할 수 있습니다.

  • 개발자는 간접 개체 참조에 대해 하나의 사용자 또는 세션 만 사용해야합니다.

  • 또한 신뢰할 수없는 소스에서 직접 개체 참조를 사용하기 전에 액세스를 확인하는 것이 좋습니다.