강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

파일내용확인실무 6편: more에서 쉘명령어 실행

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

파일내용확인실무 6: more에서 쉘명령어 실행

 

 

 

 

 

more명령어상태를 빠져나가지 않고 more명령어가 실행중인 상태에서 원하는 쉘명령어를 실행할 수도 있다.

 

 

 

 한때는 root소유의 SetUID로 설정된 more명령어 때문에 가끔씩 해킹의 수단으로도 사용되었던 방법이다.

 

 

 

 , more명령어 실행된 상태에서 리눅스 명령어를 실행하려면 다음과 같이 하면 된다.

 

 

 

 

 

      !쉘명령어

more
명령어로 EXAMPLE이라는 파일을 실행하였다.

 

 

 

 여기서는 가장 기본적인 명령어인 “ls -l /home/bible”이라는 명령어를 수행한 예를 보인 것이다.

 

 

 

 

 

[root@sulinux ~]#more EXAMPLE

            Writing scripts for Midnight Commander's external vfs

 

IMPORTANT NOTE: There may be some bugs left in extfs. Enjoy.

 

Starting with version 3.1, the Midnight Commander comes with so called

extfs, which is one of the virtual filesystems. This system makes it

possible to create new virtual filesystems for the GNU MC very easily.

 

Such work has two basic steps:

 

Editing $(libdir)/extfs/extfs.ini.

Creating a shell script/program to handle requests.

(Note: $(libdir) should be substituted for actual libdir path stored when

configured or compiled, like /usr/local/lib/mc or /usr/lib/mc).

 

The first one is very easy:

You assign a vfs suffix. For example, if you have .zip file, and would

like to see what's inside it, path will be

 

!cat /etc/passwd

 

위의 예에서 more명령어 상태에서 쉘명령어를 실행하기 위하여 “!cat /etc/passwd”라고 입력한 후에 Enter키를 입력하였다.

 

 

 

 

 

!cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

news:x:9:13:news:/etc/news:

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

rpm:x:37:37::/var/lib/rpm:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

avahi:x:70:70:Avahi daemon:/:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin

smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin

nscd:x:28:28:NSCD Daemon:/:/sbin/nologin

vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin

rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

named:x:25:25:Named:/var/named:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

pcap:x:77:77::/var/arpwatch:/sbin/nologin

distcache:x:94:94:Distcache:/:/sbin/nologin

haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin

gdm:x:42:42::/var/gdm:/sbin/nologin

sspark:x:500:500:ParkSungSoo:/home/sspark:/bin/bash

sulinux:x:501:501::/home/sulinux:/bin/bash

bible:x:502:502:BIBLE:/home/bible:/bin/bash

------------------------

--More--(27%)

 

그리고 다음은 root패스워드를 변경한 것으로서 more가 실행된 상태에서 “!passwd root”를 실행하여 root패스워드를 변경한 것이다.

 

 

 

 

 

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

named:x:25:25:Named:/var/named:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

pcap:x:77:77::/var/arpwatch:/sbin/nologin

distcache:x:94:94:Distcache:/:/sbin/nologin

haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin

gdm:x:42:42::/var/gdm:/sbin/nologin

sspark:x:500:500:ParkSungSoo:/home/sspark:/bin/bash

sulinux:x:501:501::/home/sulinux:/bin/bash

bible:x:502:502:BIBLE:/home/bible:/bin/bash

------------------------

!passwd root

Changing password for user root.

New UNIX password: ********

BAD PASSWORD: it does not contain enough DIFFERENT characters

Retype new UNIX password: ********

passwd: all authentication tokens updated successfully.

------------------------

--More--(27%)

 

 

 

 

물론 현재 root사용자로 실행하였기 때문에 root패스워드를 변경할 수 있었다.

 

 

 

 일반사용자가 more를 실행한 상태에서 root패스워드를 변경하는 것은 불가능하다.

 

 

 

 

 

하지만 more의 이전버전에서는 more명령어에 자체에 root소유의 SetUID가 설정되어 있었다.

 

 

 

 이런 상태에서는 일반사용자가 root의 패스워드를 변경하는 것 뿐아니라 root가 할 수 있는 모든 작업들을 할 수가 있었다.

 

 

 

 이것이 일종의 해킹수단이 되기도 하였다.

 

 

 

 물론 현재는 패치되어 이런 해킹수단은 사용할 수 없다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,038 명
  • 현재 강좌수 :  35,813 개
  • 현재 접속자 :  111 명