*가상환경 구축 후 실습을 진행할 것을 권고드리며 대외 서버 및 홈페이지에 해킹 시도는 불법입니다.
OS Commnad 인젝션
- 시스템 명령어를 쿼리문에 주입하여 취약한 변수를 통해 서버 운영체제에 접근하는 공격
DNS lookup의 도메인에 대한 IP를 확인 시켜주는 웹 사이트가 존재한다.
- 해당 웹 서버의 입력 시 실행 코드를 확인한 결과 시스템 명령어 실행 함수인 shell_exec를 통한 nslookup 명령어를 실행하여 홈페이지에 출력 결과를 보여주는 것을 확인했다.
- shell_exec의 실행 명령의 취약점을 사용하기 위해 파이프(|)를 사용하여 공격자가 임의의 명령어를 실행을 한다.
- 명령어를 추가 입력하는 파이프를 사용하여 웹 사이트에 입력한 결과 서버에서 명령이 실행되고 홈페이지에 출력이 된다.
PHP Code 인젝션
- phpi.php 파일 변수 message에 입력값 검증 미흡으로 시스템 정보 호출 가능
=> 위 홈페이지는 message parameter를 사용하여 홈페이지에서 사용자가 원하는 임의의 메시지를 출력가능하다.
취약점
=> 파라미터를 시스템 함수로 호출함.
=> message patameter 값에 추가로 시스템 호출 함수를 사용하여 명령어를 실행 후 서버의 정보를 확인할 수 있다.
SSI(Server Side Includes) 인젝션
HTML 페이지의 전체 코드를 수정하지 않고 공통 모듈 파일로 관리하며 동적인 내용을 추가하기 위해 만들어진 기능으로 주로 방문자 수를 확인하거나 홈페이지 로고 수정 등 간단한 기능을 추가할 때 사용한다. 또한, '.shtml' 확장자 파일을 사용한다.
악성 스크립트: <!--#echo var="DATE_LOCAL" -->
- 악성 스크립트를 사용하여 서버에서 현재 시각을 확인할 수 있다.
- 홈페이지의 취약점으로 시스템 명령어를 사용하여 pwd, find를 사용하여 현재 경로의 파일 목록 확인가능하다.
취약점
=> 입력값에서 받아오는 값들이 하드코딩되서 실행하며 서버 사이드에서 필터링을 하지않고 출력한다.
활용 방안
- 취약한 서버에 명령어가 실행할 수 있다면 공격자가 인바운드로 웹쉘을 접근하는 것이 아닌 서버에서 공격자로 아웃바인드로 통한 리버스쉘을 사용하여 원격 연결을 할 수 있다.
1. 공격자 서버에서 netcat 명령어를 사용하여 서버 리스닝
2. 취약한 홈페이지에서 시스템 호출 명령어를 사용하여 netcat 명령어를 수행하여 공격자 컴퓨터로 connect 시도
3. 연결 성공 시 공격자의 컴퓨터에서 희생자 서버로 원격 연결이 성공하여 원하는 명령어를 실행할 수 있다.
4. 연결 성공 후 권한 상승을 시도하고 백도어 설치 및 주기적 접근을 하기 위해 crontab 목록에 공격자 서버와 연결시도하는 nc 명령어를 등록한다.
대응방안
- 입력값 검증 시 escapeshellcmd함수를 사용하여 커멘드가 인젝션이 되지 않도록 한다.
- 입력값에 대한 필터링을 수행
*escapeshellcmd () 는 임의의 명령을 실행하도록 쉘 명령을 속이는 데 사용될 수있는 문자열의 모든 문자를 이스케이프합니다. 이 함수는이 데이터가 exec () 또는 system () 함수 또는 백틱 연산자 로 전달되기 전에 사용자 입력에서 오는 데이터가 이스케이프되었는지 확인하는 데 사용해야합니다.
'모의해킹' 카테고리의 다른 글
[BeeBox] 인젝션 공격 유형(AJAX) (0) | 2021.06.24 |
---|---|
[BeeBox]웹해킹 HTML 인젝션 - Stored(POST) (0) | 2021.05.07 |
[BeeBox]웹해킹 HTML 인젝션 - Reflected(GET &POST) (0) | 2021.05.06 |