최근 펌웨어에서는 관련 내용이 수정된 것으로 보아 이 내용을 공개해도 될 것 같습니다.

안녕하세요, 오늘은 ipTIME 공유기에서 쉘이나 리눅스 명령어를 실행하는 방법을 알려드리겠습니다.
ipTIME 공유기를 리눅스 머신으로 개조하시거나 USB에 있는 파일을 실행하고 싶으신 분들에게는 도움이 될 것 같습니다.
리눅스에 대한 배경지식이 있어야 글을 잘 이해하실 수 있습니다.

* 심각한 보안 취약점은 아닙니다. 사용자가 특정 옵션을 설정해야만 가능합니다. (대부분은 꺼져 있음)
* 공유기를 재부팅할 경우 '쉘(텔넷 서버) 실행하기' 단계부터 다시 실행해주셔야 합니다.
* 이 글은 ipTIME n704bcm(V9.42), ipTIME n604m(V9.06), ipTIME n7004ns(V9.32)에서 테스트되었습니다.
   2008년 펌웨어에서도 가능한 것으로 추정됩니다.
* 상세한 과정(디스어셈블리 등)까지 확인하고 싶으신 분은 이 링크에 있는 글을 확인해주세요.

어떻게 알게 되었는가?

ipTIME 공유기의 '고급 설정 - 기타 설정 - 원격 지원' 옵션이 무엇인지 알아보면서 알게 되었습니다.
펌웨어를 추출해서 디스어셈블리 해 보았습니다.


사용자 삽입 이미지

리눅스 명령어를 실행하는 방법

먼저, 위에서 언급했던 '고급 설정 - 기타 설정 - 원격 지원'에 가서 '원격 지원' 을 실행합니다.

다음, http://192.168.0.1/cgi-bin/d.cgi 에 접속합니다. 관리자 암호는 필요없습니다.
그러면 아래와 같이 세 개의 텍스트 입력상자와 버튼이 나타납니다. (화면이 8년 전에 있었던 백도어와 비슷하네요.)

첫 번째 상자는 확인하고 싶은 파일명,
두 번째 상자는 실행하고 싶은 명령어,
세 번째 상자는 디버그용 암호를 입력하는 용도로 사용됩니다.
아래에는 실행한 명령어의 결과를 알려주거나 파일을 보여줍니다.


사용자 삽입 이미지


테스트로 'ls' 명령어 (폴더 내용 확인)를 실행해보겠습니다.
명령어는 root(최고 관리자)권한으로 실행됩니다.

앞에서 언급한 디버그용 암호는 #notenoughmineral^ 입니다.


사용자 삽입 이미지

쉘(텔넷 서버) 실행하기

이제 텔넷 서버를 실행해 보겠습니다.
기본적으로 모든 포트가 막혀 있는데 텔넷에 접속하기 위해 23포트를 풀어줍니다.

명령어에 /sbin/iptables -A INPUT -p tcp --dport 23 -j ACCEPT 를 입력합니다.
실행에 성공했다면 아래에 아무것도 나타나지 않으며 화면이 새로고침 됩니다.


사용자 삽입 이미지


다음, 텔넷 서버를 실행하기 위해서 /sbin/utelnetd -i br0 -l /bin/sh 를 입력합니다.
대부분의 ipTIME 공유기에는 펌웨어에 텔넷 데몬이 기본적으로 포함되어 있습니다.

모델에 따라 
/sbin/at -i br0 -l /bin/sh (ipTIME n7004ns 등)
/sbin/telnetd -i 192.168.0.1 -l /bin/sh
/bin/telnetd -i 192.168.0.1 -l /bin/sh
/usr/bin/telnetd -i 192.168.0.1 -l /bin/sh
를 실행해야 되는 경우도 있습니다.


사용자 삽입 이미지


실행에 성공했다면 'telnetd: starting port: 23 ...' 과 같은 메시지가 표시됩니다.


사용자 삽입 이미지


이제 텔넷 클라이언트를 실행시켜 보겠습니다. telnet 192.168.0.1 을 입력합니다.
(윈도우 7 이상은 제어판 - 프로그램 및 기능 - Windows 기능에서 텔넷 클라이언트를 설치해야 합니다.)
비밀번호 없이 로그인이 가능합니다.


사용자 삽입 이미지


ipTIME 펌웨어는 리눅스 OS를 이용하므로 리눅스 명령어(cat, ls, cp, mv, ps 등)를 실행할 수 있습니다.
단, /etc, /var, /tmp 를 제외하고는 파일시스템이 읽기 전용(SquashFS) 입니다.
USB 지원 모델의 경우 USB가 /mnt/HDD1에 탑재됩니다.

nginx나 PHP도 컴파일만 잘 하시면 실행 가능합니다.
(실제로 n7004ns에 nginx+PHP 5.4를 실행해서 DokuWiki 같은 가벼운 프로그램을 올려 보았습니다.)
작동은 잘 됩니다만(좀 느리네요) 하드웨어의 제약 때문에 실제로 사용하긴 힘드실겁니다.


사용자 삽입 이미지


이제 당신의 공유기가 또 다른 하나의 컴퓨터가 되었습니다.^^


많은 분들의 요청으로 ipTIME n7004ns(MIPS)에서 사용 가능한 busybox, curl, nginx, php(fpm) 파일을 업로드합니다. 이 파일은 모두 정적(static) 링크되어 있으며, 모든 php extension 역시 정적 링크하였습니다. [다운로드]
 댓글
  • 프로필사진
    좋은 자료 감사합니다.
     2016/12/09 00:33
  • 프로필사진 admi_n
    잘 보고 갑니다
     2017/03/02 20:58
  • 프로필사진 Asdfqwer
    굳 좋은자료 하지만 지금은 안되네요
     2017/07/31 10:14
  • 프로필사진 고등어
    안녕하세요 지금 좋은 자료 잘읽어보앗습니다


    지금 제가 iptime 공유기와 iptime에서 나오는 nas 하드 1개짜리를 사용하고 있습니다.

    나스에 리눅스를 설치하여 원격으로 사용을 하고 싶은데 혹시 설명이 가능할 할까요??
     2017/08/15 17:28
  • 프로필사진 컴퓨터매니아
    ipTIME 나스에 사용되는 OS가 이미 리눅스입니다.
     2018/08/06 00:10
  • 프로필사진 최정우
    우오오오 감사합니다. 근데 핑은 못 때리네요 비지박스 0.60 버전 쉘로 붙어지네요 텔서버
    흠...프로세스랑 디렉터리 확인 말고 뭐 할 수 있는게 딱히 없네요 핑테스트 할 수 있는 방법도 있을까요
     2017/11/30 23:46
  • 프로필사진 컴퓨터매니아
    이메일 주소 알려주시면 ipTIME용 busybox 바이너리 보내드릴게요.
     2017/12/10 17:21
  • 프로필사진 비밀방문자
    관리자만 볼 수 있는 댓글입니다.
     2017/12/20 13:43
  • 프로필사진 컴퓨터매니아
    이메일 확인하세요.
     2017/12/24 16:22
  • 프로필사진 비밀방문자
    관리자만 볼 수 있는 댓글입니다.
     2017/12/31 12:11
  • 프로필사진 컴퓨터매니아
    게시물 하단에 업로드 하였습니다.
     2018/02/19 01:52
  • 프로필사진 비밀방문자
    관리자만 볼 수 있는 댓글입니다.
     2018/03/29 01:01
  • 프로필사진 컴퓨터매니아
    ----
    [code][root@centos iptime]# binwalk a6004nm_kr_10_068.bin

    DECIMAL HEXADECIMAL DESCRIPTION
    --------------------------------------------------------------------------------
    0 0x0 uImage header, header size: 64 bytes, header CRC: 0x6017745B, created: 2018-07-24 03:12:15, image size: 16066999 bytes, Data Address: 0x81001000, Entry Point: 0x81608270, data CRC: 0x37DE26E3, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "a6004nm"
    64 0x40 LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 9288256 bytes
    [b]3574263 0x3689F7 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 12491892 bytes, 1717 inodes, blocksize: 131072 bytes, created: 2018-07-24 03:12:10[/b][/code]
    [b] A6004NS-M 펌웨어를 분석하니 위와 같이 표시되네요. [/b]
    아래에 squashfs filesystem 이부분을 떼어서 ssh 데몬을 추가하신 후 squashfs-tools 이용하여 다시 붙이면 될 것 같습니다. 추가적인 내용을 원하시면 답글 바랍니다.
     2018/08/10 23:15
  • 프로필사진 컴퓨터매니아
    [i][운영자 각주][/i]

    [quote]ipTIME과는 관계없는 내용이지만 SK Broadband에서 기본으로 제공하는 공유기의 경우 펌웨어 업데이트 시 파일명 뒤에 [b][red];명령어[/red][/b]를 삽입하면 그 명령어가 실행이 되는 것 같습니다. 예로 [b][red]"파일명;reboot"[/red][/b] 를 입력하였더니 공유기가 재부팅 되더군요.[/quote]
     2018/08/10 23:15
  • 프로필사진 KIRI
    A6004NS SSH 살릴수 있는 방법이 있을까요? ㅠㅠ
    http://iptime.com/iptime/?page_id=16&uid=19825&mod=document
    위의 Entware 를 한번 시도해보려고 하는데 이거로는 제한사항이 있어서요...
     2018/12/24 11:06
  • 프로필사진 컴퓨터매니아
    ipTIME사가 공개한 소스코드 (http://gpl.iptime.org/gpl/HDD1/GPL) 여기에 userapps_a6004ns.tar.xz 파일을 다운로드 받아 펌웨어를 제작할 수 있을 것 같네요.

    압축파일의 [b]fs/bcmac[/b] 폴더를 참조하시면 될 것 같습니다.
     2019/01/11 00:06

               
1 2 3 4 5 6 7 ... 79