Linux web渗透攻防

Web 渗透与攻防在 Linux 中的实现(以下内容仅用于学习安全知识和测试安全机制,禁止用于非法活动)及代码示例

SQL 注入检测(以 Python 和 SQLmap 为例)

安装 SQLmap:

可以从 SQLmap 官方网站(https://sqlmap.org/)下载,解压后即可使用。通常可以通过命令克隆代码仓库

复制代码
git clone https://github.com/sqlmap/sqlmap.git

然后进入目录使用命令运行

复制代码
python sqlmap.py

使用 SQLmap 进行 SQL 注入检测:

运行命令

复制代码
python sqlmap.py -u http://example.com/login.php --data "username=&password="

http://example.com/login.php替换为目标登录页面的 URL,--data参数后的内容根据实际表单数据修改 来检测是否存在 SQL 注入漏洞。

简单的手动检测 SQL 注入代码示例(使用 Python 的 requests 库)

复制代码
import requests

def sql_injection_test(url):
    payloads = ["' or '1'='1", "1' or '1'='1 --"]
    for payload in payloads:
        data = {"username": payload, "password": "test"}
        try:
            response = requests.post(url, data=data)
            if "Login successful" in response.text:
                print("可能存在SQL注入漏洞, payload: ", payload)
        except requests.RequestException as e:
            print("请求出错: ", e)

if __name__ == "__main__":
    target_url = input("请输入要测试SQL注入的登录页面URL:")
    sql_injection_test(target_url)

XSS(跨站脚本攻击)检测

使用工具方式(以 XSS - Striker 为例)

安装 XSS - Striker:

从官方网站(https://xsstrike.github.io/)下载,或者通过命令克隆代码仓库

复制代码
git clone https://github.com/s0md3v/XSS - Striker.git

进入目录后按照文档安装依赖并运行。

使用 XSS - Striker 检测 XSS 漏洞:

运行命令

复制代码
python xsstrike.py -u http://example.com/search.php

http://example.com/search.php替换为目标页面 URL 来检测是否存在 XSS 漏洞。

简单的手动检测 XSS 代码示例(使用 Python 的 requests 和 BeautifulSoup 库)

复制代码
import requests
from bs4 import BeautifulSoup

def xss_detection(url):
    payloads = ["<script>alert('XSS')</script>", "<img src=x onerror=alert('XSS')>"]
    for payload in payloads:
        try:
            data = {"input": payload}
            response = requests.post(url, data=data)
            soup = BeautifulSoup(response.text, 'html.parser')
            if payload in soup.text:
                print("可能存在XSS漏洞, payload: ", payload)
        except requests.RequestException as e:
            print("请求出错: ", e)

if __name__ =="__main__":
    target_url = input("请输入要测试XSS的页面URL:")
    xss_detection(target_url)

防御措施示例(以防止 SQL 注入为例,在 Python 的 Flask 框架中)

复制代码
from flask import Flask, request, jsonify
import sqlite3

app = Flask(__name__)

# 正确的数据库查询方式,使用参数化查询
@app.route('/login', method=['POST'])
def login():
    username = request.form.get('username')
    password = request.form.get('password')
    conn = sqlite3.connect('users.db')
    cursor = conn.cursor()
    query = "SELECT * FROM users WHERE username =? AND password =?"
    cursor.execute(query, (username, password))
    user = cursor.fetchone()
    if user:
        return jsonify({"message": "Login successful"})
    else:
        return jsonify({"message": "Login failed"})

if __name__ == "__main__":
    app.run()

在上述代码中,通过使用参数化查询(cursor.execute(query, (username, password))),将用户输入作为参数传递,而不是直接拼接 SQL 语句,从而有效地防止了 SQL 注入攻击。对于 XSS 防御,在 Web 应用中可以使用模板引擎的自动转义功能(如在 Flask 中,Jinja2 模板引擎默认会对变量进行转义),或者手动对用户输入进行 HTML 转义。

相关推荐
共享家95271 小时前
深入剖析Linux常用命令,助力高效操作
linux·运维·服务器
Zfox_2 小时前
【C++项目】从零实现RPC框架「四」:业务层实现与项目使用
linux·开发语言·c++·rpc·项目
吃旺旺雪饼的小男孩2 小时前
Ubuntu 22.04 安装和运行 EDK2 超详细教程
linux·运维·ubuntu
IT小馋猫2 小时前
Linux 企业项目服务器组建(附脚本)
linux·服务器·网络
阿政一号2 小时前
Linux进程间通信:【目的】【管道】【匿名管道】【命名管道】【System V 共享内存】
linux·运维·服务器·进程间通信
又过一个秋3 小时前
【sylar-webserver】7 定时器模块
linux·c++
啊哦1113 小时前
配置防火墙和SELinux(1)
linux·服务器·网络
唐青枫3 小时前
Linux 换行符的使用详解
linux
A charmer3 小时前
【Linux】文件系统知识梳理:从磁盘硬件到文件管理
linux·运维·服务器
Cynthia的梦4 小时前
Linux学习-Linux进程间通信(IPC)聊天程序实践指南
linux·运维·学习