php 명령 주입 공격
명령 주입 공격
명령 주입 공격(Command Injection)은 해커 가 HTML 코드 입력 메커니즘 결함(예 를 들 어 효과 적 인 검증 제한 이 없 는 표 필드)을 이용 하여 웹 페이지 의 동적 생 성 을 바 꾸 는 내용 을 말한다.시스템 명령 을 사용 하여 원 격 데 이 터 를 사용 하여 실행 할 명령 을 구성 할 수 있 습 니 다.
PHP 에 서 는 다음 네 가지 함 수 를 사용 하여 외부 응용 프로그램 이나 함 수 를 실행 할 수 있 습 니 다:system,exec,passthru,셸exec。
정보 출처-합 천 망 안 실험실
명령 공격 은 왜 구멍 이 생 깁 니까?
우선,응용 프로그램 은 시스템 명령 을 실행 하 는 함수,예 를 들 어 위 에서 말 한 phop 중의 system 등 함 수 를 호출 해 야 하기 때 문 입 니 다.그 다음 에 사용자 가 이 함수 의 인 자 를 제어 할 수 있 으 면 일부 악의 적 인 명령 을 정상 적 인 명령 에 연결 한 다음 에 명령 집행 에 구멍 이 생 길 수 있다.
그래서 우 리 는 명령 수행 에 필요 한 조건 을 얻 을 수 있다.
다음은 실험 을 시작 하 겠 습 니 다.
1.원 격 서버 에
whoami
명령 을 실행 합 니 다.(whoami 명령 은 현재 사용자 의 신분 을 조회 하 는 명령 입 니 다.예 를 들 어 관리자 나 일반 사용자)실험 환경 을 열 어 다음 그림 에서 보 듯 이 우 리 는 그것 으로 하여 금
whoami
명령 을 집행 하 게 해 야 한다.돌아 온 결 과 를 보면 서버 는 윈도 우즈 시스템 이 고 뒤에 보충 이 있 을 것 이다.
서버 의 핵심 코드 는 다음 과 같 습 니 다.
프로그램 이 GET 매개 변수 ip 를 가 져 온 다음 에 system()함수 에 연결 하여 system()함수 로 ping 기능 을 수행 합 니 다.그러나 여기 서 매개 변수 ip 를 여과 하고 검 측 하지 않 아서 파이프 부 호 를 이용 하여 다른 시스템 명령 을 수행 할 수 있 습 니 다.그 다음 에 파이프 문자 의 보충 이 있 습 니 다.
"|"windows 에서 앞의 결 과 를 뒤의 입력 으로 생각 하고
ip=127.0.0.1|whoami
으로 시도 해 보 자 는 뜻 입 니 다.뒤의 명령 이 성공 적 으로 실행 되 었 습 니 다.우리 의 신분 을 얻 은 것 은 system 입 니 다.
'&'는 windows 에서 두 명령 을 함께 수행 하고 앞에서 실행 한 다음 에
ip=127.0.0.1&whoami
으로 해 보 자 는 뜻 이다.whoami
명령 이 성공 적 으로 실행 되 지 않 았 음 을 알 수 있 습 니 다.그 이 유 는 ulr 에서'&'는 연결 기호 로'%26'으로 바 뀌 기 때 문 입 니 다.그러면 우리 가'%26'을 직접 사용 하면 진정한'&'로 바 뀔 수 있 기 때문에 ip=127.0.0.1%26whoami
을 사용 하여 다시 시도 해 보 세 요.명령 이 성공 적 으로 실행 되 었 습 니 다.서버 에서 두 명령(ping 과 whoami)을 실행 한 것 을 볼 수 있 습 니 다.우리 의 신분 은 system 입 니 다.
"||"windows 에 서 는 앞의 실행 이 실 패 했 을 때 뒤의 것 을 실행 합 니 다.
ip=127.0.0.1||whoami
으로 시도 해 보 겠 습 니 다.이번
whoami
명령 은 실행 되 지 않 았 습 니 다.이것 은 앞의 명령 이 실 행 될 수 있 기 때 문 입 니 다.우 리 는 앞의 명령 을 실행 할 수 없 는 것 으로 만 들 면 다음 명령 을 자동 으로 실행 할 수 있 습 니 다.앞에서 제공 한 핵심 코드 에 따라 정상 적 인 ip 주소 만 들 어 오 면 명령(ping)이 성공 적 으로 실 행 될 것 이라는 것 을 알 고 있 습 니 다.그래서 우 리 는 ip 주 소 를 없 애 보 겠 습 니 다.ip=||whoami
으로 해 보 겠 습 니 다.명령 실행 에 성 공 했 습 니 다.우리 의 신분 은 system 입 니 다.
2.원 격 서버 로 하여 금 ipconfig 명령 을 실행 하 게 합 니 다.
서버 의 키 코드 는 다음 과 같 습 니 다.
보충:
preg_match()함 수 는 정규 표현 식 과 일치 하 는 데 사 용 됩 니 다.1 을 성공 적 으로 되 돌려 주 었 습 니 다.그렇지 않 으 면 0 을 되 돌려 줍 니 다.
preg_match()매 칭 이 한 번 성공 하면 매 칭 이 중단 되 며,모든 결과 의 매 칭 을 실현 하려 면 preg 를 사용 해 야 합 니 다.match_all()함수.
header()함수 의 역할 은 클 라 이언 트 에 원본 HTTP 헤더[Http Header]를 보 내 는 것 입 니 다.헤더(header)는 서버 가 HTTP 협의 로 HTML 자 료 를 브 라 우 저 에 전송 하기 전에 보 낸 문자열 로 헤더 와 HTML 파일 사이 에 빈 줄 로 구분 해 야 합 니 다.
이 코드 는 ip 주 소 를 간단하게 걸 러 냈 습 니 다.일치 하면 아래 system 명령 을 실행 합 니 다.일치 하지 않 으 면 아래 명령(즉 ping)을 실행 할 수 없습니다.즉,우리 가 시작 할 때 본 인터페이스 입 니 다.
그래서 우 리 는 서버 에 ipconfig 를 실행 시 키 려 고 합 니 다.먼저 생각 한 아 이 디 어 는 오류 가 발생 하고 실행 에 실 패 했 습 니 다.더 블 파 이 프 를 사용 하여 ipconfig 를 실행 하 게 하 는 것 입 니 다.그 다음 에
ip=127.||ipconfig
으로 시도 해 보 겠 습 니 다.성공 하 다.
마찬가지 로 우 리 는 단일 파이프(
ip=127.0.0.1|ipconfig
)를 사용 하여 시험 해 보 자.성공 하 다.
계속,우 리 는"%26"(
ip=127.0.0.1%26ipconfig
)을 사용 하여 시험 해 봅 시다.두 명령 을 실 행 했 습 니 다.성공!
지식
우 리 는 ping 명령 을 통 해 결과 의 TTL 항목 을 되 돌려 서버 의 운영 체 제 를 볼 수 있다.LINUX―64 WIN2K/NT―128 WINDOWS 시리즈―32 UNIX 시리즈―255(앞 은 운영 체제,뒤 는 TTL 값)는 ping 을 통 해 결 과 를 되 돌려 주 고 TTL 값 이 어떤 것 과 가장 가 까 운 지,서버 는 어떤 운영 체제 인지 볼 수 있다.
우리 핑 한번 해 보 자.바 이 두 한번 해 보 자.
TTL 값 이 52 이면 64 와 12 개의 경 로 를 뛰 어 넘 기 때문에 서버 는 LINUX 일 것 입 니 다.
다음은 자주 사용 하 는 파이프 부 호 를 보충 합 니 다.
Windows 시스템 이 지원 하 는 파이프 문 자 는 다음 과 같 습 니 다.
위 에서 말 한 것 은 편집장 이 여러분 에 게 소개 한 php 명령 주입 공격 에 대한 상세 한 통합 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.