그냥...
현재 쉘에서 작업하는 반복적인 단순한 작업을 함수로 만들어서 웹에서 관리하고 싶어졌다.
작업은 사용자의 추가, 삭제, 비밀번호 변경이다.
여러 시행 착오 끝에 코드를 짰다.
그리고 다음단계로는 root의 권한을 얻어야하는건데... 이게 조금 어렵더라.
먼저
test.php 작성
<?php
system("whoami")
?>
결과화면은 www-data 이었다.
그래서 쉘실행파일 작성
test.sh
whoami
이것 실행 역시 www-data 이었다.
setUID를 주고서 해보았다.
소유자변경과 setuid 비트 2가지를 주어야한다.
결과 변화가 없음.
test2.php 생성
<?php
system("./test.sh");
system("./test.php");
?>
즉 test2.php 에서 호출하도록 해서 작성해보았는데 역시 결과는 변화가 없었다.
이론상으로는 owner 로 등록된 유저명이 나와야 하는데..
마지막으로 gcc를 이용해 보았다.
test.c 생성
void main(){
system("whoami");
}
#gcc -o test.o test.c
#chmod 4755 test.o
#chown root test.o
라고 하고 test2.php 처럼 호출하는 방식으로 실행했더니
root 권한이 되었다.
setuid가 보안에 민감한 부분이라서... 그냥 안쓰고 수동적으로 작업할까 생각중..
