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 转义。

相关推荐
Web3探索者2 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo2 天前
Linux系统中网线与USB网络共享冲突
linux
Sokach10153 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao4 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3105 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode5 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
A小辣椒7 天前
TShark:Wireshark CLI 功能
linux
A小辣椒7 天前
TShark:基础知识
linux
AlfredZhao7 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao8 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi