Latest Gnuboard version XSS to SQL Injection

 “3월의 나” 계획(브라우저 해킹)을 해놓고 2월의 나는 어디에 써놓았는지 기억이 안난다. OS X Kernel을 부시기로 했는데 조만간 부실 수 있을것 같다. 대신 OS X, iOS에서 발생하는 Exploitable할것 같은 버그를 찾았다. 열심히 분석해야겠다. 월간 임준오가 쉬면 곤란하니깐 2월엔 GnuBoard 취약점을 공개하겠다.

Summary

 BoB 과제를 진행하면서 찾은 취약점이다. 작년 시큐인사이드에서 adm1nkyj가 냈던 문제의 취약점과 매우 유사하다. 그 문제의 취약점도 그누보드 모티브다. 여기서 중요한건 패치를 전부 해야되는데 한곳만 해서 유사한 코드나 벡터를 통해 한번더 0-day로 만들 수 있다는 점이다.
 관리자 페이지에서 발생한 SQL Injection이라 관리자 권한을 흭득하는 XSS가 필요하다. 물론 XSS도 찾았기 때문에 같이 설명하겠다.

Vulnerability

– XSS

듣기로 그누보드 관리자 페이지에는 무수히 많은 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}';";
}
b는 addslash때문에 sqlinjection이 불가능하다. a는 Array를 줘야한다. 하지만 a가 String이 되어 버리면 어떻게 될까? 1 byte씩 들어가기 때문에 \를 하나 넣을 수 있게된다. 그렇게 되면…

// 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쪽에서도 하나 더 있었나 보다, 뭐 이런류의 취약점은 많을거라 생각한다.

오키나와 여행기

3월 3일 1일차

오후 1시 30분 비행기를 타고 오후 4시 30분정도에 나하 공항에 도착했다. 비가 많이 내려 착륙이 40분 정도 지연되었다. 공항에서 숙소까지는 한 20분정도가 소요되었다. 원래 버스를 타려고 했지만 버스 타는곳을 찾지 못했다. 뮌헨에서도 그렇고 버스타는건 어렵다. 결국 모노레일을 타고 Prefectrual Office역에서 하차했다. 숙소에 도착해 짐을 풀고 뒹굴대다가 밥을 먹으러 갔다. 가기 전 여러 맛집들이나 관광명소를 찾아보기 위해 네이버 블로그를 돌아본 결과, 길을 걷다 분위기가 좋은 집에 들어가라고 했다. 어디든지 다 맛있다고. 숙소 앞에 있는 라멘집을 선택했다. 라멘이 기름기가 많고 영양소가 풍부해 여행 첫날에 어올린다고 했다. 맛있게 먹고 그냥 숙소에 들어가기 아쉬워 마트에가 생수와 간식을 샀다. 숙소에서 목욕하고 뒹굴대다가 잠에 들었다. 일본은 작은 집이라도 모두 욕조가 있어 좋은것 같다. 따듯한 물에 몸을 담구는건 언제든 좋아.

부릉 부릉

첫날 먹었던 라멘

3월 4일 2일차

새벽 7시쯤에 잠에서 깼다. 12시쯤 완벽하게 잠에서 깰 수 있었는데, 잠을 설친 탓인지 씻다가 코피가 났다. 츄라우미 수족관과 코끼리 바위로 알려진 만좌모등을 둘러보기위해 계획을 짰다. 그런데 오키나와섬의 북부라 내가 있는 숙소와는 2시간 이상 차이가 난다. 마치 제주도의 제주시와 서귀포시의 차이 정도이다. 절망하고 있는 사이 네이버 지식인에 버스투어를 추천하는 답변을 보았다. 당장 알아보았다. 이런, 예약이 모두 마감되거나 3일전 예약이라 우리가 오키나와에 있는 동안은 이용할 수 가 없었다. 절망에 빠져있던 우리를 구해준건 한 여행사였다. 화요일에 예약이 가능했다! 화요일은 비도 안오고 좋은 날씨기에 기분이 좋았다. 예약을 한후 아침이자 점심이자 저녁을 16시에 먹으러 나갔다. 일본은 스테이크가 비교적 한국에 비해 저렴하기 때문에 많이들 먹는다. 우리는 랍스터와 스테이크 세트 2개와 안심 스테이크 1개를 시켰다. 물도 기본적으로 제공해줘서 행복했다. 스테이크는 진짜 환상적이었다. 굽기는 미디움으로 했는데 미디움 레어에 비해 더 맛있었던것 같다. 안심이 미디움이었다. 맛있게 밥을 먹고 바다를 보러 나미노우에 해변에 갔다. 바다 가는길에 신사가 있어 잠깐 들렀다. 소원과 함께 기도를 드린 후 오미쿠지를 뽑으러 갔다. 중길이 나왔는데 가장 인상깊었던건 Always remain honest. 서양 관광객들도 많이 보이고 일본 아이들 산책나온 노부부들 데이트하러온 연인들이 보였다. 그들은 모두 행복해 보였다. 후후, 나도 나중에 여자친구랑 오고싶다. 바다에 발을 담궈보였다. 아직은 차다. 내 인생처럼 아직 화창한 여름이 되려면 조금 남은것이다! 돌아오는 길에 여러 정원들 공원들을 살펴보았다. 오는길에 인상적인 이쁜 식당을 보았다! 숙소에 들어와 잠시 휴식을 취한 후 국제거리를 향했다. 국제거리는 동양의 하와이라고 불리우는 곳이다. 나하공항에 도착했을때 놀랐던건 야자수가 있다는 것이다. 국제거리 곳곳에 야자수들이 심어져 있어 하와이를 연상케한다. 아, 숙소 주변엔 한국분들이 안계셨는데 국제거리에는 이곳 저곳에서 한국어가 들려왔다. 포장마차 거리에서 저녁을 먹으려 했는데 앞까지 가서 먹을것이 별로 없는것과 다훈이형이 배가 안고파 그냥 나왔다 ㅜㅜ. 돈키호테 구경하고 녹차맛 엔초맛 아이스크림을 입에 물고 숙소를 행했다. 아 참, 돌아오는 길에 패밀리마트에서 아침에 먹을 컵라면과 저녁에 먹을 맥주와 도시락을 샀다! 여행을 하면 즐거운 이유가 내일은 또 무얼 할지 설레는 마음으로 잠자리에 들 수 있어서인것 같다. 한국에 돌아가면 이런 마음가짐으로 인생을 조금 더 열심히 살아봐야겠다. 이제 씻고 잘거다. 자기전에 컴퓨터 하다가 7공주가 슈가맨에 나온것을 보았다. 오인영씨의 인스타와 페이스북을 보며 느낀건, 모든걸 가졌는데도 자기 자신에 부족하다 느끼고 열심히 하는 사람이란 것이다. 이렇지 못한 내 자신에 반성한다. 현재 삶에 안주하지 말고 항상 최선을 다해야겠다.

먹었던 스테이크

오마쿠지

가는 길에 벗꽃 이뻐서..

해변

퐁당

3월 5일 3일차

아침 부터 비가 내린다. 아침은 어제 사온 우동을 먹고 4시-5시까지 침대에서 뒹굴었다.. 류보 백화점의 포켓몬 스토어를 갔다. 귀여운 포켓몬들이 참 많았다. 잠만보 인형과 미니레고를 구매했다. 국제거리의 포장마차 거리에서 솜사탕 스키야키로 저녁을 먹은 후 돈키호테에서 물건들을 샀다.. 시간이 지나고 쓰는 글이라 기억이 가물가물하다.. 무료하게 시간을 보내고 숙소에서 휴식을 취하며 내일 있을 버스 투어를 준비했다.

맛있었다

잠만보

솜사탕 스키야키, 녹고나서 먹으면 된다

가리비 요리.. 맛있다

3월 6일 4일차

오늘은 오키나와 북부 버스투어가 있는 날이다. 7시 기상을 해야하는데 전날 너무 늦게 잠자리에 들어 힘들었다. 버스투어는 이틀전인 일요일날 예약했었다. 여행을 시작할때 랜드마크들이 몰려있는 북부에 대중교통이나 렌트카를 통해 가려고 했었다. 렌트카는 국제 운전 면허가 없기에 불가능 했고 대중교통은 시간도 시간이지만 비용이 너무 비쌌다. 왕복 인당 4천엔 정도. 그래서 교통비와 랜드마크 입장료가 포함되고 길라잡이와 함께하는 버스투어를 선택했다. 둘이합쳐서 11만원에 다녀왔다. 류보백화점에서 탑승해 T-Gallery, 아메리칸 빌리지를 거쳐 첫 목적지인 추라우미 수족관에 도착했다. 고래상어로 유명하다고 한다. 11시에 시작하는 돌고래 쇼를 관람했다. 길라잡이분이 말하시길, 어떤 분들은 돌고래를 학대하는거지 않냐, 라고 하시는분들이 계시다고 했다. 돌고래는 아이큐가 높은 동물이기에 스트레스를 받으면 자살을 하게 된다. 하지만 쇼를 호스트하는 돌고래들은 자살 하지 않고 평균이상으로 장수하고 있다고 한다. 뭐 다들 맞춰살아가는게 아니겠는가. 수족관 안으로 들어가 여러가지 신비한 생물들을 보고 가장 귀여운 가오리도 보았다. 출구 바로 앞에 듀공과 바다거북이가 사는 곳이 있다. 듀공 또한 너무 귀엽다 흑흑.. 점심시간이 되어 무얼 먹을까 고민하다 버스에서 내렸던 샌츄리온 호텔 뷔페를 가기로 했다. 맛은, 별로였다. 아니 먹는게 힘들었다. 흑흑.. 이런 뷔페를 4만원이나 주고 먹다니… 암튼 밥의 여파였을까 여행 내내 조금 골골 되었다. 두번째 목적지는 코우리 대교다. 바다 풍경이 참 이쁘다. 다리위에서 바다를 보면 얕아보이는데 물이 맑아서 그렇다고 한다. 얕은곳도 3~4M고 깊은곳은 수십M라고 한다. 다리 아래에 해변이 있다. 해변을 돌아다니다가 용진이 동생을 보았다 ㅋㅋㅋ. 오키나와는 섬이라 다양한 소금이 많이 생산된다고 했다. 그래서 그런지 소금맛 아이스크림도 있다. 블루씰이란 아이스크림가게에서 소금과 바닐라를 먹었다. 한 40분 버스를 탔나 파인애플 파크에 도착했다. 입구에서 사진을 찍어주는데 추라우미 수족관처럼 무료로 주지 않고 다 사야한다. 너무 비싸다 !!! 입장하면 무인 자동차를 타고 공원 내부를 둘러볼 수 있는데 움직이는게 신기하다. 분명 바닥엔 센서같은게 없어보이는데 자동으로 움직인다.. Self-Driving Car 기술이 이런 공원까지 들어오다니.. 뭐 아무튼 원리를 찾지 못했다.. 차간 간격도 잘 유지하고 신기하다. 공원 출구에는 어디에서나 볼 수 있는 기념품 판매점이 있다. 파인애플 파크에는 색다른점이 있는데, 모든 기념품을 체험하고 시식해볼 수 있다는것이다. 파인애플 파크에서 재배한 파인애플로 만든 여러가지 음식이 눈에 띄었다. 난 그중에서도 파인애플 레드 와인이 젤 맛있었다. 아 참 중간에 오마쿠지 비슷한게 있어서 뽑았는데 온통 일본어로 되어있었다. 길라집이분에게 부탁드리니 읽어주셨다. 꼭 성공한다고 하시더라 대길이라고. ㅎㅎㅋ 열심히 살아야징. 마지막 장소인 만좌모로 향했다. 만좌모는 만명이 앉을 수 있을만큼 넓다고 이름이 붙어진거다. 괜찮아 사랑이야 촬영지이기도 하다. 실제로 만좌모 위에는 못가보고 건너편 절벽에서 볼 수 있었다. 어딜가나 그렇듯 중국인들이 진짜 많았다. 사진 찍기도 힘들어서 진짜 대충 찍었다. 아, 그리고 바닷가라 그랬는지 몰라도 바람이 엄청 불었다. 셔츠를 안챙겨갔으면 감기에 걸렸겠지.. 우리의 버스투어는 여기까지다. 하지만 중간에 아메리칸 빌리지에서 내릴 수 있어 둘러보기로 했다. 사실 가장 큰 목적은 관람차를 타는것이었다. 어릴때 에버랜드에서 탄것 말고는 한국에서 타본적이 없어 항상 관람차에 대한 욕구가 강했다. 베가스에서도 하이롤러를 탔듯이 아메리칸 빌리지에서도 관람차를 탔다. 분명 줄이 있을것 같았는데 다행이 사람이 없어 바로 탈 수 있었다. 야경이 진짜 멋있었다. 저녁은 타코라이스라는것을 먹었다. 맛은 평범했다. 스시는 한국에서 하도 먹었기에 이번 여행에 먹지 않았나 싶다. 택시에 힘든 몸을 싣고 숙소로 향했다. 짐 정리를 하고 잠에 들었다.

커여운 돌고래

코우리 대교

소금 바닐라맛 아이스크림

무인으로 운행되는 자동차들..

타코 라이스

아메리칸 빌리지에서

3월 7일 5일차, 마지막 날.

오늘은 한국가는 날이다. 비행기는 4시 35분. 체크아웃은 12시. 그 동안 할게 필요했다. 원래 내 계획은 슈리성이나 나하에서 가까운 관광지를 둘러보는 것이었는데 늦게 일어나기도 했고 시간도 없을것 같아서 점심만 먹고 공항 가기로 했다. 야키니쿠를 먹으려 했지만 밤 부터 열기에 첫날 봐둔 텐동집에 갔다. 텐동과 츠케멘 세트를 시켰다. ㅎ후 맛이 아주 좋았다. 배불러서 얼마 먹지 못한게 참 아쉽다. 공항은 모노레일을 타고 갔다. 나하 공항은 무척 작았다. 체크인 카운터도 2개밖에 없었다. 하나를 두 항공사가 나눠써 3개까지 만들어졌네 1시쯤 가면 30분 기다리고 체크인 할 수 있을줄 알았는데 2시간 전부터 열린다. 카페에서 한참 시간을 보내다 수속을 마치고 면세점 안으로 들어갔다. 면세점도 작았다.. 가는 비행기도 30분 딜레이 되었다.. 보딩하자마자 잠에들어 순식간에 인천공항에 도착했다. 계절밥상에서 저녁 먹으려고 했는데 찾지 못해 뚜레쥬르에서 간단하게 밥을 먹었다!

텐동과 츠케멘

인천 저녁

만든것

끝으로,,

여행을 하면 항상 배우는게 많다. 번뜩이는 아이디어도 몇개 떠오르고, 여행 관련 서비스 아이디어도 하나 생각났다. 지금 까지 나온 서비스들의 단점이랄까.. 불편한점을 최소한 것이다. 뭐 암튼 휴양에 가까운 여행이었는데 나름 버스투어도 예약하고 알차게 보냈던것 같다!!! 다다음주에 싱가폴 가는데 (여행은 아니지만,,) 재미있었으면 좋겠다! 아니 여행은 항상 즐거워 !

여행을 하면 즐거운 이유가 내일은 또 무얼 할지 설레는 마음으로 잠자리에 들 수 있어서인것 같다. 한국에 돌아가면 이런 마음가짐으로 인생을 조금 더 열심히 살아봐야겠다. 이제 씻고 잘거다.

이 부분이 가장 맘에 돈다 !!

잘자렴 여러분~~