공유기 루트쉘 획득하기

인터넷 설치하면서 생긴 공유기(DVW-2300N)를 사용하면서 문득 루트쉘을 열어보고 싶어졌다.

보통 같으면 뚜껑따서 UART 연결하거나 롬떠서 작업을 했겠지만 잠깐 살펴보면서 자동업데이트 기능이 존재하는것을 확인하였다.
브릿지로 연결해봤더니 “http://180.182.38.50:8080/tms/servlet/getApProvInfo?macAddr=18c50122XXXX&downType=1&ver=F1.0&cfgac=6767&cfver=Davolink_DVW-2300N_1.36.50CJ_CFG&fwac=7539&fwver=Davolink_DVW-2300N_1.40.50CJ&model=DVW-2300N&vendor=Davolink&cferr=0&fwerr=0”
요청을 확인할 수 있었고 456bytes 의 바이너리 파일을 획득하였다.
대충 봤을때 암호화 or 인코딩이 되어 식별이 불가능했으나 downType의 인자를 1이 아닌 0으로 주었더니 아래의 텍스트를 확보할 수 있었다.

설정파일과 펌웨어 파일의 주소를 확보할 수 있었고 펌웨어의 경우 realtek 표준펌웨어로 보여졌다.
설정파일에는

이런 내용이 담겨있었고 Web접근에 사용가능하였다. (유저비밀번호 백날 바꿔봐야 이런 백도어있으면 무의미하다)
cjroot로 접근하였더니 네트워크/인터넷설정 탭에서 Telnet 활성화메뉴가 나타났으며 활성화를 시켜도 텔넷접속은 되지 않았다.


펌웨어를 분석해보니 web shell이 존재하여 이를 이용하여 몇가지 작업을 해볼 수 있었다. (*아래 URL접근은 cjadmin으로도 가능하였다)

기존의 데몬을 죽이고 포트와 쉘을 다시 지정하니 텔넷접근이 가능하였다.

아이디와 패스워드를 확보하기위해 열심히 펌웨어를 분석했으나 간단하게도 답은 cjroot에 CJHV_VoIP_0601 였다.
(인터넷이 연결되지 않으면 “**********” 을 아이디와 패스워드로 사용하는것으로 보인다)
쉘 확보하고 간단한 정보를 띄워 보았다.

뭔가 하기에는 리소스가 너무 열악하다…
심지어 chmod도 없어서 cp신공으로 바이너리 몇개 실행시켜보고 끝냈다.

잠깐 분석? 하면서 miniupnpd가 외부포트로 개방되어 있는것을 확인하였다.
TCP 포트는 부팅시에 랜덤하게 결정되는것으로 보이며 UDP는 1900고정개방인듯 하다.

정상적인 사용을 위해 upnp와 자동업데이트는 사용하지 않는것으로 설정하였다.

 

근데 이걸 내가 왜 분석한거지…?

Leave a Reply

Your email address will not be published. Required fields are marked *