본문 바로가기

about Security/웹보안과 해킹30

[웹해킹 실습] # 파일 업로드 공격 1) LOW level 먼저 보안 레벨을 LOW로 맞추고 시작! 파일 업로드 공격을 실행할 것이므로 파일 업로드 항목으로 들어가서 Browse를 눌러 다운받은 webshell.php를 선택하여 업로드 한다. wㅌbshell ? (ㅎ..webshell) : 웹사이트를 통해 시스템 명령어를 실행할 수 있는 프로그램 Browse를 눌러 다운받은 webshell.php를 선택하여 업로드 한다. 이미지 파일이 아님에도 upload 되었으며 지금 위치에서 두 단계 상위 디렉터리에 /hackable/uploads/에 파일이 업로드 됨 (../../ 라고 되어있으므로 알 수 있다.) URL의 /dvwa/vulnerabilities/uploads/# 에서 두단계 상위로 가면 /dvwa 따라서 URL에 /dvwa/ hac.. 2020. 11. 15.
[웹해킹] # 파일 업로드 파일 업로드 공격 파일을 업로드하는 기능에 적절한 보안 대책이 되지 않았을 때 파일 업로드 취약점이 발생한다. - 아무 파일이나 업로드 할 수 있을 때 공격자는 web shell이라는 악성 파일을 업로드하고 시스템명령을 실행하여 시스템에 침투할 수 있다. > web shell : 웹을 통해 시스템 명령어를 실행할 수 있는 웹 페이지의 일종 > 파일 업로드 공격 대응 - 꼭 필요한 파일 형식만 업로드되도록 파일의 확장자와 내용을 검사 - 업로드된 파일을 사용자가 접근 불가능한 경로에 저장 - 파일이 업로드되는 디렉터리의 실행 권한을 제거 - 업로드된 파일을 다른 확장자로 변경 : 확장자를 제거하면 해당 파일에 접근해도 코드가 실행되지 않도록 할 수 있다. - 업로드된 파일의 이름을 랜덤하게 재생성하여 저장.. 2020. 11. 15.
[웹해킹 실습] # 파일 인클루전 공격 1) LOW level 먼저 보안 레벨을 LOW로 맞추고 시작! 파일 인클루전 공격을 하기 위해 파일 인클루전 항목으로 들어가자 여기서의 소스코드를 확인하면 이렇게 변수 page을 통해 사용자의 입력값이 GET 메소드로 전달됨을 알 수 있다. 잊지말자 여긴 low level 이야 넘 쉽지.. 페이지의 file1.php를 한 번 눌러보았다. URL에 내가 열려고 한 파일의 이름이 변수 page에 입력됨을 확인 (1) LFI (로컬 파일 인클루전) : 웹서버에 원래 존재하는 파일을 인클루드 한다. + Path Traversal 공격 : ../ 를 이용하여 상위 디렉터리로 접근하여 타 파일을 인클루드 (../ : 현재 위치보다 하나 상위의 파일로 이동) URL의 page= 다음에 ../../../../../e.. 2020. 11. 12.
[웹해킹] # 파일 인클루젼 공격 파일 인클루젼 공격 파일 인클루젼 공격 : 주로 PHP application을 대상으로 발생한다. ? PHP에 존재하는 include 함수는 다른 파일을 소스 코드에 직접 include할 수 있는 기능으로 Include할 파일을 외부 사용자가 설정할 수 있는 경우 파일 인클루드 취약점이 존재하게 된다. 파일 인클루젼 공격의 종류 > LFI (Local File Inclusion, 로컬 파일 인클루젼) 공격 대상의 서버에 있는 파일을 include하여 공격한다. > RFI (Remote File Inclusion, 리모트 파일 인클루젼) 외부 서버(주로 공격자가 관리하는)의 악성 코드를 include하여 공격한다. 웹 어플리케이션이 file.php를 인클루드 -> 이때 웹 요청의 page 파라미터를 통해 .. 2020. 11. 12.
[웹해킹] # 커맨드 인젝션 # 커맨드 인젝션 # : 웹을 통해 시스템명령어(command)를 실행하는 공격 (SQL 인젝션과 더불어 인젝션 리스크와 관련된 주요 공격 기법.) 커맨드 인젝션을 통해 해커가 웹내부에서 시스템 명령어를 실행할 수 있어 심각한 영향을 초래할 수 있다. (ping : 입력된 ip주소의 시스템이 현재 동작하고 있는지 확인할 때 사용하는 커맨드) è ip주소뒤에 ;을 붙인뒤 원하는 커맨드를 추가하면 시스템이 명령어입력으로 인식하여 해커가 입력한 시스템 명령어까지 실행한다. ++ ip주소만 입력했을 때 ++ low단계에서 커맨드 인젝션 입력창에 127.0.0.1;cat /etc/passwd 라고 입력 ping명령어 외에도 cat /etc/passwd를 실행했다. ---이때 웹페이지의 코드를 확인해보자 ping .. 2020. 10. 8.
[웹해킹문제풀이] # webhacking.kr 워게임 18번 처음에 들어가면 이렇게 나와 있어서 일단 임의의 값으로 흔히 쓰는 1을 입력해보았다. 그랬더니 hi guest라고만 출력되고 아무말이 없다. 그래서 다른 임의의 값 9를 입력해보았다. 아무런 변화가 없다. 이때 알았어야 했는데!!! 보다시피 캡처도 URL을 빼고 캡처한 걸 보면 알겠지만 URL이 중요하다고는 생각도 못했다ㅋㅋ 아무튼 계속 해보자. 앞서 배운 가장 기본이 되는 SQL쿼리 조작 문장인 1' or '1'='1 을 입력해보았다. 좀 배운건 뭐든 써봐야 직성이 풀리는 성격 우왕 뭔가 색다른 문장이 나온다. no hack 뭔가를 더 알아내기 힘들다고 판단 source코드를 보러갔다. 소스 코드를 볼수 있는 버튼은 하단에 연두색으로 있다 내가 중심적으로 볼 건 페이지 디자인이 아니므로 php문만 캡처.. 2020. 10. 4.
[웹해킹] # sqlmap 자동화 공격 * sqlmap 프로그램 : SQL인젝션 공격 프로그램 중 가장 대중적으로 사용되며, 오픈 소스 프로젝트이다. 이 프로그램을 이용하여 SQL 인젝션을 자동 공격하고 원하는 정보를 탈취한다. 1) 칼리 리눅스의 좌측 상단 아이콘을 누른 후 -> 3.Web Application Analysis를 선택 -> sqlmap 선택 OR 2) 터미널에 명령어를 입력하여 실행 가능 (sqlmap -h를 입력하면 사용법과 옵션 확인 가능) # sqlmap 프로그램 옵션 알아보기 -u : 필수 옵션으로 공격을 시도할 URL 을 지정 --cookie : 로그인이 필요한 경우, 로그인하고 난 다음 발급된 세션 .. 2020. 10. 3.
[웹해킹] # 블라인드 SQL 인젝션_level.low 일반적인 쉬운 SQL인젝션은 정상적이지 않은 입력에 대해 사용자에게 쿼리문 오류를 출력한다던지 쿼리 조작문에 대한 결과가 나와 정보를 캐낼 수 있는 반면, !!! 비정상적인 입력에 대해 별다른 오류도 나지 않고 어짜다 SQL 쿼리문을 사용함을 알게되어 조작하여도 사용자의 정보를 화면상으로 출력하지 않기 때문에 일반적인 SQL 인젝션으로는 정보를 캐낼 수가 없는 경우가 있다. 이럴때, SQL 쿼리문을 사용하고 입력값에 따라 id의 존재 유무를 알려주는 결과가 달라짐을 확인할 수 있다면 블라인드 SQL 인젝션 공격을 실행한다. 실습을 통해 알아보자. 우선 실습 환경 준비! dvwa에 들어가서 보안레벨을 low로 설정한 뒤 블라인드 SQL 창으로 들어가자. 우선 블라인드SQL인젝션 실습에 들어가기 앞서 일반적.. 2020. 10. 3.
[웹해킹] # SQL 인젝션 SQL인젝션은 웹 공격 중에 가장 잘 알려져 있는 공격으로 가장 심각한 리스크의 공격으로 선정된 인젝션 리스크의 대표적인 공격이다. SQL인젝션 : 공격자가 데이터베이스에 전송되는 SQL쿼리문을 조작하여 데이터를 변조하거나 허가되지 않은 정보에 접근. # WHERE 구문 우회 - WHERE구문 : WHERE 이하의 구문을 만족하면 쿼리문을 실행한다. ex) SELECT first_name, last_name FROM users WHERE ID='1' //id=1 이 참이면 first_name과 last_name의 목록을 가져와라. 이런 WHERE문의 성격을 이용하여 정보를 캐낸다. - WHERE 구문 우회 : WHERE의 조건이 항상 참이 되도록 퀴리를 조작하여 무조건 정보를 출력하도록 한다. 입력값 :.. 2020. 10. 3.