웹 해킹/취약점
파이썬 pickle을 이용한 serialize 취약점
삼전동해커
2020. 9. 21. 11:47
파이썬 pickle을 이용해 직렬화 취약점을 알아보자.
이 취약점은 __reduce__ 메소드를 이용한다.
__reduce__ 메소드는 객체를 unpickling할 때 객체를 재구성하는 tuple을 반환해 준다.
이 때 tuple은 함수를 반환할 수 있어 함수 실행이 가능하다.
unpickling 되는 객체에 우리가 접근하는 것이 가능하다면 RCE공격이 가능하다.
__reduce__메소드를 재정의해 os.system("id")를 실행하게 했다.
객체 vul()을 생성하고,
객체를 직렬화 하는 과정인 pickle.dumps에서 __reduce__ 메소드가 실행되고
os.system("id")의 내용이 직렬화 된다.
이 후 역직렬화를 통해 제대로 내용을 볼 수 있다.
이렇게 출력이 된다.
밑에 에러는 dumps에 data가 아닌 객체를 넣어서 출력되는 에러인 것 같다.