14주차 수업
*CSRF
정의
> 피해자 서버로 공격자가 원하는 요청을 보내게 만드는 공격
공격 시나리오
- Link
(POST Method방식이면) form 태그 삽입하는 XSS 취약점과 연계해서 사용함
-(임의의 데이터를 탈취하거나 토큰이 필요하다면) iframe을 이용함
CSRF 대응 방안
상황에 따라 다르게 맞는 방법을 사용해야함
> 인증정보를 추가하는 것(중요정보 바꾸는 것등)
> 레퍼러 검증(글쓰기 등 중요허자않은 것등) (API형식으로 개발한다. but 레퍼러 검증을 하면 확장성이 떨어짐)
*File Upload
*정의
공격자가 원하는 임의의 파일을 업로드하는 공격
*발생 원인
> 파일을 업로드 받을 때
> 검증, 검사를 안한다.
ex)
프로필 사진
이미지 파일만 받으려고 만든 서비스 임
but 다른 이상한 파일들도 올라갈 수 있다.
발생위치
>파일을 업로드 할 수 있는 곳 어디든지 가능하다.
-burp suite로 확인하기
----------------------------------------------------------------------------------------------
--File Upload 공격으로 뭘 할 수 있는데?
* 공격 시나리오
(제한이 없이 파일을 올릴 수 있는 곳이 있다)
Unlimited
서버측 실행 파일을 업로드 할 수 있다.
>php파일(서버에서 실행되는 서버측 파일)
>서버에서 우리가 원하는 코드를 실행할 수 있다.
>우리가 서버에게 원하는 명령을 내릴 수 있다.
그렇게 되면 그 서버는 내꺼다.
>그 서버를 장악할 수 있다.
windiws =-> exe파일
ex)
> test.php (php코드인데 너무 나쁜 코드를 작성해서 이것을 업로드한다.->test.php파일을 주세요라고 서버에 요청하면
<?php 된다. 그럼 우리가 삽입했던 나쁜 코드가 서버 측에서 실행된다.)
ejfiwejfiewijf
fjeijfiwefj
?>
normaltic.com/test.php
ㅇ
-DoS(서비스 거부)공격 -백도어
-웹 셀 - 악성 프로그램 설치 파일
-악성코드 업로드
----------------------------------------------------------------------------------------
*Server Side Scropt VS Client Side Script(
백엔드 vs 프론트 엔드
서버측 실행 코드(php,asp,jsp,python, nodejs .. 웹 브라우저 실행 코드(html,css,javascript)
XSS
php는 서처측 실행 코드라서 서버에서 다 실행 후 실행 결과를 요청자에게 준다
2. Phishg : HTML 파일을 업로드
(파일 업로드 공격이 가능하다면)
login.php 만들었다.
(그런데)naver.com/login.php 로 올라가게 되어있다.
3.Deface 공격
>index 파일 (덮어쓰기, 메인 퍼이지 바꾸는 것)
4.XSS
>Stored XSS
(ex)
메인페이지를 덮어쓰기래서
<script>
aifhaf;afjpa;fa;f
asfjap;faaksdf’;
</script>
Stored XSS 공격을 할 수 있다.
5. DoS(도스 공격)
-----------------------------------------------------------------------------------------------
-서버측 실생 파일
: Web Shell (인터넷 상에서 명령을 내리게 하는 것)
ex)
<?php
echo system($_GET[‘cmd’[];
?>
웹 해킹
-- --
침투테스트 (모의해킹과 영역이 조금 다름 이런 게 있구나 정로로 알고 지나가자)
> shell.
> root 권한
*웹쉘 공격의 핵심
웹 서버측 실행 코드를 업로드 할 수 있어야 함
2.업로드된 파일의 경로를 알고 있어야 함
*경로 확인
- 업로드한 파일이 출력되는 곳을 확인한다.
업로드한 파일의 경로를 알아내는 이유
-> 알아야 요청을 하고 >요청해야 실행하기때문임
XSS, CSRF : Client 공경
SQL Injection. --
| - 서버측 공격
Web shell. --
-----------------------------------------------
jsp언어에서는 jsp언어로 코드를 작성해서 올릴 수 있다 php처럼
jsp는 java 파일로도 실행시킬 수 있다.
-핵심은 서버에서 실행할 수 있는 파일을 올린다.-
파일 업로드 약한 대응?
>업로드 되는 파일을 검사하자! 제한!
MIME
Content-Typey: text/php (=검사하는 것)\
실행 x
/files/avatars/‘~~~~
실행x
*php 확장자
-> PhP, pHp, pHP
*.phtml, .php3, .php5
*jsp
-> jspx, jsw
=> 결론 다른 확장자를 사용할 수 있다.
*정상적인 이미지
normaltic.png
-> hex editor
핵스 값이 막 나오는데 그 중간이나 끝에다가 아래 문장을 쓰면 된다,
<?php system($_GET[‘cmd’]);?>
그리고 확장자를 png에서 php로 바꾼다. 그리고 난 후 파일을 올린다.
File Signature
: jpeg, png, pdf, img 등
**
서버측 실행 코드를 업로드 하는 이유는
->서버에서 실행하기 위해서이다,
-> 서버에서 실행할 수 있도록 업로드 해야한다.
그렇기 때문에 webshell.png라고 올려도 실행이 안된다, why? -> 서버에서 실행할 수 있는 언어가 없기 때문
webshell.php로 올려야 실행됨
*파일 업로드 취약점을 찾을 때 주의할 점
모의해킹을 할 때 주의할 점
-웹 셀을 올리면 안된
-> 노매너임
테스트 할 때 웹셀을 올리는 이유
업로드 한 파일을 실행할 수 있는지 체크
XSS : alert(1) 크사 취약점 시 얼럿을 띄우는 이유는 스크립트가 실행되는 것을 보여주려고 올리는 것임 poc임
poc
<?php
echo “hello”
?>
실행이 되었다면 hello만 출력되고 안되면 <php전체가 나옴
증명이 끝나고 협의하는 것임
웹셀을 올려도 되는지 협의 후 올려도 된다고 할 때 올리는 것임 -> 매너임
웹셀 테스트 후 바로 삭제해야험
담당자엑세 삭제 요청을 해야함 –체크
14주차 과제
웹서버 개발 제출
웹쉘 문제 풀기
3.개링 웹쉫 서버 :업로드
+reverse shell 연결해보기