๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ๏ธ 21-2 IPP/study & work

python ์—ฐ์Šต - 3

by hanwitjus 2021. 9. 16.

๋” ์–ด๋ ค์šธ ์ค„ ์•Œ์•˜๋˜ ์ดํด๋ž˜์Šค ๋กœ๊ทธ์ธ, ๋งˆ์ดํŽ˜์ด์ง€ ์ ‘๊ทผ์€ ์ž˜ ํ–ˆ๋Š”๋ฐ ๊ณต์œ ๊ธฐ ๋กœ๊ทธ์ธ, ์ตœ์‹  ํŽŒ์›จ์–ด ๋ฒ„์ „ ํ™•์ธ์€ ๋‹ค ํ•˜๋Š”๋ฐ ๊ฑฐ์˜ 3์ผ ๊ฑธ๋ฆฐ ๊ฒƒ ๊ฐ™๋‹ค. ๋ญ๊ฐ€ ์ด๋ ‡๊ฒŒ ์–ด๋ ค์šด์ง€.. ์•”ํŠผ ๊ฒฐ๊ตญ ํ•ด๋ƒˆ๋‹ค.

 

 

์ฒ˜์Œ์— ํ•ด๋งธ๋˜ ์ด์œ ๊ฐ€ ๋กœ๊ทธ์ธ ์œ ์ง€๊ฐ€ ์•ˆ๋˜๋Š” ๊ฑฐ์˜€๋‹ค. ์ด ์ „์— eclass ๊ฐ€์ง€๊ณ  ํ•ด๋ดค์„ ๋•Œ๋Š” ๋กœ๊ทธ์ธ ์œ ์ง€๊ฐ€ ์•ˆ๋๋˜๊ฒŒ ์•„๋‹ˆ๋ผ ์• ์ดˆ์— URL์„ ์ž˜๋ชป ์ž…๋ ฅํ•ด์„œ ๋กœ๊ทธ์ธ ์ž์ฒด๊ฐ€ ์•ˆ๋œ๊ฑฐ์˜€๊ณ  ์ด๋ฒˆ์—” ๋กœ๊ทธ์ธ์€ ๋ถ„๋ช…ํžˆ ๋๋Š”๋ฐ ๋กœ๊ทธ์ธ ํ•ด์•ผ์ง€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ด€๋ฆฌ ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๋ ค๊ณ  ํ•˜๋ฉด session time-out ์ด๋ผ๊ณ  ๋‚˜์™”๋‹ค.

 

์ด๋ ‡๊ฒŒ...

 

์•„๋ฌด๋ฆฌ ์ƒ๊ฐํ•ด๋„ ์ฟ ํ‚ค ๋ฌธ์ œ์ธ๊ฑด ์•Œ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๊ทธ๋ž˜์„œ ํŒŒ์ด์ฐธ์˜ ์ž๋™์™„์„ฑ๊ธฐ๋Šฅ์„ ๋นŒ๋ ค์„œ ํ—ค๋”๋“  ๋ฐ”๋””๋“  ์–ด๋””๋“  ์ €์žฅ๋ผ์žˆ์„ ์ฟ ํ‚ค์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  

response.request.headers

response.headers

response.cookies

๋“ฑ ๋ณ„ ํ•จ์ˆ˜ ๋‹ค ์จ๊ฐ€๋ฉด์„œ ์–ป์–ด์˜ค๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ๋Œ์•„์˜ค๋Š” ๊ฐ’์€ ๋‹ค None ์•„๋‹ˆ๋ฉด [] ๊ฐ™์ด ๋น„์–ด์žˆ๋‹ค๋Š” ๋ง ๋ฟ....

์ด ์ผ ์‹œํ‚จ์‚ฌ๋žŒ(ใ…Žใ„ฑ)์€ ํ—ค๋”์— ๋„˜์–ด์™€์•ผ ํ•˜๋Š” ๊ฑฐ๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ ํ—ค๋”์— ์—†.๋‹ค.๊ตฌ.์š”

 

 

๊ทผ๋ฐ ๋˜ ๊ด€๋ฆฌ์ž ๋ชจ๋“œ๋กœ ๋ณด๋ฉด Request Header์— ์ฟ ํ‚ค ๊ฐ’์ด ์žˆ๊ธด ํ•ด์„œ ๋” ํ—ท๊ฐˆ๋ ธ๋‹ค.

 

์ด๋ ‡๊ฒŒ...

 

๊ทผ๋ฐ Burp suite๋กœ ํ™•์ธํ•œ ๊ฒฐ๊ณผ Response ๊ฐ’์„ ์ž˜ ๋ณด๋ฉด ์ €๋ ‡๊ฒŒ HTML ํƒœ๊ทธ ์•ˆ์— JavaScript๋กœ ์ ํ˜€์žˆ์–ด์„œ response ํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ •๊ทœ์‹์œผ๋กœ ์ €๊ธฐ ์žˆ๋Š” setCookie() ๊ฐ’์„ ๊ฐ€์ ธ์™€์•ผ ํ–ˆ์—ˆ๋‹ค.

 

 

์•”ํŠผ ๊ทธ๋ ‡๊ฒŒ ํ•ด๊ฐ€์ง€๊ณ  ์™„์„ฑํ•œ ์ฝ”๋“œ๋Š” 

 

import time

import requests
from bs4 import BeautifulSoup
import sys
import re

proxies={"http":"http://localhost:8080"}
def func(ip):
    url = 'http://' + ip + '/sess-bin/login_session.cgi'
    loginURL = 'http://192.168.30.1/sess-bin/login_handler.cgi'
    response = requests.get(url)

    soup = BeautifulSoup(response.text, 'html.parser')

    title = soup.find('title')
    print(title.text)

    id_pw = 'admin'

    session = requests.session()

    data = {
        "init_status" : '1',
        "captcha_on" : '0',
        "captcha_file" : '',
        "username": id_pw,
        "passwd": id_pw,
        "default_passwd": '์ดˆ๊ธฐ์•”ํ˜ธ:admin(๋ณ€๊ฒฝํ•„์š”)',
        "captcha_code" : ''
    }

    res = session.post(loginURL, data=data)
    tmp = re.search(r'setCookie\(\'(\w+)\'\)', res.text)
    cookie = tmp.group(1)

    cookie = {'efm_session_id' : cookie}

    firmwareURL = 'http://' + ip + '/sess-bin/timepro.cgi?tmenu=iframe&smenu=sysconf_swupgrade_online_status'

    response = session.get(firmwareURL, cookies=cookie)

    time.sleep(10)
    response = session.get(firmwareURL, cookies=cookie)

    soup = BeautifulSoup(response.text, 'html.parser')
    tmp = re.search(r'ํŽŒ์›จ์–ด (\d+.\d+.\d+)', response.text)
    version = tmp.group(1)

    print("์˜จ๋ผ์ธ ๊ฒ€์ƒ‰์„ ํ†ตํ•˜์—ฌ ์ตœ์‹  ํŽŒ์›จ์–ด " + version + "์ด ๊ฒ€์ƒ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.")

if __name__ == "__main__":
    ip = sys.argv[1]
    func(ip)

 

** ์ฐธ๊ณ ๋กœ ์ €๊ธฐ์— proxies={"http":"http://localhost:8080"} ์ด ์ฝ”๋“œ๋Š” burp suite ํ™œ์šฉํ•  ๋•Œ Proxy์—์„œ HTTP history์— ํŽ˜์ด์ง€ ๋„˜์–ด๊ฐ€๋Š” ๊ณผ์ • ๋ณด์—ฌ์ฃผ๊ณ  request๋ž‘ response ๋ณด์—ฌ์ฃผ๋Š”๊ฑฐ์— ์žกํžˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์“ฐ๋Š”๊ฑฐ๊ณ  requests.get() ์ด๋‚˜, session.get(), session.post()๋“ฑ์— ์“ธ๋•Œ proxies=proxies ์ฒ˜๋Ÿผ ์“ฐ๋ฉด ๋œ๋‹ค.

 

 

๊ทธ๋Ÿผ ๋ญ ์ด๋Ÿฐ์‹์œผ๋กœ ๋œฌ๋‹ค.

 

 

 

๊ทธ๋ ‡๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š”

 

 

์ž˜๋œ๋‹ค^_____^

 

 

LIST

'โœ๏ธ 21-2 IPP > study & work' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

CVE ํฌ๋กค๋ง ํ”„๋กœ๊ทธ๋žจ ์ˆ˜์ •  (0) 2021.09.23
python ์—ฐ์Šต - 4  (0) 2021.09.23
python ์—ฐ์Šต - 1  (0) 2021.09.13
CVE, CWE, CCE  (0) 2021.09.08
CVE ID, Date, Severity ํ•œ๋ฒˆ์— ํฌ๋กค๋ง  (0) 2021.09.08

๋Œ“๊ธ€