[▒] 보안
CVE CVE-2021-44228 (Log4Shell) 취약한 버전 Log4j 2.0 - 2.14.1 패치 버전 Log4j 2.15 _0x001 더보기 2021년 12월 10일, 아파치 서버의 Log4j 2 Library에서 CVSS 스코어 10점의 Critical한 취약점이 발견되었다.Log4j 2 Library란 로깅 유틸리티 라이브러리로 프로그래밍을 할 때 디버깅을 위해 로그를 쉽게 남길 수 있도록 도와주는 녀석이며 아파치 오픈소스이다. 이 취약점은 Alibaba Cloud Security Team의 Chen Zhaojun가 발견하였다. _0x002 해당 취약점은 Lookups 기능에서 발견되었는데, Lookups 기능이란 Log4j에서 넘겨받은 변수를 그대로 로깅하는 것이 아니라 변수를 분석해 실..
'\\'가 ''으로 치환되며 '\''가 '\'\''으로 치환됩니다. 또한, 아이디를 15 글자까지 자르네요. 이후에 id의 길이가 14미만이고 값이 있을 경우 1을 리턴하면서 문제가 풀립니다. 이 문제는 SQL 언어의 타입 특성을 이용하면 될 것 같습니다. 하나의 가정을 해봅시다. 이 문제의 데이터베이스에서 아이디 값은 CHAR의 타입을 가지고 있다고 한다면, 이는 곧 비교할 대상의 어느 한 부분의 길이가 다른 한 쪽보다 못 미칠 경우 짧은 부분에 공백을 채워 길이를 맞춘 후 비교합니다. 예시) 'Hello!!' 와 'Hi!!' 비교 length('Hello!!') > length('Hi!!') 'Hello!!' 와 'Hi!! '(공백 3개 추가) 비교 불일치 판정 위의 예시에서 두 개의 비교대상의 길이..
시간으로 보이는 문자열이 나열되어있습니다. 업로드한 파일의 이름을 검사하고, 그 파일에 공인 아이피 주소를 넣습니다. 그런 후에 "tmp/tmp-{$time}"의 파일에 있는 호스트 정보를 읽어와서 flag가 있는 HTTP Header를 전송합니다. 이 헤더를 가로채면 될 것 같습니다. tmp-$time 파일에 로컬 호스트 아이피를 적고 업로드한 파일에 공인 아이피를 적으므로 타이밍만 맞추면 tmp-$time 파일을 오버라이드할 수 있을 것 같습니다. 그런 후에 포트포워딩을 하고 7777 포트를 열어주면 문제가 풀리겠네요.
처음에는 서버에 이상있는줄알고 다음 문제로 넘어가려고 했지만, index.php 파일에 문제가 있어 이것을 복구하는 것이 이번 문제의 의도입니다. vi 편집기로 살펴보다가 오류가 났다고 합니다. 오류라고 한다면 중간에 강제 종료된 상황일 수 있겠어요. 저 같은 경우는 실제로 전에 VMware UBUNTU로 파일 이것저것 만지다가 오류가 발생했었는데, 확장자가 swp인 파일을 통해 복구했던 기억이 있었습니다. 이번 문제도 비슷한 상황처럼 보이니 swp 파일을 이용해 해결할 수 있었습니다.
GET 방식의 파라미터 phone과 id가 있다면 데이터베이스에 등록합니다. 아래에서는 공인 아이피와 id 값이 'admin'으로 일치하는 것이 있다면 문제가 풀리는 형식입니다. 그 아래에서는 공인아이피와 일치하는 것을 모두 가져와 id-phone의 형식으로 주석처리해줍니다. 결국엔 제 공인 아이피와 그 id가 admin이 되도록 등록해준 뒤 새로고침을 하면 풀립니다. insert 질의할 때는 컬럼명을 지정해줬다면 여러 개의 튜플들을 넣어줄 수 있습니다. INSERT ㅁㅁㅁㅁ(OO, %%) VALUES('hi', 'good'), ('nice', '123'), ('....... 위와 같은 형식으로 말이죠. phone 등록 부분은 쿼터로 감싸져있지 않습니다. -> 취약한 부분이 될 수 있습니다. 'admin..
첫번째 문제 GET 방식의 파라미터 hehe라는 값을 가진 get을 요구합니다. 두번째 문제 POST 방식의 파라미터 hehe라는 값을 가진 post와 hehe2라는 값을 가진 post2를 요구합니다. 프록시를 통해 해결하거나 콘솔 또는 html 파일을 하나 새로 만들어서 해결할 수 있습니다. 세번째 문제 공인 아이피를 GET 방식의 myip 값으로 넣어주면 됩니다. 네번째 문제 python을 통해 현재 시간을 md5로 암호화하고 보내면 되겠지만, 비교적 간단한 문제이기도 하고 귀찮으니 타이밍에 맞추어 해결했습니다! 다섯번째 문제 GET 방식의 imget, POST 방식의 impost, imcookie라는 COOKIE가 있으면 해결되는 문제입니다. 저는 프록시로 해결했습니다. 여섯번째 문제 md5로 암호..