레벨 해킹

 2839, 1/142 회원가입  로그인  
   kumi123
   http://blog.naver.com/kumik12
   그럼, 페도라 이상급에서는 ( ; , | ) 를 이용한 우회가 불가능 한가요?

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3315 [복사]


suid가 걸려있고,

프로그램내부에서, system함수에 입력문자를 받아 실행하는 경우

레드햇9 이하에서는 권환하락 문제가 없으므로 상관없지만,

페도라 이상급에서는, system함수는 권환하락이 되므로,

; , | detour를 결국 사용할 수 없는데..

뭔가 우회 아이디어가 존재 하나요?

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

예를들어,

int main()
{
char buf[20];
gets(buf);
system(buf);
}

./a
/bin/sh
id ( 누를시, 권환상승할 아이디어)

  Hit : 3092     Date : 2014/02/03 03:49



    
cd80 혹시 system(argv[1]); 같은거 말씀하시는거면
/bin/sh 에 -p 옵션 넣어주시면 됩니다~
2014/02/04  
kumi123 위에 추가한 방법으로 프로그램을 짠다음, /bin/sh -p 옵션을 넣으니.. euid 변화가 없습니다. ㅠ

system 함수가 내부에서 이미 권화하락을 시킨다음, 작동하기 떄문에 -p가 소용없어 보이네요 ㅠ

이렇게 작동해서 같은데요.. ㅠ
2014/02/04  
kumi123 execl 함수로 할경우에는, 바로 euid가 잡히네요 ㅠㅠ.

저 상태에서 우회방법은 이제 막힌건가요?
2014/02/04  
cd80 어.. 혹시 프로그램생성이 가능한 환경이면
main(){
setreuid(geteuid(), geteuid());
system("cp /bin/bash /tmp/bash");
system("chmod +s /tmp/bash");
}
하신다음에 저 프로그램을 system()이 실행하게 하고
/tmp/bash -p 로 실행시켜보시면 될것같아요
이것도 안되나..
2014/02/04  
kumi123 안됩니다..

system함수 실행 전 권환하락 -> setreuid 권환상승 ( 결국 동일) -> 생성 ( 사용자 id )

결국 불가능이네요.. system함수 이전에 setuid() 를 적용시키지 못하는 이상은,

하지만, 리모트어택(웹해킹) 이라면, 가능할 것이라 생각합니다.
2014/02/05  
cd80 어 그렇네요 ㅋㅋ 2014/02/05