hackerone-us-dept-of-defense-2019-08-h-519631
SQL Injection in ████
https://hackerone.com/reports/519631
/recruiter/updapp.aspx 경로에 접속해 GET 패킷 잡는다. 이는 500 에러가 뜬다.
이 패킷을 POST로 변경한다. 그리고 body에 app_id 파라미터를 추가하고, app_id=’ 와 같이 설정하여 보낸다.
그러면 ORA-01756: quoted string not properly terminated 와 같은 에러 메시지가 온다.
‘가 하나만 있어 이런 메시지를 보낸 것이다.
app_id=” 로 설정해 시도하면 ORA-01722: invalid number 에러 메시지가 온다.
이를 통해 app_id가 제대로 필터링되지 않고 SQL에 사용된다는 결론을 냈다.
딱히 DB 정보를 얻는 등의 PoC는 하지 않았다. SQLi를 통해 웹셸을 올려 RCE 가능하다 주장했다.
recon을 하며 경로를 스캔하다가 Trace.axd 라는 이름의 파일을 발견했다. 이상해보여서 접속해보니 302 redirect로 로그인 페이지로 보냈다.
로그인하고 접속해보니(누구나 가입 가능했다) “Application Trace†라는 제목의 페이지가 떴다.
이는 다른 페이지와는 다르게 생겼다. 프레임워크나 서버의 빌트인 디버깅 페이지로 추측했다. 구글링해보니 ASP.NET의 디버깅 기능이었다.
이전 HTTP 리퀘스트의 정보를 보여주는 기능이었다. 디폴트로는 localhost만 접근 가능한 페이지였다.
이는 누군가 설정을 수작업으로 바꿨다는 것을 의미했다.
(참고로 SSRF를 발견했을 때 가치를 높이려면 Trace.axd에 접근하면 된다)
CSRF 토큰, 세션 토큰, 비밀번호 평문, 이메일, 유저네임, 주민번호 등이 노출되었다.
더 큰 버그를 찾기 위해서는 테스트 계정만으로는 부족했다. 앞에서 얻은, 더 높은 권한을 가진 계정에 세션 토큰만 바꾸어 접근했다.
그리고 파라미터들에 SQLi나 XSS 페이로드를 넣어 테스트했다.
그렇게하여 위 SQLi를 찾았다.
tags: wstg-inpv-05, bughunting, sqli, severity high, web hacking