rTorrent 에서의 흥미로운 공격이 확인되어 해당 공격을 확인해보려했으나,,,
조사를 위해선 좀더 준비가 필요할 것 같아 오늘 확인되었던 eval-stdin.php 원격코드 실행 취약점에 대해 확인해보고자 합니다
우선 공격로그는 아래와 같았습니다.
POST /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1
Host : x.x.x.x:80
User-Agent: Mozilla/5.0 ~~
Content-Length:14
Accept: */*
Accept-Language: en-US,en;q=0.5
Content-Type: application/x-www-form-urlencoded
Accept-Encoding:gzip
<?=md5(9841)?>
해당 취약점 확인을 위해 요청 데이터 안에서의 조사를 해봅시다...
일단 phpunit이란 php 단위 테스트 프레임워크라고 하네요.
Raw Data를 봤을 때는 해당 프레임워크에 위 경로로의 요청에서 php 구문을 삽입 가능한 취약점으로 보입니다.
칼리에서 해당 프레임워크를 대상으로 하는 exploit 이 있나 확인해봅시다.
없네요...
exploit-db에서도 확인되지 않아 곤란한 상황입니다.
우선 해당 취약점의 cve 코드를 확인해봅시다.
구글 서치를 해보니 CVE-2017-9841로 확인되었습니다.(위의 md5(9841)은 해당 CVE 코드를 주입해서 코드 삽입이 가능한지만 확인하는 용도로 기입된 것으로 추측되네요)
github에서는 있는지 확인해봅시다.
원하는 결과가 좀 나왔습니다.
맨밑에 있는 Python 코드를 봐보겠습니다.
대상경로가 되는 phpunit의 eval-stdin.php 경로를 스캔한 뒤 body 값 data에 die 함수를 실행하는 것을 볼수있습니다.
해당 파이썬 코드를 그대로 kali로 옮깁니다. kali 에서는 따로 설치안해도 python이 지원됩니다.
바로 코드를 옮겨서 사용하면 되겠네요. 해당 파이썬 코드를 실행하기 위한 사용법을 읽어봅시다.
dst ip 와 포트만 기입하면 되네요 바로 kali에서 실행해보도록 하겠습니다.
우선 해당 코드를 확인했을때 해당 경로가 존재하면 요청시 die 함수를 보내도록 되어있으므로 해당 경로에 eval_stdin.php 파일을 만들어 주도록 하겠습니다.
그냥 간단한 hello world 코드만 생성하여 테스트 하는 용도로만 사용하겠습니다.
이제 위의 사용법 대로 코드를 실행하도록 하겠습니다.
아래는 결과값입니다.
제가 생성한 경로의 파일에 200 OK가 체크된 것을 확인하였습니다. HTTP 요청시 상세데이터를 확인하기위해 와이어샤크로 확인해봅시다.
아래와 같이 body 값에서 die 함수가 포함된 구문이 확인되네요.
die 함수를 통한 메시지 입력 값을 출력 후 에러 없이 종료됨. die 함수 이후 스크립트가 종료되어 이후 코드는 실행안된다고 합니다. php 원격 코드 삽입이 가능한지 체크하는 용도의 스캔성 공격으로 생각되네요. (diescan이라고도 부름.)
성공시엔 아래와 같이 확인되네요. 업무시에 정말 많이 보이는 스캔성공격이죠.
해당 스캔성 공격의 방어를 위해선 요청시 body 값에서의 die 함수를 차단할 필요가 있겠네요.
+제가 업무시 본 로그에선 die함수 삽입도있었으나 , md5및 base64방식의 인코딩 함수만 있었던 적도 있었습니다. 해당 방식의 인코딩 함수도 body값에서의 요청에 기입된 부분은 정상적인 요청은 아닐것이라고 판단됩니다. 해당 부분도 추가로 차단을 해야겠네요
또한 공격 재현시 200 OK 가 발생한다면 이후 들어올 RCE에 대해 취약할 수 있으니 담당자에게 버젼 업그레이드를 권고해야할 것 같습니다. ( 대상 버젼 PHPUnit 4.8.19 - 4.8.27 및 5.0.10 - 5.6.2)
우선 이번꺼는 여기까지...
참조
github.com/ludy-dev/PHPUnit_eval-stdin_RCE
www.cvedetails.com/cve/CVE-2017-9841/
'cert' 카테고리의 다른 글
Nagios 대상 SQL Injection - (2) (1) | 2021.04.25 |
---|---|
Nagios 대상 SQL Injection - (1) (2) | 2021.04.18 |
dotenv Scan Vulnerability(.env)- (1) (0) | 2021.03.07 |
jenkins login 페이지 스캔 (1) | 2021.03.01 |
Mozi Botnet 에서의 Command Injection Attack - (4) (2) | 2021.03.01 |