网安入门10-文件上传(中国蚁剑)
什么是文件上传漏洞——来自GPT-4文件上传漏洞是一种常见的安全漏洞,它出现在Web应用程序中,允许攻击者上传恶意文件到服务器。这种漏洞可能导致严重的安全问题,例如服务器被入侵、数据泄露和应用程序功能受损。
文件上传漏洞通常由以下几个原因导致:
不充分的文件类型验证:Web应用程序应该仅允许用户上传特定类型的文件,例如图片、文档等。如果验证不严格,攻击者可能会上传恶意文件,如脚本或可执行文件。
不安全的文件名处理:攻击者可能会尝试使用特殊字符或路径遍历技术来上传文件到非预期的目录。这可能导致对服务器上其他文件的访问或覆盖。
不恰当的权限设置:如果上传目录的权限设置不当,攻击者可能会利用上传的文件执行恶意操作,例如执行代码或访问敏感数据。
为了防止文件上传漏洞,作为一名软件工程师,我们可以采取以下措施:
限制允许上传的文件类型:仅允许用户上传预定义的安全文件类型,并对文件扩展名和MIME类型进行严格验证。
对文件名进行安全处理:对上传的文件名进行过滤和验证,移除特殊字符,防止路径遍历攻击。
设置合适的权限:确保上传目录的权限设置正确,限制对敏感数据和系统文件的访问。
文 ...
网安入门09-Sql注入(绕过方法梳理)
ByPassSQL注入ByPass是指攻击者通过各种手段绕过应用程序中已经实施的SQL注入防御措施,例如输入恶意数据、修改请求头等方式,绕过过滤、转义、限制等操作,从而成功地执行恶意SQL语句。攻击者使用SQL注入ByPass技术可以让应用程序的防御措施失效,使得SQL注入攻击成功。因此,防范SQL注入攻击需要采取综合的安全措施,包括正确的SQL语句编写、使用参数化查询、限制用户输入、过滤和转义特殊字符等。
绕过空格
替换
说明
/**/
内联注释符
%a0
URL编码
%09
php里会被当作Tab键
%0a
php里会被当作换行键
()
括号
+
加号
绕过 引号" table_name=”users”
使用16进制编码Hex编码/解码 - 107000
使用拼接字符串例如将"username"替换为'username'+' '
绕过 逗号, Substr(database(),1,1)用from,for绕过 sel ...
网安入门08-Sql注入(报错注入&宽字节)
宽字节注入先了解一下什么是窄、宽字节
当某字符的大小为一个字节时,称其字符为窄字节.当某字符的大小为两个字节时,称其字符为宽字节.
所有英文默认占一个字节,汉字占两个字节常见的宽字节编码:GB2312,GBK,GB18030,BIG5,Shift_JIS等
为什么会产生宽字节注入,其中就涉及到编码格式的问题了,宽字节注入主要是源于程序员设置数据库编码与PHP编码设置为不同的两个编码格式从而导致产生宽字节注入
如果数据库使用的的是GBK编码而PHP编码为UTF8就可能出现注入问题,原因是程序员为了防止SQL注入,就会调用几种安全查询函数,将单引号或双引号进行转义操作,转义无非便是在单或双引号前加上斜杠(\)进行转义 ,但这样并非安全,因为数据库使用的是宽字节编码,两个连在一起的字符会被当做是一个汉字,而在PHP使用的UTF8编码则认为是两个独立的字符,如果我们在单或双引号前添加一个字符,使其和斜杠(\)组合被当作一个汉字,从而保留单或双引号,使其发挥应用的作用。但添加的字符的Ascii要大于128,两个字符才能组合成汉字 ,因为前一个ascii码要大于128,才到汉字的范围 , ...
网安入门07-Sql注入(二次注入)
渗透测试简介黑盒测试:看不到后端代码,只能依靠前端页面显示来判断是否有注入点白盒测试:可以看到后端代码,进行代码审计分析注入点白+黑:既可以看到后端代码,也可以看到前端页面的回显实战中黑盒占80%,客户提供源码白盒占5%,通过漏洞挖出源代码白+黑15%
二次注入Less24试图进行常规注入触发过滤机制,页面回显如下(滚开,你个愚蠢的黑客)点击忘记密码:注册账号页面,先试一下admin用户不让我注册!那我先注册一个admin‘#用户,密码123然后登录admin’#改一手密码最后再用admin账号和刚改好的密码222,就登录成功啦!
原理查看源代码,最重要的三个页面:登录,注册,改密码其中login.php是登录页面,login_crearte.php是注册页面,pass_change.php是改密码页面
login.php:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152<html><head></head> ...
网安入门06-Sql注入(时间盲注&万能密码)
以第9关为例:无论输入任何参数,页面显示一样,没有两种状态可以判断,无法使用布尔盲注
时间盲注123456789101112131415161718?id=1' and if(1=1,sleep(5),1)--+判断参数构造。?id=1'and if(length((select database()))>9,sleep(5),1)--+判断数据库名长度 ?id=1'and if(ascii(substr((select database()),1,1))=115,sleep(5),1)--+逐一判断数据库字符?id=1'and if(length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13,sleep(5),1)--+判断所有表名长度?id=1'and if(ascii(substr((select group_concat(table_name) from inform ...
网安入门00-OWASP Top 10 2021
OWASP(Open Web Application Security Project)翻译为“开放式Web应用程序安全项目”。它是一个非营利组织,致力于提高Web应用程序的安全性。OWASP提供了一系列资源,包括安全指南、工具和教程,帮助开发人员和安全专业人员提高Web应用程序的安全性。
OWASP Top 10是OWASP发布的一份针对Web应用程序的安全漏洞报告。该报告列出了Web应用程序中最常见和最危险的10种安全漏洞。OWASP Top 10可以帮助开发人员和安全专业人员识别和修复Web应用程序中的安全漏洞。
OWASP Top 10 2021源网址:OWASP Top 10 2021
排名
漏洞名称
简介
例子
A01
权限控制失效(Broken Access Control)
Web应用程序无法正确控制用户对资源的访问。这可能导致攻击者访问他们不应该能够访问的数据或功能。
一个Web应用程序允许用户上传文件。攻击者可以上传一个恶意脚本文件,该文件将在用户访问该文件时执行。
A02
加密机制失效(Cryptographic Failures)
Web应用程序 ...
网安入门05-Sql注入(布尔盲注&SqlMap)
盲注 页面不提供查询成功的结果,没有显示位,以第5关为例:
布尔盲注123456789101112131415161718192021222324252627猜测数据库?id=1' and length(database())=8-- -id=1' and left(database(),1)>'a' -- - 1id=1' and left(database(),1)>'z' -- - 0在 a-z 之间id=1' and left(database(),1)>'r' -- -1id=1' and left(database(),1)>'s' -- -0id=1' and left(database(),2)>'sa'-- -猜测表id=1' and ascii(substr((select table_name from information_schema.tables wher ...
网安入门04-Sql注入(联合查询注入)
什么是SQL注入————来自GPT-4SQL注入漏洞是一种常见的Web应用程序安全漏洞,它允许攻击者在应用程序的SQL查询中插入恶意代码。这种漏洞可能导致数据泄露、数据篡改、身份冒充和其他严重的安全问题。
SQL注入漏洞通常发生在应用程序未对用户输入进行充分验证和过滤的情况下。攻击者可以通过在输入字段中插入特殊字符和SQL代码,来操纵应用程序生成的SQL查询。这可能导致未经授权的数据访问、数据修改或执行恶意操作。
作为一名软件工程师,我们可以采取以下措施来防止SQL注入漏洞:
输入验证:对用户输入进行严格的验证,确保输入数据符合预期的格式和范围。拒绝包含特殊字符或SQL关键字的输入。
参数化查询:使用参数化查询(也称为预编译语句或绑定变量)来防止SQL注入。这种方法将用户输入与SQL查询分开处理,确保输入数据不会被解释为SQL代码。
使用存储过程:将数据库操作封装在存储过程中,以减少直接在应用程序中编写SQL查询的需求。存储过程可以帮助限制对数据库的访问权限,并提供更好的安全性。
最小权限原则:为应用程序数据库账户分配最小必要权限,以限制潜在的恶意操作。例如,如果应用程序只需要 ...
网安入门03——HTTP请求,编码
HTTP请求方法
状态码
HTTP头
X-Forwarded-For: 等价于Client-Ip X-Forwarded-For 请求头用于标识客户端的原始IP地址,特别是在通过代理服务器或负载均衡器等中间设备进行通信时。当请求从客户端传递到代理服务器时,代理服务器会将客户端的IP地址添加到X-Forwarded-For头中,以便目标服务器知道请求的来源。
Accept: Accept 请求头用于告知服务器客户端可以接受哪些媒体类型。这可以帮助服务器根据客户端的需求提供适当的内容。例如,客户端可以指定它可以接受的图像格式(如JPEG或PNG),服务器则可以根据此信息返回适当的图像。
Referer: Referer 请求头包含了发起请求的页面的URL。这有助于服务器了解请求是从哪个页面发起的,以便进行分析、记录或者实现特定的业务逻辑。例如,服务器可以根据Referer头来检查请求是否来自合法的来源,以防止跨站请求伪造(CSRF)攻击。
User-Agent:简称UA, User-Agent 请求头包含了关于发起请求的客户端(通常是浏览器)的信息,如浏览器名称、版本和操作系统。服务器 ...
网安入门02——信息收集
Whois查询站长之家
子域名查询在线子域名二级域名查询工具
Site:baidu.com
敏感目录/文件/CMS类型
CDN
旁站C段查询如果目标站是在无懈可击,那就可以尝试从同服务器部署的其他网站入手,拿下目标服务器的同时目标站也拿下了
同IP网站查询
端口开放信息服务和安全是相对应的,每开启一个端口,那么攻击面就大了一点,开启的端口越多,也就意味着服务器面临的威胁越大
端口扫描工具:nmap,御剑
GitHub查询可以在Github上查询网站的关键字或者路由,来看看有没有值得注意的信息。例如网站的源码和账号密码
谷歌hack语法