Hacking/Vuln.

PHP preg_replace() RCE vuln.

2017. 7. 3. 17:32

PHP preg_replace() RCE Vuln.

H3X0R팀 소속 BoB 6기 ch4n3.



preg_replace() function.

 preg_replace() 함수는 정규식을 이용해서 찾은 문자열을 특정 문자열로 치환해주는 함수이다. 이 함수에 대한 더 자세한 정보는 http://php.net/manual/kr/function.preg-replace.php 여기서 확인해주길 바란다.


Vuln.

 이 함수에서 쓸 수 있는 변경자 중 하나가 /e이다. 이 변경자는 replacement 인수에 php 함수를 쓸 수 있도록 허용한다. 그럼 만약에 사용자가 preg_replace() 함수의 인자를 모두 수정할 수 있다면 어떻게 될까. 


이런 PHP 코드가 있다고 하자. 


여기서 RCE 취약점을 할 수 있다. 무려 함수를 사용할 수 있기 때문에 발생한 취약점이다.




a가 phpinfo()의 반환값으로 변할 것이다. 그럼 여기서 뭔갈 더 해보자.


이렇게 우리는 CMD를 실행시킬 수 있었다. 




Result

유저의 input으로 pattern을 받으면 안된다는 것을 알 수 있었다. 그리고 막으려면 미리 변경자를 지정해주어야할 것이다.














'Hacking > Vuln.' 카테고리의 다른 글

비오비 프로젝트 관련  (0) 2017.10.12
PHP preg_replace RCE vuln.  (0) 2017.08.21
Naver Stored XSS 취약점  (0) 2017.07.03
Benedu XSS 취약점  (0) 2017.05.25
그누보드 5.0.0 버전 보안 취약점  (0) 2017.05.18