Oh! JUN

[WebGoat] Missing Function Level Access Control - 2 본문

웹 해킹/Broken Access Control

[WebGoat] Missing Function Level Access Control - 2

Kwon Oh! JUN 2023. 12. 19. 18:55


그냥 시도 해 봐

이전 페이지에서 언급했듯이 때때로 앱은 클라이언트 컨트롤에 의존합니다. 액세스를 제어합니다(모호함). 눈에 보이는 링크가 없는 항목을 찾으면 시도해 보고 무슨 일이 일어나는지 확인하세요. 예, 그렇게 간단할 수 있습니다!

사용자 정보 수집

SQL 주입과 같은 취약점으로 인해 데이터 덤프가 발생하는 경우가 많지만 액세스 제어가 부족하거나 부족하여 발생할 수도 있습니다.

이를 얻으려면 여러 단계와 여러 번의 시도가 필요할 수 있습니다. 댓글, 유출된 정보에 주의하세요. 추측해야 할 것입니다. 도중에 다른 브라우저/계정을 사용해야 할 수도 있습니다. 정보부터 시작하세요. 사용자 목록을 가져온 다음 자신의 사용자 계정에 '해시'를 제공할 수 있는지 확인하기 위해 이미 (숨겨진 메뉴 항목)을 수집했습니다.


 

[WebGoat] Missing Function Level Access Control - 1

모호성에 의존 사용자가 일반적으로 액세스하지 않는 링크를 숨기기 위해 HTML, CSS 또는 자바스크립트에 의존하는 경우. 조금 오래된 내용이지만 네트워크 라우터가 UI에서 자바스크립트로 관리

securitystudy.tistory.com

이전 문제에서 'Admin' 메뉴로 

Users, Config를 발견했고

각각 사용자 목록, 설정정보를 유추할 수 있습니다.


/users는 안돼고 최상위 디렉토리가 /WebGoat이니까

/WebGoat/users 해봅니다.


상태코드: 500이니까 해당 페이지가 존재는 하는데 

스크립트 오류로 인해 발생하는 에러입니다.



문제가 약간 억지스러운면이 있어서 소스코드를 참고해봤습니다.

MissingFunctionACUsers.java

 

Spring @RequestMapping의 consumes , produces속성

consumes @ResponseBody @RequestMapping(value = "/reply/replyList.wow") public Map replyList(ReplySearchVO searchVO){ List replyList=replyService.getReplyListByParent(searchVO); Map map=new HashMap(); map.put("result", true); map.put("data", replyList); map

brilliantdevelop.tistory.com

@RequestMapping은 지정한 path와 method를 처리해줍니다.

consumes속성은 지정한 Content-type을 처리합니다. 

 

그래서 해당 페이지에서 Content-type: application/json을 지정해야 서버에 요청하고 반환되는것입니다.