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

相关推荐
虚伪的空想家4 小时前
KVM的ubuntu虚机如何关闭安全启动
linux·安全·ubuntu
t198751289 小时前
在Ubuntu 22.04系统上安装libimobiledevice
linux·运维·ubuntu
skywalk81639 小时前
linux安装Code Server 以便Comate IDE和CodeBuddy等都可以远程连上来
linux·运维·服务器·vscode·comate
晚风吹人醒.10 小时前
缓存中间件Redis安装及功能演示、企业案例
linux·数据库·redis·ubuntu·缓存·中间件
Hard but lovely11 小时前
linux: pthread库的使用和理解
linux
这儿有一堆花13 小时前
Kali Linux:探测存活到挖掘漏洞
linux·运维·服务器
松涛和鸣13 小时前
从零开始理解 C 语言函数指针与回调机制
linux·c语言·开发语言·嵌入式硬件·排序算法
皮小白14 小时前
ubuntu开机检查磁盘失败进入应急模式如何修复
linux·运维·ubuntu
邂逅星河浪漫14 小时前
【CentOS】虚拟机网卡IP地址修改步骤
linux·运维·centos
hhwyqwqhhwy14 小时前
linux 驱动开发相关
linux·驱动开发