Security

    데이터베이스(DB) 종류 별 명령어 정리

    MS-SQL * MS-SQL은 각 개별 데이터베이스별로 시스템 뷰가 존재하기 때문에 데이터베이스명으로 필터링할 필요 없음 데이터베이스 조회 SELECT * FROM sys.sysdatabases SELECT name, database_id, create_date FROM sys.databases ; SELECT DB_NAME() -> 현재 DB명 반환 SELECT DB_NAME(3) -> DB id 가 3인 DB명 반환 테이블 조회 SELECT * FROM sys.tables SELECT * FROM information_schema.tables 컬럼 조회 SELECT * FROM sys.syscolumns SELECT column_name FROM information_schema.columns WHE..

    버그바운티(Bug Bounty) Write-up / SQL Injection ($4,500)

    https://hackerone.com/reports/403616 Zomato disclosed on HackerOne: [www.zomato.com] SQLi -... Thanks @gerben_javado for helping us keep @zomato secure :) hackerone.com SQLi 취약점을 발생시켜서 4,500 달러의 바운티를 받은 사례입니다. 이 사이트는 웹 방화벽을 사용하고 있었는데, 특정한 방화벽 우회 기법을 사용하여 SQLi 을 성공시켰다고 합니다. 현재 성공된 상세내용은 대부분 가려져 있습니다. 작성자는 디버깅과 익스플로잇으로 Kona 라고 하는 Akamai의 웹방화벽이 사용되고 있다는 것을 발견하였습니다. 작성자는 마침 이 Kona 방화벽에 대한 우회법을 알고 있었..

    버그바운티(Bug Bounty) Write-up / Reflected Cross site Scripting ($375)

    https://hackerone.com/reports/438240 Starbucks disclosed on HackerOne: Reflected Cross site Scripting... **Summary:** Reflected Cross site Scripting (XSS) on https://www.starbucks.com/account/signin?ReturnUrl **Description:** The attacker can execute javascript on the victims account just after the authentication process. **Platform(s) Affected:** www.starbuc hackerone.com 스타벅스 버그바운티 건인데요. 작성자는 ..

    버그바운티(Bug Bounty) Write-up / DOM XSS in redirect param ($750)

    https://hackerone.com/reports/361287 Semmle disclosed on HackerOne: DOMXSS in redirect param #Summary The **redirect** param can consist of a ``javascript:`` url, which results in XSS. If a victim visits a malicious URL and logs in, the attacker can perform actions on behalf of the victim. #Steps to reproduce 1) Logout 2) Visit `` https://lgtm-com hackerone.com redirect URL을 넘기는 파라미터로 스크립트를 넣어서 ..

    버그바운티(Bug Bounty) Write-up / SQL Injection ($2,000)

    먼저 포스팅하기 전에 해커원(HackerOne) 이라는 사이트를 소개하겠습니다. 해커원은 버그바운티를 하는 회사들과 해커들을 연결해주는 세계 최대의 플랫폼 입니다. 우리나라에서는 아직 버그바운티가 활성화 되어있지 않아서 잘 알려지지 않았지만 많은 기업이 버그바운티를 진행하고 있고, 여러 해커들이 취약점을 발견하기 위해서 열심히 활동 중입니다. 아마 몇년내로 우리나라에서도 하나의 직업으로 뜨지 않을까 생각하고 있습니다. 해커원에는 취약점을 발견하고 포상금을 받기위해서는 그 취약점에 대한 설명과 PoC 코드등을 포함한 보고서를 제출해야 하는데요. 이 바운티를 받은 보고서를 무려 공짜로 열람할 수 있습니다. 정말 실 사이트에서 쓰이는 창의적인 해킹기법을 배울수 있습니다. 영어로 되어있어서 영어실력을 키우기에도..

    버그바운티(Bug Bounty)에 도움되는 Reference 모음(업데이트 중)

    버그바운티에 대한 이해 https://www.youtube.com/watch?v=ZFAvflICiSQ&feature=youtu.be 공격유형별 실제 공격 버그바운티 사례 보고서 리스트 https://github.com/ngalongc/bug-bounty-reference ngalongc/bug-bounty-reference Inspired by https://github.com/djadmin/awesome-bug-bounty, a list of bug bounty write-up that is categorized by the bug nature - ngalongc/bug-bounty-reference github.com https://pentester.land/list-of-bug-bounty-writ..

    IAT (Import Address Table) 함수주소 기록 과정

    맨날 보고 보고 또 봐도 헷갈리는 IAT(Import Address Table) 에 함수주소를 기록하는 과정을 PEView 를 이용하여 하나하나 살펴보도록 하겠습니다.진짜 어려운거 다 집어치우고 핵심 프로세스만 적도록 할게요. 그래도 IAT(Import Address Table) 가 왜 필요한지는 알고가야 되겠죠? IAT 에 함수주소를 기록하는 제일 큰 이유는, DLL 동적라이브러리를 사용하기 위함입니다. DLL을 가져와서 함수를 빌려쓰려고 하는데, DLL이라는 이놈이 항상 똑같은 메모리 공간에 올라가지 않습니다. 그래서 항상 DLL 내 함수 주소도 바뀌죠. 이 바뀐 함수 주소를 프로그램이 실행 될 때, PE 로더가 IAT에 함수주소를 찾아서 기록을 해줍니다. 이 IAT에 함수주소를 기록하는 과정이 꽤나..

    Command Injection 이란? (커맨드 인젝션)

    3. Command Injection Ÿ Command Injection Command Injection 은 웹 애플리케이션에서 시스템 명령을 사용할 때, 세미콜론 혹은 &, && 를 사용하여 하나의 Command를 Injection 하여 두 개의 명령어가 실행되게 하는 공격 입니다. OWASP Top10 중 1위에 속해 있는 Injection 공격으로 서버자체의 콘솔 명령어를 실행시킬 수 있기 때문에 공격이 성공한다면 매우 큰 피해가 발생할 수 있습니다. 그림은 Command Injection 공격의 한 예를 보여주고 있습니다. 현재 웹 애플리케이션에서는 서버의 파일을 cat 명령어를 사용하여 사용자 입력과 함께 보여줄 수 있도록 만들어져 있습니다. 해커는 이 기능을 악용하여 리눅스에서 ① 두 개의 명..

    XSS(Cross-Site Scripting) 이란?

    2. XSS (Cross-Site Scripting) 2.1 개요 Ÿ XSS Attack XSS(Cross-Site Scripting) 이란 웹 애플리케이션에서 일어나는 취약점으로 관리자가 아닌 권한이 없는 사용자가 웹 사이트에 스크립트를 삽입하는 공격 기법입니다. XSS공격 역시 OWASP Top10에 포함되어 있습니다. 대부분 사용자가 글을 쓰고 읽을 수 있는 게시판에 많이 발생하지만, 사용자의 입력 값을 웹 페이지에 보여주는 곳에서도 발생합니다. 악의적인 사용자가 C&C 서버로 리다이렉션 하기 위해 리다이렉션 스크립트를 주입하여 중간 경유지로 활용하기도 하고, 사용자의 쿠키를 탈취하여 세션 하이재킹(Session Hijacking) 공격을 수행하기도 합니다. 위의 사진은 XSS 공격중 Persist..

    SQL Injection 이란? (SQL 삽입 공격)

    1. SQL Injection 1.1 개요 Ÿ SQL InjectionSQL Injection 이란 악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위 입니다. 인젝션 공격은 OWASP Top10 중 첫 번째에 속해 있으며, 공격이 비교적 쉬운 편이고 공격에 성공할 경우 큰 피해를 입힐 수 있는 공격입니다. Ÿ 여기어때 해킹 사건2017년 3월에 일어난 “여기어때” 의 대규모 개인정보 유출 사건도 SQL Injection 으로 인해 피해가 발생하였습니다. 1.2 공격 종류 및 방법Error based SQL Injection논리적 에러를 이용한 SQL Injection SQL 공격 기법은 여러 가지가 있는데 논리적..

    DLL Injection 을 위한 DLL Injector 간단하게 만들기

    간단하게 DLL 인젝션이 무엇인지 알아봅시다! DLL 인젝션이란 말그대로 현재 동작중인 프로세스에 DLL 을 주입하는 것인데요. 보통은 기능추가의 목적으로 많이 사용됩니다. 플러그인이라는 것이 대표적인 인젝션 기법에 속하죠. 그럼 바로 DLL을 인젝션해주는 인젝터를 만들어 볼까요? 먼저 인젝터를 만들기 위한 전체적인 과정과 설명 후에 인젝터를 본격적으로 만들어 보겠습니다. 프로세스에 DLL 을 인젝션 하기 위해서는 해당 프로세스에 대한 제어권이 필요합니다. 프로세스를 제어하는 프로세스 핸들을 얻으면 되는데요 이 핸들을 얻기위해서 프로세스ID가 필요합니다. 여기서 사용되는 함수는 OpenProcess 라는 함수입니다. 프로세스ID는 작업관리자를 통해서 쉽게 확인이 가능합니다. 프로세스의 핸들(제어권) 을 ..

    APT 공격 실습 (3) - 워터링홀(Watering Hole)

    워터링홀(Watering Hole) 공격 이란 사자가 먹잇감을 사냥하기위해 물웅덩이(Watering Hole) 근처에서 매복을 하는 형상을 빗대어 만든 이름으로, 특정한 공격대상이 방문할 가능성이 있는 합법적인 사이트에 악성코드를 심어서 그 사이트에 방문하기만 해도 악성코드에 감염됩니다. 보통 제로데이나 원데이를 사용하며, 대표적인 표적공격 입니다. 먼저 희생자(WindowsXP) 가 자주 방문하는 사이트에 XSS취약점을 이용하여 해커의 홈페이지로 리다이렉션하는 악성스크립트를 심습니다.페이지는 가상으로 열어둔 웹서버이며, 고객센터를 들어가보니 XSS에 취약한 게시판이 있었습니다. 스크립트를 추가하여 게시글을 클릭하면 해커의 웹서버가 열리는 iframe 을 추가해주었습니다. 이제 공격자(KALI) 로 이동..

    APT 공격 실습 (2) - Metasploit 을 이용한 익스플로잇

    Metasploit 이란 모든 취약점과 관련한 메타 데이터를 관리하는 프레임워크입니다. 주로 모의해킹을 위해 쓰이며, H.D 무어에 의해 개발 되었습니다. 오픈소스로 제작되어 최신 취약점을 빠르게 업데이트 해주는 장점을 가지고 있습니다. 이 Metasploit 프레임워크를 사용하고, 브라우저 취약점을 사용하여 우리의 희생자 PC인 (WindowsXP) 를 공격하여 해커가 원하는 행위를 방화벽을 우회하여 XP에 띄우도록 해봅시다.제가 이용할 취약점은 아주 오래전에 발견된 취약점입니다 CVE코드는 CVE-2007-0038 입니다. LoadAniIcon() function of USER32.dll 에서 발생한 버퍼오버플로우 취약점 입니다. 시나리오는 해커가 만들어둔 사이트에 접속하게 되면, 취약점이 터지고 익..

    APT 공격 실습 (1) - 가상 실습환경 구성

    가상 실습망 설명먼저 두개의 망을 구성헀습니다. 하나는 192.168.57.1 대역이고, 하나는 192.168.56.1 네트워크 망입니다. 두 네트워크 망은 방화벽을 사이에 두고있고, 현재 방화벽 Rule은 인바운드 차단이 되어있습니다. 외부에서 WindowsXP로의 접근이 불가능합니다. 두개의 네트워크를 구성하기 위해 VirtualBox에서 하나의 랜카드를 더 만들어 주었습니다. 현재 방화벽 설정으로 WAN net 에서 LAN net 으로 가는 모든 IP및 포트를 차단해 두었습니다. 현재 해커(KALI Linux)의 IP는 192.168.57.10 이며, 피해자(Windows XP)의 IP는 192.168.56.10 입니다. 한번 방화벽이 정상적으로 작동하는지 핑을보내어 테스트해봅시다. 먼저 KALI에..

    [PE파일] 특정 PE파일로부터 Export Table 주소를 구해보자.

    ★ windows 7 32bit 환경에서 진행하였습니다. 간단한 어셈블리 프로그램으로~ 특정 PE 파일로부터 Export Table 주소를 구해봅시다. Export Table 주소를 구하고, 더 나아가서 Export 하는 함수들의 주소까지 구해볼수 있겠죠. kernel32.dll 를 이용해봅시다. PEView를 이용하면 쉽겠지만 동적으로 Export Table 내의 함수들의 주소를 받아오기 위해서 간단한 어셈블리 프로그램을 짜보도록 하겠습니다. 먼저 kernel32.dll 의 base 주소를 알아야겠죠? mov eax, fs:[eax+0x30] // PEB 의 주소 FS = TEB을 가리키고있음 mov eax, [eax+0xc0] // PEB_LDR_DATA mov eax, [eax+0x14] // .e..