【开发心得】黑客是如何攻击你的web应用的?

news2024/11/19 16:45:45

本文记录一次黑客利用sql注入漏洞攻击应用系统的全过程。

由于涉及到隐私,所以就不能上图了,尽量把过程描述的详细一下,希望能够给开发人员提个醒,有些漏洞,其实修补很简单。好在现在有了chatGPT,把你的代码交给它校验一下,会很容易发现逻辑漏洞的。

目录

系统背景

攻击过程

修复过程

小小总结


系统背景

开发框架:.net MVC

数据库:MS SQL Server

前端框架:Jquery

由于是10年前开发的系统,所以在安全和框架方面,都是欠缺的。好在中间进行了一次前后台拆分,在前端做了很多控制。所以这么多年下来,基本正常使用,相安无事。但这次问题偏偏出在了后端的ashx文件上。

ASHX文件可以执行以下任务:

  1. 处理表单提交:通过读取请求参数,您可以在ASHX文件中处理表单提交,并根据需要对数据进行处理。

  2. 生成动态内容:ASHX文件可以基于请求参数和条件生成动态内容,并将其包装在HTTP响应中返回给客户端。

  3. 提供文件下载:ASHX文件可以用于生成和提供文件下载。例如,您可以从数据库中检索文件内容,并将其作为响应返回给客户端,以便用户下载。

  4. 实现自定义HTTP处理:ASHX文件允许您实现自定义的HTTP处理逻辑。您可以根据需要处理HTTP头、状态码等,并生成相应的HTTP响应。

攻击过程

简单记录这次黑客攻击的过程,如下:

1、3月份开始攻击 ,但没有成功,此后就被黑客惦记,日志就不贴了,以免引起不必要的麻烦;

2、5月底的时候,通过在登录页的ashx文件,使用sql注入漏洞得到数据库权限,同一天的时间里(黑客的效率很高,生怕你发现),利用了xp_cmdshell进行了提权和文件操作;有漏洞的代码片段如下,是不是很低级?

string loginuser = context.Request["login-user"].ToString();

      此漏洞是先发现upload文件没有校验以后,逐步查IIS的日志查出来的。可见黑客对与IIS并不熟悉,没有删除其利用sql注入漏洞的日志。

3、文件并不是通过远程软件拷贝的,而是通过安装百度云的方式先上传到百度云管家的服务器上,然后又删除了百度云管家的程序。结果手脚不干净,还是留下了一个加密的日志,将来不知道能不能解密这个日志,通过百度网盘找到这个账号,就可以锁定黑客了。

修复过程

在上面的代码上放一个判断就可以解决问题,方法有很多,最简单的就是字符长度,一旦超出正常值,就抛错

string loginname = context.Request["login-name"].ToString();
if (loginname.Length > 10)
    return;

当然还有其他的方法,有些之前已经有了:

1、之前有IP地址白名单的,这样就避免黑客利用已有用户进行攻击,但是后来由于用户的IP地址经常变,人工维护很麻烦,后来就取消了,这次加上了,效果立马就显现出来了。

2、假如之前有WAF防火墙,是可以过滤掉这些注入漏洞的,可惜机房的人并没有考虑,只知道推卸责任,TMD;

小小总结

之前如果小心的话,其实是有些异常的,只是当时没有牢记“事出反常必有妖”这句话,大意

1、4月份的时候,发现两次正常批量业务过不去,当时还优化了批量业务的代码,重启了服务器才正常执行,其实都是与黑客入侵占用了服务器资源有关系的。

2、之前用远程工具,发现长时间连不上去,也是黑客已经在服务器上,点击了拒绝连接的原因,但机房的人也没有去查日志,仅仅是以“多试试”的理由糖塞过去。
3、幸运的是,5月底的时候,上述现象再次出现,立马又重启了服务器,没想到惊动了黑客,让他们以为是被发现了,停止了攻击。所以进入6月份以后,就没有发现有攻击的痕迹。

4、由于之前没有备机,今天的渗透都是在生产机上进行的,造成查找时间很长,都要靠眼睛去找。今后一定要考虑备机,那怕是冷备机。这样今后就可以用工具进行渗透测试。

5、最后,一定要找一个靠谱的运维,这次如果能够本着“事出反常必有妖”的原则,运维认真查一下日志的话,黑客的攻击是不会成功的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/827742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

调度:setTimeout 和 setInterval

有时一个函数并不需要立刻执行,而是等待特定一段时间之后再执行。这就是所谓的“计划调用(scheduling a call) setTimeout() 是延时器,setInterval() 是定时器 setTimeout 允许我们将函数推迟到一段时间间隔之后再执行。setInte…

mongodb docker 及常用命令

MongoDB属于非关系型数据库,它是由C编写的分布式文档数据库。内部使用类似于Json的bson二进制格式。 中文手册 https://www.w3cschool.cn/mongodb/ 安装 https://www.mongodb.com/try/download/community 二进制安装可见另一篇: centos7 mongodb 4.0.28…

el-tooltip设置文字溢出时展示否则不展示

改写el-tooltip使其支持文字溢出时展示否则不展示,而不是需要使用js设置单独控制 新建 src/utils/rewriteElTooltip.js (一模一样 cv就行) export default function rewriteElTooltip(el) {el.props {...el.props,overflow: Boolea…

docker: Error response from daemon: No command specified.

执行 docker run -it -d -v /home/dell/workspace/workspace/test_192.168.1.202_pipeline:/home/workspace1 --name test_192.168.1.202_pipeline_10 qnx:7.1报错 问题定位:export导入的镜像需要带上command,以下命令查看command信息 docker ps --no…

计算机二级Python基本操作题-序号44

1. # 使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个边长为100的三角形 import turtle for i in range(3): #绘制三条边turtle.seth(i * 120) #底边行进角度为0;右斜边行进角度为120(按逆时针);左斜边行进角度为240(按逆时针)turtle.fd(100) #边长为100…

甜椒叶病害数据集

1.数据集分为训练集和测试集 2.训练集如下所示 第一个文件夹是细菌斑叶(449张) 第二个是健康叶子(4014张) 测试集 细菌斑叶 11张 健康叶子10张 import numpy as np import os import matplotlib.pyplot as plt import cv2impor…

创建个人博客(在文章的列表页,根据文章标题和文章内容实现搜索)

1. 在视图文件增加搜索表单&#xff1a; 在文章列表页的视图文件中&#xff0c;增加一个搜索表单&#xff0c;包含一个文本搜索框和一个提交按钮 <% form_tag articles_path, method: :get do %><% text_field_tag :title, params[:title], placeholder: "搜索…

关于拓扑排序

又重新学了一下拓扑排序&#xff0c;这次发现就十分简单了&#xff0c;拓扑排序的步骤 1.他必须是一个有向无环图&#xff0c;起点我们就是入度为0的点 2.我们首先要输出的就是入度为0的点&#xff0c;然后依次删除这些点连向的点&#xff0c;使这些点的入度-1&#xff0c;如果…

Java POI 基于模板导出列表数据

目录 1、基于POI模板导出列表数据 &#x1f4da;1.1、需求 &#x1f4dd;1.2、思路 &#x1f331;1.3、实现 &#x1f3e1; 2、导出用户详细数据 &#x1f64e;2.1、需求 &#x1f4bc;2.2、思路 &#x1f468;‍&#x1f4bb;2.3、实现 &#x1f46d; 3、导出数据带图片、公式…

基于STM32设计的数显热水器

一、项目介绍 当前介绍的项目是基于 STM32F103ZET6 系列 MCU 设计的数显热水器&#xff0c;通过显示屏来显示热水器的温度及其工作状态&#xff0c;通过 PT100 传感器来检测热水器的温度变化&#xff0c;并通过电加热片实现加热过程&#xff0c;以达到控制热水器温度的目的。 …

虚拟机之间配置免密登录

目录 一、配置主机名映射 二、虚拟机配置SSH免密登录 三、验证 一、配置主机名映射 即修改/etc/hosts文件&#xff0c;将几台服务器和主机名进行映射。 注意每台服务器都要进行同样的配置。这样在各自服务器下&#xff0c;我们就可以通过主机名访问对应的ip地址了。 当然&…

拿捏--->打印菱形

文章目录 题目描述算法思路代码示例 题目描述 在屏幕上输出以下图案&#xff1a; 算法思路 代码示例 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {int n;scanf("%d", &n);//上半部分菱形for (int i 0; i < n; i) //上半部分…

LinearAlgebraMIT_6_ColumnSpaceAndNullSpace

这节课的两个重点是column space列空间和null space零空间。 x.1 pre-multiply/left multiply and post-multiply/right multiply 对于pre-multiply/left multiply左乘和post-multiply/right multiply右乘&#xff0c;如果用英文的pre-和post-是比较容易理解的&#xff0c; A…

Promise用法

学习了promise之后&#xff0c;有点懂但让我说又说不出来&#xff0c;参考别人的记录一下。 1.什么是promise&#xff1f; 2.promise解决了什么问题 3.es6 promise语法 &#xff08;1&#xff09;then链式操作语法 &#xff08;2&#xff09;catch的语法 &#xff08;3&#xf…

DataX 异构数据贴源同步产品 - 技术分享篇(一)

DataX 是阿里开源的一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 DataX设计理念 DataX本身作为数据同步框架&#xff0c;将不同数据源的同步抽象为从源头…

springboot自定义错误消息

为了提供自定义错误消息提示&#xff0c;springboot在resources目录下&#xff0c;有一个文件ValidationMessages.properties 用于存储 验证错误的消息提示&#xff1a; 比如&#xff1a; 这样一个ValidationMessage.properties username.notempty用户名不能为空 username.len…

【RTT驱动框架分析04】-I2C驱动框架分析

IIC RT-Thread IIC 应用编程 2.驱动分析 IIC总线设备继承自io设备驱动框架&#xff0c;RTT对IIC就只有2层的封装 IIC设备总线&#xff0c;在RTT内部有软件IIC和硬件IIC 设备驱动注册 rt_err_t rt_i2c_bus_device_register(struct rt_i2c_bus_device *bus,const char …

第六章:SpringMVC上

第六章&#xff1a;SpringMVC上 6.1&#xff1a;SpringMVC简介 什么是MVC MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分。 M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据。 一类称为实体类Bean&…

Hololens2二维码识别

配置 目前大部分Hololens进行二维码识别的开发都是基于ZXing的包完成&#xff0c;首先需要完成zxing.unity.dll&#xff0c;很多地方应该都能下载&#xff0c;也可以直接上github上下载&#xff08;下载点这里&#xff09;。 下载时注意一下版本就好&#xff0c;过老的zxing兼…

shell脚本中set -e的作用

set -e作用描述&#xff1a;shell中脚本运行中可能出现命令执行失败的情况&#xff0c;如果执行失败对后续有影响那么就应该退出脚本&#xff0c;不继续往下执行。set -e 命令就可以避免操作失败还继续往下执行的问题。 #!/bin/shset -eecho "make axp ..."VERSION$…