Summary
Vulnerability
듣기로 그누보드 관리자 페이지에는 무수히 많은 XSS취약점이 존재한다. serialization동작 없이 `echo $variable;`을 하다보니 당연할 수 밖에 없다. 소스코드 리뷰를 진행하니 금방 찾을 수 있었다. adm/mail_select_form.php 파일 71, 114줄에 취약점이 존재한다.
value="">
그누보드에서는 모든 피라미터에 addslash하여 XSS를 방어한다. html tag를 파싱할때 attribute안에 있는 \”는 “라고 인식하지 않고 attribute의 종료로 인식된다. 따라서 다음과 같은 상황이 발생한다.
value="\">alert(1);">
성공적으로 공격이 가능하다,, Chrome XSS Auditor를 Bypass하려면 약간의 Trick을 주면 된다.- SQL Injectionaddslash를 하기 때문에 basic한 sql injection이 발생한 가능성이 없다. 그러므로 advanced한 취약점을 찾아야하는데,, 작년에 adm1nkyj가 secuinside때 낸 문제가 떠올랐다. 그 문제도 그누보드를 사용한 third-party앱에서 찾은 취약점을 기반해 낸것이다. 관련된 코드를 찾으니 아직 패치가 되지 않은 한 부분이 있었다.. adm/auth_list_delete.php 파일 12~24줄을 보면 된다. 요약하면 다음과 같다.인자를 Array로 받는 로직중 그 Array의 값을 그대로 sql query에 사용했을때 발생하는 문제다.
$b = $_GET['b']; for ($i=0; $i<strlen($a); $i++) { $query = "select * from table1 where a='{$a[i]}' and b='{$b}';"; }
// a : \ → addslash → \\ // b: Attack Query $query = "select * from table1 where a='\' and b='Attack Query#';";<span id="mce_SELREST_start" style="overflow:hidden;line-height:0;"></span>
따단..
업데이트
26th Mar.
크레딧 상태가 이상하지만, 뭐 .. 어쩔 수 없다.
커밋 로그를 살펴보니 admin 페이지 말고도 file board쪽에서도 하나 더 있었나 보다, 뭐 이런류의 취약점은 많을거라 생각한다.