반응형




안녕들 하시죠 !


이번시간에는 파일 업로드 취약점에 대해 알아보겠습니다.


파일 업로드 취약점 이란?


어떠한 파일을 첨부하여 올릴 수 있는 게시판에 일반적으로 올릴 수 있는 형태 이외에 공격자가 악의적으로 .asp, .php, .jsp 등의 파일을 업로드하여 악성 스크립트를 올려 실행시킨 후,  웹 서버를 장악하고 피해를 주는 행위이다.


실습내용

ㆍ 파일을 업로드 할 수 있는 페이지가 존재하는지 확인.

ㆍ 이미지 파일 업로드 시도( .jpg, .png 등 )

ㆍ 파일이 업로드 되는 경로 확인.

ㆍ .asp, .jsp, .php 등의 확장자를 가진 서버 가이드 스크립트 파일 업로드 시도.

ㆍ 파일이 업로드 되는 경로 확인.

ㆍ 경로를 통한 파일 실행 여부 확인.

ㆍ 서버 가이드 스크립트 파일이 필터링에 걸려 업로드가 안 된다는 가정 하에 확장자 우회 방법을 시도.

  - fiddler 등의 프록시 툴을 사용해 확장자 명을 변경 후 업로드 시도.


파일 업로드 취약점 실습을 위해 저만의 환경에서 실습 진행을 해보았습니다.

우선 앞에서 배운 SQL Injection 기법으로 로그인을 하고 진행했습니다.



게시판에는 파일을 첨부 기능이 준비되어 있습니다.

이 게시판에 제가가진 webshell.asp 파일을 업로드 해볼생각입니다.


우선 웹쉘 파일을 업로드 해보겠습니다.



첨부가능한 확장자를 규정해 필터링하고 있습니다.

우선, webshell.asp.jpg로 확장자를 바꿔준 후에 업로드창에 올린후, 프록시를 잡고 burpsuite를 실행해봤습니다.



글을 업로드하게 되면,



다음과 같이 나옵니다.

그럼 이제, filename부분 webshell.asp.jpg를 webshell.asp로 수정 후, forward로 진행해 보겠습니다.



자, 이번엔 업로드한 webshell(42).asp를 다운받기위해 클릭할때 프록시를 잡고 burpsuite로 확인해보겠습니다.





burpsuite를 보게되면, 아래와 같이 업로드파일이 올라가는 경로가 나와있습니다.




홈페이지ip/demoshop/shop_board/upload_file/webshell(42).asp를 입력해 웹쉘을 실행시켜보겠습니다.



성공했습니다.


오늘은 여기까지입니다 감사합니다 !

반응형




안녕들 하시죠 !


이번시간에는 LOS 3번 문제를 풀어보겠습니다.



쿼리에 select id from prob_goblin where id='guest' and no = 라고 되어있네요.


아래 이미지의 주황색으로 강조해놓은 곳을 보시면 싱글쿼터 ( ' )와 더블쿼터 ( " )를 금지하고 있습니다.

또한 id에 'admin' 이 들어오게되면 solve문을 실행하게 되어있네요.



저는 우선 no= 라는 부분이 궁금했습니다.

그래서 값을 넣어서 결과를 비교해보았습니다.


?no=0



?no=1




이로써 guest의 no값은 1이라는게 밝혀졌습니다.

이 문제를 해결하기 위해서는 guest가 아닌 admin으로 설정해줘야하기에, no값은 0을 사용해야 할 것 같습니다.


그럼이제 ?no=0 부분까지는 알았습니다.


그래서 전 앞에서 늘 해왔던 or문을 사용하여 앞의 구문을 거짓 뒤의 구문을 참으로 만들어 통과시켜 볼 생각을 했습니다.

?no=0 or id='admin'을 입력하게된다면, 싱글쿼터 필터링에 걸릴것이고... 

아래 이미지와 같이 싱글쿼터 없이 admin만 넣게되면 문자열 인식을 못합니다.



이런 경우 문자열을 16진수(hex)로 나타내게 되면 16진수로 변환된 admin의 값을 문자열로 읽어갑니다.


아래에는 문자열을 16진수로 바꿔주는 사이트입니다.  

https://www.percederberg.net/tools/text_converter.html




자 아래에 변환된 Hex형태의 숫자들을 조합해보면 61646D696E입니다.

php에서는 Hex형태를 인식시키기 위해 앞에 0x를 붙여줘야합니다.


따라서, ?no=0 or id=0x61646D696E 라고 입력하게 되면,




성공했습니다.


오늘은 여기까지입니다 감사합니다 !


반응형




안녕들 하시죠 !


이번시간에는 LOS 2번 문제를 풀어보겠습니다.



음... 우선 싱글쿼터( ' )나 더블쿼터( " )를 필터링하고 있진 않고, id값에 admin이 들어가게 되면 성공이네요.

그런데 위에 해시 암호화 md5라는게 있어 잠깐 고민을했습니다.


하지만 pw값은 고려할 것 없이 id값만 만족하면 된다는 생각을 하고 우선 ?id=admin 값을 넣어보았습니다.



 

id값에는 admin이 잘 들어갔지만 and 뒤에있는 pw를 충족하지 못해 클리어가 되지 않네요.

그렇다면 id='admin' 뒷부분을 전부 주석처리해주면 어떨까? 라고 생각했습니다.


mysql에서의 주석기호 # 을 사용하여 뒷부분을 전부 주석처리했습니다.

#은 urlencoding방식으로 %23이라고 적어주셔야합니다.

?id=admin'%23




성공했습니다.


오늘은 여기까지입니다 감사합니다 !


반응형




안녕들 하시죠 !


오늘은 LOS 1번 문제풀이를 해보겠습니다.



다음과 같이 싱글쿼터( ' )나 더블쿼터( " )를 필터링하고있지 않으며, id값에 그 어떤 값이 들어와도 solve가 되겠네요.

자 그럼 우선 id에 아무 값이나 넣어보겠습니다.


?id=hongpossible 



자 이렇게 싱클쿼터 안에 hongpossible이 제대로 들어갔습니다. 

하지만 뒷부분에 pw값을 넣지못해 and 뒷부분을 참으로 만족시키지 못했네요.

그럼 가장 기본적인 SQL Injection구문을 이용하여 or 1=1 로 참을 만들어주고 그 뒷부분을 전부 주석처리하면 참을 만족시킬 수 있을 것 같습니다.

mysql의 주석처리 #을 urlencoding방식을 통해 %23으로 넣겠습니다.



urlencoding에 대해 알고싶으시다면 아래의 URL로 들어가보세요.

https://www.w3schools.com/tags/ref_urlencode.asp



?id=hongpossible'or 1=1 %23



위의 이미지에서 노란색부분 ( #' and pw '' )는 모두 주석처리가 되어버려 성공했습니다.


오늘은 여기까지입니다 감사합니다 !


반응형


안녕들 하시죠 !


이번시간에는 TCP 와 UDP에 대해 알아보겠습니다.

TCP와 UDP 둘다 OSI 7계층중에 전송에 관련된 4계층( Transport Layer )에 속해있는데요.


TCP( Transmission Control Protocol )란?


TCP란 전송제어프로토콜의 약자로서 기본적으로 IP와 함께 쓰이며, 데이터의 송수신을 위하여 사용되고 있는 프로토콜이다.

통신이 연결된 호스트간에 신뢰성을 보장받으며 데이터를 주고 받을때 사용한다. 

연결 ( 3 Way HandShaking )과 해제 ( 4 Way HandShaking ) 방식이 있으며, 수신측이 데이터를 받았는지 확인한다.

수신측에서 한번에 받을 수 있는 데이터의 버퍼량을 조절해주는 흐름제어 기능과,

수신측의 상태에 따라 데이터의 전송량을 조절해주는 혼잡제어 기능을 지원한다.


3 Way HandShaking


TCP/IP를 이용하여 데이터를 전송하기전, 신뢰성을 보장하기위하여 상호간에 연결하는 과정이다.

우선 SYN과 ACK에 대해 알아보겠습니다.


SYN ( synchronize sequence numbers ) : 세션을 성립할때 가장 먼저 보내는 패킷이며, 연결 요청 신호이다.


ACK ( Acknowledgement ) : 상대방으로부터 패킷을 받았다는 응답 신호이다.


     출처 [ Wikipedia ]

왼쪽이 클라이언트, 오른쪽이 서버입니다.


1. 클라이언트는 서버에게 접속요청을 하며 SYN 패킷을 보낸다.

   그러면서 클라이언트는 SYN-ACK를 기다리는 SYN_SENT상태가 된다.


2. 서버는 클라이언트의 SYN요청을 받고 수락한다는 SYN-ACK 패킷을 보내고 난뒤, SYN_RECEIVED상태가 된다.


3.  클라이언트는 서버에게 ACK 를 보내고 연결이 이루어져 데이터를 주고 받을수 있게 되며 양측 모두 ESTABLISHED상태가 된다.



4 Way HandShaking


3 Way HandShaking과 비슷하지만 연결을 해제하는 과정이다.


     출처 [ Wikipedia ]

번에도 왼쪽이 클라이언트, 오른쪽이 서버입니다.


1. 클라이언트가 서버에게 연결을 종료하겠다는 FIN을 전송한다. 


2. 서버는 일단 알겠다며 클라이언트에게 ACK 메시지를 보내고 자신의 통신이 종료될때까지 대기하는상태 (CLOSE_WAIT)가 된다.


3. 연결이 종료되면 서버는 클라이언트에게 FIN 메시지를 보내며 LAST_ACK 상태가 된다.


4. 클라이언트는 서버에게 확인 메시지를 보내며 통신을 종료한다.


UDP( User Datagram Protocol )란? 


비연결형 서비스를 제공하는 사용자 데이터그램 프로토콜이다.

TCP와는 다르게 수신측이 데이터를 받았는지 확인하지 않고 일방적으로 보낸다.

TCP보다 속도가 빠르지만 비신뢰성 프로토콜이다.



오늘은 여기까지입니다 감사합니다 !

'Network' 카테고리의 다른 글

Wireshark 패킷 스니핑  (0) 2018.11.18
Wireshark란? / 설치법  (2) 2018.11.16
네트워크 스캐닝 / WPScan  (0) 2018.11.09
네트워크 해킹  (0) 2018.11.09
OSI 7 Layer & TCP/IP  (0) 2018.11.05
반응형


안녕들 하시죠 !


이번 시간에는 TCP/IP와 OSI 7계층에 대해 알아보겠습니다.


먼저 통신 프로토콜에 대해 알아보려고 하는데요.


통신 프로토콜 이란?


프로토콜(Protocol)은 규약이다. 일종의 약속이라는 뜻이다. 커뮤니케이션 하는 컴퓨터들 간에 오류를 최소화함으로써 정보를 원활하게 교환하기 위해 만들어진 규칙의 집합이 바로 통신 프로토콜인 것이다. 통신 프로토콜은 컴퓨터 간 상호 접속이나 전달 방식, 통신 방식, 주고받을 자료의 형식, 오류 검출 방식, 코드 변환 방식, 전송 속도 등을 정하는 것을 말한다. 기종이 다른 컴퓨터는 대개 서로 다른 통신 규약을 사용하기 때문에, 서로 통신을 하려면 표준 프로토콜을 설정하고, 커뮤니케이션을 하는 모든 컴퓨터가 이를 채택토록 하는 것을 전제로 통신망을 구축해야 한다. 

이러한 프로토콜 가운데 인터넷에서 사용하는 대표적인 표준 프로토콜이 바로 TCP/IP Transfer Control Protocol/Internet Protocol )이다.

한마디로 통신을 하기위해서 따라야만 하는 규칙 이라고 생각하시면 될 것 같습니다.


출처 [ 네이버 지식백과 ]


OSI 7 Layer 란?


신에 관한 국제적인 표준기구인 ISO ( International Organization for Standardization )라는 곳에서 통신이 일어나는 과정을 7개의 단계로 

나누어 놓은것.

송신호스트가 데이터를 보낼 때 각 계층을 지나면서 헤더가 붙어 패킷의 크기가 커지고 수신호스트에 도착하면 아래에서 위에있는 계층으로 올라가며디캡슐화 과정에 의해 헤더가 벗겨진다.

우선 7계층의 종류와 나누어 놓은 이유를 알아보겠습니다.


출처 [ 네이버 지식백과 ]


ㆍ Application Layer ( 응용 계층 )

ㆍ Presentation Layer ( 표현 계층 )

ㆍ Session Layer ( 세션 계층 )

ㆍ Transport Layer ( 전송 계층 )

ㆍ Network Layer ( 네트워크 계층 )

ㆍ Data Link Layer ( 데이터 링크 계층 )

ㆍ Physical Layer ( 물리 계층 )


이렇게 나누어 놓은 이유는 크게 세가지가 있습니다.


첫번째, 데이터의 흐름이 한눈에 보인다.

두번째, 문제 해결이 편리하다. 네트워크 상에서 문제가 발생하면 7개의 작은 문제로 나눈 다음 그 문제를 해결하면 훨씬 쉽게 해결가능하다.

세번째, 층을 나누어 표준화를 해 놓으면 여러 회사 장비를 써도 네트워크에 이상이 없다.


첫번째 계층 Physical Layer부터 알아보겠습니다.


이 계층은 통신계층의 맨 아래 단계로 통신단위는 비트이며 전기적, 기계적, 기능적인 특성을 이용해 통신 케이블로 데이터를 전송한다.

또한, 단지 데이터를 전송할 뿐 이 데이터가 무엇인지, 어떤 에러가 있는지, 어떻게 보내는것이 효과적인지 하는 것은 전혀 관여하지 않는다.

케이블, 리피터, 허브가 이 계층에 속한다.

 

두번째 계층 Data Link Layer


바로 밑에있는 Physical Layer를 통하여 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행 할 수 있도록 도와주는 역할을 한다.

따라서 통신에서의 오류도 찾아주고 재전송도 하는 기능을 가지고 있을 뿐만 아니라 맥 주소를 가지고 통신할 수 있게 해준다.

이 계층에서 전송되는 단위는 프레임이며 브리지, 스위치가 이 계층에 속한다.


세번째 계층 Network Layer


이 계층에서 가장 중요한 기능은 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 것이다. 이것을 보통 라우팅이라고 부른다.

따라서 경로를 선택하고 주소를 정하고 경로에 따라 패킷을 전달해주는 것이 이 계층의 역할이다.

라우터가 이 계층에 속하며, 스위치 중에서도 라우팅 기능이 있는 스위치가 나오고 있는데 이러한 스위치를 Layer 3 스위치라고 한다.

데이터 단위는 패킷이며, 데이터를 패킷 단위로 분할하여 전송하고 재결합 하는 기능도 가지고있다.


네번째 계층 Transport Layer


양 끝단( End to end )의 사용자들이 신뢰성 있는 데이터를 주고받을 수 있도록 해 주며, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다. 

오류복구나 흐름제어 등의 기능을 가지고있다.

이 계층의 단위는 세그먼트이며 프로토콜로는 TCP, UDP가 있다.



다섯번째 계층 Session Layer


양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다. 

양측 간의 통신 중 데이터 교환과 동기화를 관리하게 된다.

동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행한다.

여섯번째 계층 Presentation Layer


데이터를 하나의 표현형태로 변환한다.

압축, 복호화, 번역 등의 역할을 한다. 프로토콜로는 파일 형식인 JPEG, MPEG 등이 있다.


일곱번째 계층 Application Layer


소프트웨어 또는 사람이 네트워크에 접근할 수 있도록 해준다. 

사용자로부터 받은 정보를 아래층으로 전달하기도하고, 하위계층에서 전달받은 데이터를 사용자에게 전달해준다.

사용자 인터페이스를 제공하고, 전자우편, 원격 파일접근과 전송, 공유 데이터베이스 관리 및 여러 종류의 분산정보 서비스를 네트워크에 접속시키는 계층. 프로토콜로는 HTTP, SMTP, FTP, TELNET 등이 있다.



TCP/IP ( Trasmission control protocol/Internet protocol ) 란?


서로 다른 시스템을 가진 컴퓨터들을 서로 연결하고, 데이터를 전송하는 데 사용하는 통신 프로토콜들의 집합.

1970년대 초반부터 많은 업체들이 다양한 방법과 기술로 데이터 전송에 대한 프로토콜들을 개발하기 시작했는데, 대표적으로 AppleTalk, IPX, NetBEUI 그리고 TCP/IP가 있다.

각각의 네트워크에 접속되는 호스트들은 고유의 주소를 가지고 있어서 자신이 속해 있는 네트워크 뿐만 아니라 다른 네트워크에 연결되어 있는 호스트까지도 서로 데이터를 주고받을 수 있도록 만들어져 있는 것이 특징이라고 할 수 있다.

아래는 OSI 7계층과 TCP/IP 4계층에대한 비교 이미지입니다.



출처 [ www.searchnetworking.techtarget.com ]



다음시간에는 오늘 공부한 내용을 바탕으로 TCP, UDP, 3 Hand Shaking, 4 Hand Shaking에 대해 알아보겠습니다.


오늘은 여기까지입니다 감사합니다 !




참고서적 진강훈 「후니의 쉽게 쓴 시스코 네트워킹」 성안당(2017)



'Network' 카테고리의 다른 글

Wireshark 패킷 스니핑  (0) 2018.11.18
Wireshark란? / 설치법  (2) 2018.11.16
네트워크 스캐닝 / WPScan  (0) 2018.11.09
네트워크 해킹  (0) 2018.11.09
TCP & UDP & 3,4 Way HandShaking  (0) 2018.11.06
반응형




안녕들 하시죠 !


오늘은 지난시간에 구축해놓은 APM을 이용해 SQL Injection 실습을 진행해 보겠습니다.


먼저 DB( wp_users )에 레코드를 입력하고, 간단한 로그인용 페이지를 만들어 보겠습니다.


워드프레스를 통해 계정을 생성하게되면 패스워드를 암호화하여 저장하기때문에 HeidiSQL을 이용하여 쿼리를 통해 값을 넣어보겠습니다.


아래의 URL을 통해 들어가서 9.2.0 버전을 설치하고 진행하겠습니다.


https://www.heidisql.com/download.php#



설치 후 실행하면 아래와 같은 화면이 나옵니다.

사용자, 암호에 python 을 입력하고 열기를 누르겠습니다.



열기를 누르면 다음과 같은 화면이 나옵니다.



1번 wordpress를 누르고 2번 쿼리를 누릅니다.



자, 이제 쿼리창을 통해 직접 값을 입력해 넣어볼텐데요.

그전에 wp_users의 모든 데이터를 가져오는 쿼리문 select * from wp_users 를 입력하고 F9 ( 실행 ) 을 입력하면 아래에 

아이디 패스워드 등 정보들이 나옵니다.


이제 'hongpossible' 이라는 계정을 추가해보겠습니다.



1
2
Insert into wp_users(id, user_login, user_pass, user_nicename, user_email, user_registered, user_status, display_name) 
values(3'hongpossible''1234''hong''abcde@naver.com', now(), 0'hongpossible');
cs


그리고 다시 select * from wp_users를 입력하여 값이 잘 들어갔는지를 확인해봅니다.



잘 들어갔네요.


그럼 이제, 'C:\APM_Setup' 폴더의 php.ini 파일을 메모장으로 열겠습니다.

Ctrl + F 를 눌러 magic_quotes_gpc 항목을 찾아 On 을 Off로 바꿔주겠습니다.


gpc( get, post, cookie ) 를 사용하여 넘어온 변수값 quotes( ', ", \, NULL 등) 가 있으면 자동으로 앞에 역슬레시( \ )를 

붙입니다. 이는 우리가 실행할 SQL Injection에 대한 최소한의 방어입니다.



이제 아이디 패스워드를 입력하는 로그인창을 만들어보겠습니다.

직접 php언어를 공부하며 만들어보시는 것이 best겠지만 시간이 부족하신분들은 아래의 소스코드를 'C:\APM_Setup\htdocs' 경로에 

넣어 주시면 됩니다.


config.php


DB와 연결하여 wp_users 테이블을 불러올 수 있게 한다.


1
2
3
4
5
6
7
8
9
10
11
12
<?php
 
$mysql_hostname = "localhost";
$mysql_user = "python";
$mysql_password = "python";
$mysql_database = "wordpress";
 
$bd = mysql_connect($mysql_hostname$mysql_user$mysql_password) or die("db connect error");
mysql_select_db($mysql_database$bd) or die("db connect error");
  
?>
 
cs


login.php


ID, 패스워드를 입력받아 check.php로 넘기는 역할을 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html" charset="utf-8"
            <title>Login Page</title>
    </head
<br>
<center>아이디와 패스워드를 입력해주세요</b></div>
    <form action="check.php" method="post">
        <label>아 이 디   :</label><input type="text" name="username" class="box"/><br>
        <label>패스워드   :</label><input type="text" name="password" class="box"/><br>
        <input type="submit" value="로그인"/><br/>
    </center>
</form>
</body>
 
</html>
 
cs


check.php


login.php에서 넘겨받은 ID, 패스워드를 검증하여 사용자의 login ID, 패스워드, 이메일을 반환한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
 
    include("config.php");
  
    $myusername=$_POST['username']; 
    $mypassword=$_POST['password']; 
 
    $sql="SELECT user_login, user_pass, user_email FROM wp_users WHERE user_login='$myusername' and user_pass='$mypassword'";
    $result=mysql_query($sql);
 
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8"<!--utf-8설정-->
<title>Login Page</title>
</head>
<?php
    while($str = mysql_fetch_array($result)){
        echo "
            $str[user_login],
            $str[user_pass],
            $str[user_email]<br>
        ";
    }    
?>
    
</body>
</html>
cs


저는 위의 .php파일들을 htdocs 폴더안에 sqlinjection 이라는 폴더를 만들어 그안에 전부 저장했습니다.

그럼이제 URL창에 localhost/sqlinjection/login.php 를 입력해 들어가보겠습니다.



우선 아까 만든 아이디 hongpossible 비밀번호 1234로 로그인 해보겠습니다.




성공적으로 로그인되어 아이디 비밀번호 이메일이 출력되었네요.


그럼 이제 아이디와 패스워드 입력란에 'OR '1'='1을 입력해보겠습니다.




성공했습니다 !


그럼 이제 왜 이렇게 된건지를 SQL문을 보고 알아보겠습니다.




사용하는 db에 따라 다르겠지만 저의 환경에서는 위에 주황색으로 표시된 부분이 아이디,패스워드를 사용자에게 입력받는 부분입니다.

' OR '1'='1 을 입력하게되면 OR ( 논리합 )뒷부분의 '1'='1' 부분이 참이 되어 전체 결과를 참으로 만들어줍니다.


논리합( OR ), 논리곱 ( AND )


OR

참 + 참 = 참

참 + 거짓 = 참

참 + 참 = 참

거짓 + 거짓 = 거짓


AND

참 + 참 = 참

참 + 거짓 = 거짓

거짓 + 참 = 거짓

거짓 + 거짓 = 거짓


이렇게 해서 [ user_login = TRUE + user_pass = TRUE ] = TRUE 가 되는겁니다.


자, 이번엔 다른 방법으로 인젝션을 진행해보겠습니다.


아이디 입력창에 hongpossible' -- 을 입력해 보겠습니다. 

-- ( 주석 ) 뒤에 한칸은 스페이스로 띄워줘야합니다.




이번에는 비밀번호에 아무것도 입력하지 않았는데도 성공했네요.

어떻게 성공한건지 알아보겠습니다.



이번에는 아이디를 입력하고 '로 닫은후에 -- 로 뒷부분을 전부 주석처리하여 인젝션에 성공하였습니다.

오늘 실습한 인젝션들은 애초에 웹페이지를 만들때 코드단에서 ', --, 문자길이 제한 등의 필터링을 해준다면 이렇게 쉽게 

db정보를 획득하지는 못할 것 같습니다. 

앞으로 다양한 실습을 통해 SQL Injection에 대해 알아봐야겠습니다.


오늘은 여기까지입니다 감사합니다 !




참고서적 이상한 「웹해킹 입문」 프리렉(2016) p59~74

'보안 > Web hacking' 카테고리의 다른 글

Lord of SQL Injection 2번 풀이  (0) 2018.11.07
Lord of SQL Injection 1번 풀이  (0) 2018.11.07
웹해킹 실습을 위한 APM, Wordpress 설치  (0) 2018.11.02
SQL Injection 이란?  (0) 2018.11.02
OWASP Top 10 이란 ?  (0) 2018.10.24
반응형




안녕들 하시죠 !


오늘은 웹해킹 실습을 위한 환경을 구축해 보겠습니다.


우선 VMware의 Window7에 APM 과 워드 프레스를 설치해보겠습니다.



APM이란?


APM이란 Apache + PHP + Mysql이 통합되어 있는것으로 사용자로 하여금 쉽게 가상서버 환경을 구축할 수 있게 도와줍니다.


Wordpress란?


홈페이지 플랫폼인 wordpress는 2003년 제작되어 현재 7천만개가 넘는 사이트에서 사용중입니다.

국내또한 수많은 대기업에서 현재 사용중입니다.

본인 서버에 설치가 쉽고 여러 plugin들이 있기때문에 이슈가 되고있습니다.

저는 앞으로 exploit-database에 올라온 wordpress plugin의 취약점을 이용해 웹해킹 실습을 진행해볼 계획입니다.



우선 APM부터 설치하겠습니다.

현재 APM공식 사이트가 사라진 관계로 아래 URL에서 다운받겠습니다.


http://kldp.net/apmsetup/release/


아래 이미지의 제일 아랫부분에있는 2010010300.exe 버전으로 받겠습니다.



혹시 Host PC에서 다운받으셨다면 드래그해서 가상환경을 옮겨주세요.

더블클릭하여 실행시켜주시고 한국어로 선택하겠습니다.



다음 -> 동의함 -> 다음 -> 설치 로 쭉쭉 넘겨주세요.



설치가 완료되면 이렇게 나오는데 APMSETUP 7 for win32 실행하기만 체크하고 마침을 눌러줍니다.


설치가 정상적으로 진행 되었다면 다음과 같은 화면이 나올껍니다.



자, 이제 127.0.0.1 혹은 localhost/ 로 접속하게되면 다음과 같은 화면이 나올겁니다.



APM 설치를 완료했습니다.


저처럼 C드라이브에 설치를 하셨다면,

'C:\APM_Setup\htdocs' 경로에 웹페이지를 위한 .php, .html등의 파일을 넣게되면 됩니다.

우리가 사용할 wordpress 또한 'C:\APM_Setup\htdocs' 경로에 설치하게 될 것입니다.


자, 이제 Mysql을 들어가봐야겠죠? 

아래 이미지의 화살표가 가리키고있는 URL을 클릭하거나 localhost/myadmin/을 입력하게되면 phpMyAdmin 페이지로 넘어갑니다.




기본 사용자명과 암호는 root, apmsetup 입니다.

로그인을 하시면 아래와 같이 나옵니다.



사용권한 -> 새 사용자 추가



아이디 패스워드를 python으로 전체적 권한을 모두 체크하고 오른쪽 아래 실행을 누르겠습니다.



데이터베이스 -> 새 데이터베이스 만들기 ( wordpress 입력 ) -> 만들기



Mysql 설정까지 끝났고, 이제 wordpress 설치를 해보겠습니다. 

아래의 URL에서 3.8.1 버전으로 받겠습니다.


https://wordpress.org/download/releases/


다운받은 압축파일을 풀어 'C:\APM_Setup\htdocs' 의 경로에 넣어줍니다.



자 이제 URL에 localhost/wordpress 라고 입력해줍니다.

아래와 같이 오류가 뜨는데 Create a Configuration File을 눌러준 다음에 나오는 페이지에서 Let's go 를 또 눌러서 넘겨줍니다.



뭔가를 입력하는 창이 나왔는데요.

사용자이름에 python 비밀번호에 python을 입력하고 넘어가겠습니다.



입력하고나면 필요한 정보라는 창이 뜨고 앞서 입력했던 사용자명과 비밀번호를 입력하고 이메일주소를 입력한 후에 워드프레스 설치하기를 눌러줍니다.


자, 이제 설치가 끝났습니다.

URL에 localhost/wordpress를 쳐보겠습니다.



성공했습니다. 

다음시간에는 오늘 구축한 환경으로 SQL Injection을 시작으로 여러가지 공격 기법들을 해보겠습니다.


오늘은 여기까지입니다 감사합니다 !


 




'보안 > Web hacking' 카테고리의 다른 글

Lord of SQL Injection 2번 풀이  (0) 2018.11.07
Lord of SQL Injection 1번 풀이  (0) 2018.11.07
SQL Injection / 쿼리 삽입을 통한 인젝션  (0) 2018.11.02
SQL Injection 이란?  (0) 2018.11.02
OWASP Top 10 이란 ?  (0) 2018.10.24

+ Recent posts