본문 바로가기

모의해킹/취약점분석 단계

취약점분석 단계 - (5) nmap script - php, mysql

취약점분석 단계 - (5) nmap script - php, mysql


nmap -sV --script=http-php-version <ip> -p80

- 해당 ip, port에 접근하여 <ip,port>에 해당하는 php서비스의 버전정보를 획득하는 스크립트이다.


local LOGO_HASHES = {

  -- Bunny (Carmella)

  ["37e194b799d4aaff10e39c4e3b2679a2"] = {"5.0.0 - 5.0.3"},

  -- Black Scottish Terrier (Scotch)

  ["4b2c92409cf0bcf465d199e93a15ac3f"] = {"4.3.11", "4.4.0 - 4.4.9", "5.0.4 - 5.0.5", "5.1.0 - 5.1.2"},

  -- Colored

  ["50caaf268b4f3d260d720a1a29c5fe21"] = {"5.1.3 - 5.1.6", "5.2.0 - 5.2.17"},

  -- PHP Code Guy With Breadsticks (Thies C. Arntzen)

  ["85be3b4be7bfe839cbb3b4f2d30ff983"] = {"4.0.0 - 4.2.3"},

  -- Brown Dog In Grass (Nadia)

  ["a57bd73e27be03a62dd6b3e1b537a72c"] = {"4.3.0 - 4.3.11"},

  -- Elephant

  ["fb3bbd9ccc4b3d9e0b3be89c5ff98a14"] = {"5.3.0 - 5.3.29", "5.4.0 - 5.4.45"},

}


스크립트의 아이디어는 다음과 같다.

php index page에는 php logo.png 이미지파일이 존재한다. 그런데, 이 이미지 파일은 php버전에 따라 조금씩 달라져서 각 버전별 hash값이 다르다.

이것을 이용하여 script내부에 각 버전별 logo 이미지에 대한 해시값을 저장해두고, <ip,port> 서비스에 접근하여 logo 이미지 파일을 해시한 결과값과 비교하여 매칭되는 php 버전을 찾는 것이다.


nmap -sV --script=mysql-empty-password <ip> -p3306 --packet-trace

- <ip,3306>에 해당하는 mysql 서비스에 접근한다. mysql 데이터베이스는 기본적으로 root 사용자이름이 존재하는데 데이터베이스 관리자의 실수로 root 사용자에 대한 비밀번호가 empty인 경우가 있다.

이것을 확인하는 .nse 스크립트이다.


nmap -sV --script=mysql-brute <ip> -p3306

- <ip,3306>에 해당하는 mysql 서비스에 접근하여 통상적으로 사용되는 <username,password>를 무작위 대입 공격하는 것이다.(= Credential Stuffing) 예를들어, 사용자이름 : admin 비밀번호 : 1234로 설정된 mysql 서비스가 존재하는 경우 무작위 대입 공격에 의해 해킹되는 것이다.