보안/웹 스터디 라이트업 16

file vulnerability 정리

File Upload Vulnerability공격자의 파일을 웹 서비스의 파일 시스템에 업로드하는 과정에서 발생하는 보안 취약점원하는 시스템 커맨드를 실행하는 원격 코드 실행 취약점을 유발이용자가 업로드될 파일의 이름을 임의로 정할 수 있을 때 발생 Path Traversal과 악성 파일 업로드로 분류  Path Traversal업로드에 존재하는 이러한 제약을 우회하여, 임의 디렉터리에 파일을 업로드할 수 있는 취약점 악성 파일 업로드 취약점이용자가 파일을 업로드할 때, 이를 제대로 검사하지 않아서 발생하는 취약점   File Download Vulnerability웹 서비스의 파일 시스템에 존재하는 파일을 다운로드 하는 과정에서 발생하는 보안 취약점 설정 파일, 패스워드 파일, 데이터 베이스 백업 본 ..

command injection 정리

인젝션(Injection): 악의적인 데이터를 프로그램에 입력하여 이를 시스템 명령어, 코드, 데이터베이스 쿼리 등으로 실행되게 하는 기법 Command Injection : 이용자의 입력을 시스템 명령어로 실행하게 하는 취약점 명령어를 실행하는 함수에 이용자가 임의의 인자를 전달할 수 있을 때 발생   명령어 치환``안에 들어있는 명령어를 실행한 결과로 치환됩니다. $()안에 들어있는 명령어를 실행한 결과로 치환됩니다. 이 문자는 위와 다르게 중복 사용이 가능명령어 연속 실행 && 한 줄에 여러 명령어를 사용하고 싶을 때 사용합니다. 앞 명령어에서 에러가 발생하지 않아야 뒷 명령어를 실행||  한 줄에 여러 명령어를 사용하고 싶을 때 사용합니다. 앞 명령어에서 에러가 발생해야 뒷 명령어를 실행명령어 구..

session

로그인정보 11-15행 username이 admin일 때 flag 나옴 34-47, 24행을 보며 로그인 방식 파악한다 sessionid라는 쿠키를 이용한다.(51행) 랜덤한 1바이트의 16진수 사용 브루트포스 공격으로 admin의 session id를 찾기 위해 버프스위트를 활용한다 HTTP history에서 sessionid 쿠키를 저장하는 요청 기록은 무엇인가? url이 /인 요청기록 해당 요청 기록의 Request 정보를 Intruder로 보낸다 sessionid 쿠키의 값 부분을 타겟으로 설정한다 Payload 정보를 설정한 후 브루트포스 공격을 시행하여 admin의 sessionid 값을 알아낸다 다시 HTTP history로 돌아와서 요청 기록을 Repeater로 보낸다. sessionid ..

pathtraversal

해당 페이지에 대한 코드는 42-49행에 있다 7-18행을 보고 값을 입력해본다(guest, guest) (admin, admin) userid 입력란에 입력한 값은 /api /user/{userid} 로 가공된다(48행) flag는 어떤 경로에 위치하는가? /api/flag flag가 위치하는 경로로 접근하려면 userid 입력란에 어떤 값을 입력해야 하는가? ../flag userid 입력란에 ../flag를 입력해본다. info가 뜨지 않는 이유를 확인해보기 위해 버프스위트에 들어간다 history에서 요청 기록을 찾고 request에서 페이로드를 확인한다 페이로드에 userid의 값이 undefined로 전달된다 request정보를 repeater로 보내 userid 페이로드의 값을 ../flag..

[Dreamhack] image-storage 라이트업

서버를 생성한다 파일 업로드하는 부분에 확장자 .php 파일을 업로드한다 내용은 ls는 어떤 파일과 디렉토리가 있는지 확인하는 명령어 저장되었다고 뜬다 list 부분에 들어가면 내가 업로드한 파일이 보인다 index.html과 upload.php 파일이 올라갔다 cat: 파일 내용 확인 flag.txt에 플래그가 있다 이렇게 하면 플래그가 나온다

[Dreamhack] web-ssrf 라이트업

소스코드와 서버를 연다. url에 http://Localhost:8000/flag.txt를 입력해본다 버퍼스위트를 열고 아까 생성한 서버를 복붙한다. 프록시- 히스토리에서 패킷이 보인다 /img_viewer 중 POST로 들어간다. 우클릭해서 인트루더로 보낸다. 인트루더에서 설정을 한다. 1500-1800까지 돌면서 Length가 다른 값이 뜰 때까지 기다린다... 난 1690이 나왔다. 개발자도구 elements에서 링크를 찾아서 복사한다. base64사이트에 들어가서 앞부분을 지우고 붙여넣기한다. 아래에 플래그가 뜬다

[Dreamhack] command-injection-1 라이트업

서버를 생성하고 소스코드를 확인한다. ; 앞 명령어의 에러 유무와 상관없이 flag.py를 읽는다 8.8.8.8";cat flag.py# 을 입력한다 요청한 형식과 다르다는 문구가 뜬다. 개발자도구에서 맨 왼쪽에 있는 아이콘을 에러 부분으로 드래그해서 코드를 확인한다. pattern에 제약이 걸려 있기 때문에 지워준다 새로고침하면 플래그가 나온다