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

相关推荐
xx~t7 小时前
嵌入式——进程与线程1
linux·c语言·学习·嵌入式·进程与线程
DevHub7 小时前
QEMU + Busybox 搭建嵌入式 Linux 开发环境:内核编译到启动,30 秒一个迭代
linux·运维·服务器
ouynagda7 小时前
Linux 进程管理详解:从概念到实践
linux·运维·网络
2401_890603407 小时前
Linux 基础文件IO
linux·运维·服务器
tx11208763587 小时前
K8S-pod管理与控制器管理
linux·运维·kubernetes·pod
老当益壮梁奶奶7 小时前
Linux软件编程学习笔记(七):线程分离与线程间通信详解
linux·c语言·c++·笔记·学习
Awh-7 小时前
Linux软件应用编程 第一章中:Linux文件操作
linux·运维·服务器
Tim风声(网络工程师)9 小时前
Kail下载
linux·运维·服务器
AOwhisky10 小时前
Linux 网络服务架设学习笔记(第五期)——Web 服务(上篇):Apache HTTP Server——从静态到动态
linux·运维·服务器·笔记·学习·云计算·apache
zbyyd10 小时前
Linux 多线程:互斥锁 &amp; 信号量
linux·c语言·开发语言·网络