'Security/HDCon'에 해당되는 글 4건

  1. 2010/05/16 HDCon 2010 예선 4번 문제 풀이 (8)
  2. 2010/05/16 HDCon 2010 예선 3번 문제 풀이 (3)
  3. 2010/05/16 HDCon 2010 예선 2번 문제 풀이 (4)
  4. 2010/05/16 HDCon 2010 예선 1번 문제 풀이 (2)
2010/05/16 13:23
4번 문제는 Forensic 문제였습니다. hdcon.img.gz 라는 이미지파일이 주어졌구요. gz압축을 해제하시면 hdcon.img 라는 리눅스 시스템 이미지가 주어졌습니다.
4번 문제의 정확한 본문은 기억이 나지 않지만... hdcon.img 는 해커로부터 해킹당해서 관리자 비밀번호를 노출당한 웹서버의 이미지 파일이라 합니다.

FTK Imager로 열어보니, 로그들은 이미 통째로 갈아 엎힌 상태더군요...

혹시나 하는 마음에 unallocated space를 보았습니다.


^^ 로그가 남아있군요. 다행이도(?) 완벽히 삭제하진 못한것 같습니다.

이 로그가 해커가 남긴건지 어떻게 아십니까? 라고 생각하신다면 여기를 눌러주세요.ㅋㅋ


그럼 이제 로그를 분석해봅시다.

/usr/local/lib/python2.6/ 에다가 sniffit (!!) 을 받으신 후 perlxml 으로 이름을 바꾼담에 실행하시고, 로그를 날리고 가셨군요.
관리자가 telnet이나 ssh로 접속중이었다면 비밀번호가 노출되었겠어요..

sniffit 실행 인자를 보시면, /usr/local/lib/python2.6/configx.py 에 pcap 로그가 남아있겠군요.
그렇지만 그 파일은 삭제된 것 같습니다. 그렇지만 unallocated space를 보시면 이곳에는 pcap파일이 남아있습니다. (휴)
57224 라는 파일이 pcap파일입니다. (configx.py 였겠죠 ㅎㅎ)

Wireshark로 열어보시면..

짜잔 ! Password: 라고 서버에서 답신이왔네요.ㅋ (이것 바로 이전 패킷은 client에서 su\n 라고 말한거였습니다.ㅋ)

바로 다음 패킷인 27번 패킷부터 비밀번호 입력이 ~~ 있었겠네요.ㅋ

답은 H@rd44or*ns1c8760$!em 였습니다.

클리어 ~


P.S. 로그따위 안보고 unallocated spaces의 모든 파일 다 긁어서 하나하나 확인했더라면 더 빨리 클리어가 가능했겠죠? ㅎㅎ;
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

'Security > HDCon' 카테고리의 다른 글

HDCon 2010 예선 4번 문제 풀이  (8) 2010/05/16
HDCon 2010 예선 3번 문제 풀이  (3) 2010/05/16
HDCon 2010 예선 2번 문제 풀이  (4) 2010/05/16
HDCon 2010 예선 1번 문제 풀이  (2) 2010/05/16
Posted by VHAIN
2010/05/16 13:22
3번 문제는 주최측이 미리 준비해둔 GTalk 봇들과 대화를(?) 통해 답을 얻어내는 문제였습니다.
봇에게 아무 말이나 하면 "Unknown command, Type "help" for available commands!" 라고 대답을 합니다.
help 를 입력해 봅시다.
Available commands[user]:

base64: Returns passed arguments base64'ed
ls: Displays file list
rot13: Returns passed arguments rot13'ed
time: Displays current server time
whoami: Tells you your username

Type help <command name> to get more info about that specific command,

ls 를 입력해 봅시다.
DB2,txt Infomix,txt Ingres,txt MSSQL,txt MySQL,txt Oracle,txt PostgreSQL,txt

상위 디렉터리를 보기 위해...
ls ../ 를 입력해 봅시다.
File not found,

음... ../ 가 먹히지 않는걸까요? 하지만 상위 디렉터리를 보기 위한 다른 명령이 있습니다.
ls .\. 를 입력해 봅시다.
public private

public 폴더를 ls .\./public 으로 들여다보니 기존에 있었던 폴더같구요... private를 들여다 보겠습니다.
ls .\./private 를 입력해 봅시다.
memo1 ?memo2 memo3

메모를 읽고 싶습니다. help에는 없었지만, 본능적으로 cat을 입력해보았습니다.
cat .\./private/memo1 를 입력해 봅시다.
Need admin privilege,

오호... cat명령이 있긴 한데 관리자 권한이 없다 하는군요.
whoami 를 입력해 봅시다.
vhain6512@gmail,com/Talk,v10456D8BACD

이멜주소/리소스 의 형태로 되어있습니다. 여기서 전 Google Talk 프로그램을 이용했었습니다. 리소스의 경우엔 실행한 프로그램에 따라 달라지더라구요. 그래서 전 GTalk 이 이용하는 프로토콜인 XMPP를 이용하는 클라이언트를 직접 작성해보기에 이릅니다.. ;; (XMPP 웹사이트에 많은 라이브러리들이 있더군요...ㅠㅠ 저는 대회 다 끝나고 알았다는... 참고하시면 client 만드시는데 도움이 되실겁니다. http://xmpp.org/software/libraries.shtml)

작성 후 help라는 말을 날려보았더니 응답이 이렇게 왔습니다.
<message to="vhain6512@gmail.com" type="chat" id="1214(request마다 각각 다른 id를 줍니다.)" from="hdconbot4@gmail.com/HDCONTalk49A12728"><body>Available commands[user]:

base64: Returns passed arguments base64'ed
ls: Displays file list
rot13: Returns passed arguments rot13'ed
time: Displays current server time
whoami: Tells you your username

Type help &lt;command name&gt; to get more info about that specific command,</body><thread>None</thread><nos:x value="disabled" xmlns:nos="google:nosave"/><arc:record otr="false" xmlns:arc="http://jabber.org/protocol/archive"/></message>

흠... 봇들은 HDCONTalk 를 리소스 (메신저타입?) 으로 이용하고있더라구요. 그리고 이 리소스는 로그인과정에서 client에서 server로 보내주게 되어잇는 부분이었습니다.
<iq type="set" id="request마다 각각 다른 id를 줍니다.">
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
<resource>VHAIN</resource>
</bind>
</iq>

이곳에서 VHAIN을 저도 봇들과 같이 HDCONTalk 으로 변경하여 로그인을 다시 시도해보았습니다.
로그인 후에 whoami 라고 말을했더니...
vhain6512@gmail,com/HDCONTalk77889A49

랍니다. 일단 의도대로는 잘 된것같군요.
help 라고 말 해 봅시다.
Available commands[admin]:

base64: Returns passed arguments base64'ed
cat: Displays file(argument: file or inode)
ls: Displays file list
rot13: Returns passed arguments rot13'ed
stat: Displays information about the server
time: Displays current server time
whoami: Tells you your username

Type help <command name> to get more info about that specific command,

ㅋㅋㅋㅋ Available commands[admin] 이라는군요.
자 성공입니다. !! 이제 아까 안됬던 memo1 읽기를 다시 시도해봅시다.
cat .\./private/memo1 을 입력해봅시다.
N,M 팀의 효율적인 팀웍을 위해
정보 공유 봇을 제작하였습니다,

불필요한 파일을 올리지 말고 사용하시길 바랍니다,
업로드에 필요한 정보는 memo2에 기록해 두겠습니다,

memo2를 읽으면 되겠네요. 그런데 memo2 파일이름이 아까 좀 이상했었습니다. ? 이런 문자가 있었던걸로 보아 뭔가 출력하기 곤란한 문자였나보군요...
help cat 을 입력해봅시다.
Displays file(argument: file or inode)

허허.. 파일이름이나 inode를 입력하라는군요. 파일이름 입력이 곤란하니...그래서 이번엔 inode를 이용하기로 합니다.
inode는 간단하게... 파일의 주소? 라고 말씀드리도록 하겠습니다.. (자세한것은 시간상... 하지만 구글신에게 여쭤보신다면..ㅎ)
memo2의 inode가 memo1과 memo3 사이에 있다는 가정 하에... 일단 memo1의 inode를 알아보도록 하겠습니다.
stat .\./private/memo1 을 입력합니다.
posix,stat_result(st_mode=33188, st_ino=59639L, st_dev=64512L, st_nlink=1, st_uid=1000, st_gid=1000, st_size=225L, st_atime=1273120860, st_mtime=1273120870, st_ctime=1273120870)

memo3의 inode를 알아보도록 하겠습니다.
stat .\./private/memo3 을 입력합니다.
posix,stat_result(st_mode=33188, st_ino=59644L, st_dev=64512L, st_nlink=1, st_uid=1000, st_gid=1000, st_size=143L, st_atime=1273120884, st_mtime=1273120887, st_ctime=1273120887)

memo1의 inode는 st_ino=59639, memo3의 inode는 st_ino=59644 이군요. ^^
cat 59640 ~ cat 59643. 네번 시도만 하시면 넷중이 하나 답이 나오겠군요. ~~
정답은 59639 였습니다.
cat 59639 를 입력하시면...
축하합니다!
아래 키를 입력하면 다음 단계로 진행할 수 있습니다,

Key is "_tob607^^3xpl07~~777"

클리어 ~

P.S. Pidgin 메신저에서 XMPP 콘솔을 이용해서 푸신 분도 계시는것 같더라구요 ~
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

'Security > HDCon' 카테고리의 다른 글

HDCon 2010 예선 4번 문제 풀이  (8) 2010/05/16
HDCon 2010 예선 3번 문제 풀이  (3) 2010/05/16
HDCon 2010 예선 2번 문제 풀이  (4) 2010/05/16
HDCon 2010 예선 1번 문제 풀이  (2) 2010/05/16
Posted by VHAIN
2010/05/16 12:05
내용추가 : 아, 그리구요 아마 multipart/form-data로 보내야 했었던거 같습니다. \n이었나? @엿나 암튼 필터링 되었었을꺼에요.ㅎ 힌트로도 떴었더라죠 ~


2번 문제 서버에 접속하면 사이트가 하나 있습니다.
뭔가 의심이 갔던 것들을 말씀드리자면..

메뉴는 기억 안나는데요, pdf파일을 다운로드 하는 링크가 있던 페이지가 있었는데, download.php?no=숫자&filename=파일명 뭐 이런식으로 링크가 걸려있었습니다. 여기서 File Download 취약점을 생각해보았구요,

그리고 정답이었던 Contact Us 메뉴에 있는 관리자에게 이멜 전송하기 였습니다.

첨엔 Contact Us가 OCR + Blind SQL Injection일까, XSS일까 생각도 엄청 많이 했었는데요...ㅜㅜ (그래서 시간엄청죽였죠)
풀이법 포스팅이니만큼 풀이법을 말씀드리겠습니다.

정답은 Mail Header Injection입니다.

PHP에서 메일을 전송할 때 mail() 함수를 사용한다는 생각으로도 접근했었는데요,
mail() 함수의 사용법은 이러합니다.

mail(받는사람 , 제목 , 내용 [, 추가헤더 [, 추가인자]]);

여기서 victim의 php코드를 예상해보자면..

$header = "From: "."contact us에서 작성한 이멜주소\n";
mail("관리자@이멜.주소", "contact us에서 작성한 제목", "contact us에서 작성한 내용", $header);

간단히 이정도가 될거라 예상했구요...
mail header에 Cc, Bcc 라는 항목을 추가함을 통해 참조, 숨은참조 등으로 추가적인 수신자를 지정할 수 있다는 사실..을 이용해서, contact us에서 이메일 주소를 작성할 때...

아무 이메일\nCc: 실제이멜
혹은
아무 이메일\n Bcc: 실제이멜

이런식으로 작성하시게 된다면, 관리자에게 갈 이메일을 자신도 받아볼 수 있겠죠? ^^;
성공하시게되면 받아보실 이멜입니다. ^^


정답은 : **CRLF_F0rmD4t4_4774<k_
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

'Security > HDCon' 카테고리의 다른 글

HDCon 2010 예선 4번 문제 풀이  (8) 2010/05/16
HDCon 2010 예선 3번 문제 풀이  (3) 2010/05/16
HDCon 2010 예선 2번 문제 풀이  (4) 2010/05/16
HDCon 2010 예선 1번 문제 풀이  (2) 2010/05/16
Posted by VHAIN
2010/05/16 11:48

문제에서 주어진 fresh.jpg 이미지 파일입니다.

트럭 좌측 하단에 QR Code가 있군여.

전 iPhone의 QRooQRoo 어플로 스캔하였습니다.

바로뜨더군요. ^^



정답은 : ~vvh3n_7he^^^R@1n_B3gin666_TQ_F@11

iPhone App 없이 QR Code Decode 해주는 사이트에서 푸신 분의 풀이법을 첨부합니다. :
http://tigernet.tistory.com/538
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

'Security > HDCon' 카테고리의 다른 글

HDCon 2010 예선 4번 문제 풀이  (8) 2010/05/16
HDCon 2010 예선 3번 문제 풀이  (3) 2010/05/16
HDCon 2010 예선 2번 문제 풀이  (4) 2010/05/16
HDCon 2010 예선 1번 문제 풀이  (2) 2010/05/16
Posted by VHAIN