CSRF란
·
NS
CSRF(Cross Site Request Forgery, 교차 사이트 요청 위조)웹 서비스는 쿠키 또는 세션을 사용해 이용자를 식별한다. 임의 이용자의 쿠키를 사용할 수 있다면, 임의 이용자의 권한으로 웹 서비스 기능을 사용할 수 있다는 것이다. CSRF는 임의 이용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 취약점이다. 공격자는 임의 이용자의 권한으로 서비스 기능을 사용해 이득을 취할 수 있다. 예를 들면, 이용자의 계정으로 임의 금액을 송금해 금전적인 이득을 취하거나 비밀번호를 변경해 계정을 탈취하고, 관리자 계정을 공격해 공지사항 작성 등으로 혼란을 야기할 수 있다. CSRF 동작CSRF 공격에 성공하기 위해서는 공격자가 작성한 악성 스크립트를 이용자가 실행해야 한다. 이는 공격자가 ..
[Week10] XSS를 이용한 쿠키 탈취와 DOM-based XSS
·
NS
저번주는 XSS 중 Reflected XSS, Stored XSS를 배우고 실습해 봤다. Stored XSS는 악성 스크립트를 웹 서버의 DB에 저장하여 이후 웹 페이지가 이 데이터를 사용자에게 보여줄 때, 악성 스크립트가 실행된다. 게시판 글쓰기, 댓글 등 사용자 입력이 저장되는 곳에 자주 사용된다. Reflected XSS는 악성 스크립트를 포함한 URL을 생성하여 피해자에게 전달한다. 피해자가 이 URL을 클릭하면, 스크립트가 웹 서버에 용청되고, 응답 페이지에서 실행되게 한다. 검색 결과 페이지나 오류 메시지 등 사용자 입력이 즉시 반영되는 곳에 사용된다. 앞선 실습 페이지에서 Stored와 Reflected XSS 취약점이 발생하는 부분을 찾고 alert(1)을 사용해서 작동시켰다.  이번주에는..
[Week6/CTF] - SQL Injection 1
·
NS/CTF
SQL Injection 1번 문제는 주어진 사이트에서 비밀 데이터(flag)를 찾아야 한다.주어진 사이트를 접속해보면 위와 같이 검색을 할 수 있고, 검색 시 ID, Level, Rank Point, Rate를 확인할 수 있는 페이지다. 과정1 - SQL Injection 포인트 찾기flag를 찾기 위해 가장 먼저 찾아야 하는 것이 SQL Injection이 적용되는 지점을 찾아야 한다. 1번 문제답게 비교적 쉽게?(사실 대놓고..) 찾을 수 있다. 바로 검색창이다. 사실 사용자가 별다른 입력할 곳이 검색창 말고는 없기 때문에 가장 먼저 검색창에서 SQL Injection이 적용이 되는지부터 확인했다. 보다시피 검색 필터가 User ID로 되어 있으니 입력한 키워드와 서버 데이터베이스에 있는 데이터와 ..
[Week5/CTF] Secret Login
·
NS/CTF
이번 문제는 관리자 계정으로 로그인을 하는 것인데 관리자 아이디를 모른다. 일단 주어진 아이디로 http history를 확인해 봤다.이전 문제들과 요청하는 게 다른 게 없다.POST로 요청하고 GET 메서드로 index.php를 응답받는다.마찬가지로 doldol 아이디로 로그인 됐다.보통 admin 계정은 처음 로그인 로직을 구현하고 DB를 연동시킬 때 가장 처음에 추가하게 된다. 따라서 다른 row의 아이디로 로그인을 시도할 수 있는지 확인해 봤다. 먼저 로그인 로직이 식별/인증 동시라고 가정하고 doldol 또는 Ture(1=1) -> 테이블의 모든 값을 가져오게 했다. select * from member where UserId='doldol' or 1=1 # ' and Password='아무거나..
[Week5/CTF] PIN CODE Bypass
·
NS/CTF
문제 링크로 이동하면 바로 이 화면이 나온다.Fire 버튼을 클릭하면 위 처럼 나오고관리자 인증이 필요하며 인증 방법으로 비밀번호를 입력해 인증을 받아야 핵미사일을 발사할 수 있다.먼저 아무 비밀번호를 입력하고 burp로 req, res를 확인한다.서버로 요청은 이처럼 보내지고, admin_pass 부분에 내가 입력한 1234가 전달된다. Forward 시켜 웹 브라우저를 확인해 보면당연히 비밀번호가 일치하지 않는다.HTTP history를 확인해 보면 step1에step1에 해당 페이지로 이동되고step2에 해당 화면으로 이동한다. 여기서 비밀번호를 입력해서 인증 버튼을 클릭하면 GET 방식으로 내가 입력한 비밀번호를 파라미터로 전달하게 되고 step3 페이지로 이동할 것으로 예측할 수 있다. 그럼 이..
[Week5/CTF] Get Admin
·
NS/CTF
문제) Get Admin이번 문제는 admin 계정으로 로그인 성공시켜야 한다.먼저 주어진 아이디와 비밀번호로 req와 res를 확인해 본다.POST 메서드를 보내며 아이디와 비밀번호, submit을 같이 보낸다.GET 메서드로 index.php를 요청하고, Cookie에 loginUser=doldol로 아이디에 입력했던 doldol이 들어가 있다. 아마 loginUser 부분을 admin으로 변경해서 보내면 접속이 될 것 같은 느낌이 온다.일단 doldol로 로그인이 성공했다.새로 고침을 시도했을 때도 동일한 쿠키와 get 메서드를 보낸다. 이때 여기서 쿠키 부분의 loginUser를 admin으로 변경해 보겠다.두둥탁?! admin 계정으로 로그인이 성공했다. 이번 문제는 쿠키를 변경시켜 관리자 계정..
[Week5/CTF] Login Bypass 1,2
·
NS/CTF
SQL Injection을 이용한 로그인 로직 취약점 문제다.문제) Login Bypass 1로그인 페이지로 이동로그인 페이지에서 문제에서 알려준 아이디와 비밀번호로 로그인을 시도burp suite으로 웹에서 서버로 보내는 request와 response를 확인해 봤다. POST 방식으로 전송을 하며 UserId, Password, Submit의 내용을 같이 전송한다. 아마 UserId 부분을 건드리면 해결할 수 있을 것 같다. 주어진 아이디로 로그인 성공시 index.php로 redirect된다. 이제 로그인 로직에 대해 예측해 보고 그에 맞는 sql injection을 시도해 본다.SELECT * FROM User WHERE UserId='doldol' AND Password='dol1234'식별과..
[Week4] Burp Suite를 사용하는 이유
·
NS
Burp Suite란?프록시(Proxy)를 사용하여 네트워크에 통신하는 패킷을 가로채 사용자가 원하는 분석 및 조작 그리고 확인 등을 할 수 있게 도와주는 툴이다. 그 외에도 Repeater, Decoder 등 다양한 기능을 이용해 취약점을 찾는 용도로 사용한다. 프록시란?프록시(Proxy)는 대리 혹은 중계의 의미로 클라이언트(웹 브라우저)의 요청을 받아서 웹 서버와 통신하는 걸 연결해 주는 매개체다.ex) 클라이언트(웹 브라우저)가 요청을 보내면 웹 서버가 요청을 받고 요청에 대한 응답을 다시 클라이언트로 보낸다. 프록시를 사용하게 되면 클라이언트와 웹 서버 사이에 들어가게 되어 클라이언트(웹 브라우저)의 요청을 중간에 받아 웹 서버로 연결해 주고, 웹 서버가 응답한 내용을 프록시가 받아 클라이언트(..