브라우저 취약점 쉘코드를 작성하여, html의 unescape 부분에 %ue8fc%u00c3%u0000%u8960 이런 형태로 붙여넣었습니다. 그런데 작동이 되지 않았습니다.

원인을 찾아봤는데, bad character라고 하여 \x00 이 들어가면 동작이 되지 않던 것이었습니다.

이는 메타스플로잇에서 공개한 브라우저 취약점 공격 PoC에서도 확인할 수 있습니다.

http://www.exploit-db.com/exploits/23785/

 

 

아래는 메타스플로잇에서 제공하는 어셈블리어 코드로 쉘코드를 생성하는 방법입니다. LoadLibrary기능을 하는 쉘코드이며, generate 로 생성이 가능합니다. bad char 0x00 이 포함되어있어서 브라우저에서 정상동작하지 않습니다. 

https://github.com/rapid7/metasploit-framework/blob/master/external/source/shellcode/windows/x86/src/single/single_loadlibrary.asm

그대로 디버거에 붙여넣은 화면입니다.  

 

아래는 옵션을 주어 0x00을 제거하였습니다. 디폴트로 시카타가 나이라는 인코더가 선택됩니다. (일본어로, "어쩔수가 없지". 이름을 재미있게 지었군요. 

 그대로 디버거에 붙여넣은 화면입니다.  

디코더가 처음 부분에 삽입되어 있어서 한 라인씩 실행하다 보면, 평문으로 복호화가 됩니다. 

# 쉘코드 인코딩 하는 방법

msfencode라는 프로그램이 내장되어 있습니다.

옵션 설명

-e x86/shikata_ga_nai : 인코더 선택

-b '\x00' : Bad Character 제거

-i /root/loadlibrary.bin : 경로명 (쉘코드를 바이너리로 저장해주세요)

-t c : C언어 변수 타입으로 출력

+ Recent posts