보통 서버는 80, 443만 열려있다.
웹의 취약점
> 로그인 부분의 무차별 대입공격 가능
> CSRF (요청변조)
> XSS (게시판에 HTML 코드 삽입)
예) hanatour.com naeiltour.co.kr
서버에 침투하는 방법은?
웹쉘 제작
웹에서 작동하는 악성코드( php,asp,jsp,py...)
업로드 자동 공격 코드 만들기
192.168.0.127의 업로드 취약점은 어디인가?
board : 123456 root : 123456
192.168.0.127 : 23
1. 공격
http://192.168.0.127/board/board.cgi?;=form (특이한 게시판)
본인의 이니셜로 된 웹쉘만들기
jyb.php업로드
(파일 이름을 작성해야 업로드가 된다 !!)
내용상 < ?php 대신 < ?로 바꿔도 업로드가 되는지 확인한다
경로 : cd /usr/apache/local/board/
2. 보안
업로드 실패 원인을 찾고 업로드 가능하도록 조치하라
[쿨보드]
cd /home/board/cool
cat new.html | more (보기)
sz new.html (가져와서 edit+로 확인)
문제가 되는 내용
$file_name = substr ( strrchr($up_file_name,"."),1);
if ($file_name==php3 || $file_name==html || $file_name==php || $file_name==phtml || $file_name==inc)
{
echo (""
< script>
window.alert('확장자가 PHP 스크립트로 등록된 파일은 첨부할 수 없습니다.')
history.go(-1)
< /script>
");
exit;
}
=> 모든 확장자를 가능하도록 설정한 뒤 php3, html, php, phtml, inc만 막은 것
=> 확장자를 변형하면 막을 수 없다. (ex. .PHP로 변경)
=> 보완방법
if($extension == "php" || $extension == "Php" || $extension == "pHp" || $extension == "phP" || $extension == "PHp" || $extension == "PhP" || $extension == "pHP")등 경우의 수를 전부 막아야 한다!
3. 그외 업로드 공격 보안 대책
***파일이 올라간 경로를 알 수 없는 곳에 둔다!
[sboard]
http://192.168.0.127/spboard/board.cgi?id=test&number=2.cgi&file=lsw.Php&action=down_file
나눠서 읽어보기
192.168.0.127/sboard/board.cgi?
id=test&
number=3.cgi&
file=lhs.php.txt
&action=down_file
192.168.0.127/board/board.cgi?;=form
192.168.0.127/~board/cool/new.html?code=test
192.168.0.127/sboard/board.cgi?id=test&page=1&action=view&number=3.cgi&img=no
파일업로드는 가능하지만 파일의 실행위치를 파악하지 못하도록 조치해둠
링크 클릭시 파일 실행은 되지 않음
사진의 실제 저장위치를 파악하는 것이 중요함 > 사진을 업로드하여 위치를 파악할 수 있음
또는 동일한 소스 코드를 다운받아 소스 분석시 파일 저장 위치 파악 가능
업로드된 파일 확인
cd /usr/local/apache/htdocs/spboard/id/test/files/lsw.Php
=> 사진은 공격이 아니므로 사진을 업로드하면 경로를 알 수 있었다.
(관리자가 생각지 못한 취약점)
< img src="./id/test/files/3.jpg" alt="다운받으시려면 그림 위에서 마우스 오른쪽 버튼을 누르신뒤 다른이름으로 그림저장(익스플로러).. Save Images As(넷스케이프)를 선택하세요...">
***업로드된 파일을 다른 확장자로 변경하는 등 php코드가 실행되지 않도록 한다.
ex ) action -> download로 변경