文章目录
- Directory Traversal - Directories
- Directory Traversal - Files
- Host Header Attack (Cache Poisoning)
- SQLiteManager Local File Inclusion
- Remote & Local File Inclusion (RFI/LFI)
- Restrict Device Access
- Server Side Request Forgery (SSRF)
- CSRF (Change Password)
- Buffer Overflow (Local)--low
- PHP CGI Remote Code Execution
- Unvalidated Redirects & Forwards (1)
Directory Traversal - Directories
使用..f返回上一级,不停遍历文件
Directory Traversal - Files
同上,这关可以直接读取文件内容
Host Header Attack (Cache Poisoning)
更改host值
SQLiteManager Local File Inclusion
1.2.0版本的SQLiteManager存在一个任意文件读取的漏洞 当请求/sqlite/的时候,通过在SQLiteManager_currentTheme字段添加文件路径
且添加SQLiteManager_currentLangue=deleted 可以将文件内容在响应包中返回
我们再burp抓包后再cooike中增加;SQLiteManager_currentTheme=../../../../../../../../../../../../../etc/passwd%00;SQLiteManager_currentLangue=deleted
就能得到返回值
Remote & Local File Inclusion (RFI/LFI)
通过抓包发现
所以修改注入点../../../../../../etc/passwd
Restrict Device Access
抓包,把UA改成 Android
Server Side Request Forgery (SSRF)
CSRF (Change Password)
- CSRF的发生点是否重要,比如修改密码、修改信息处的CSRF往往很重要,但是一些无关紧要功能的CSRF就会比较鸡肋。
- 单个CSRF漏洞在多数时候需要与用户交互才能触发;
- 有时候需要使用钓鱼手法让用户进行操作,钓鱼设计的好坏影响改漏洞是否会让用户中招;
- 一旦页面的重要功能有二次确认、token机制、验证referer或者验证码机制,CSRF往往瞬间失效
CSRF主要需要将修改密码的请求页面发送给用户,用户点开发送GET/POST请求,利用用户身份发送该请求才会生效; 仅在存在CSRF的功能点处能利用
XSS主要是通过窃取用户cookie,伪造成为用户身份,执行用户操作 几乎可以完成用户所有登录后的操作
越权主要是可以平级/低级用户甚至未登录用户身份,执行某操作,无需用户交互 仅在存在越权的功能点处能利用
这个的话,用burp创建一个csrf,诱导用户点击就行
剩下的基本一样
其他难度,采用了token机制防护
Buffer Overflow (Local)–low
首先我们需要了解一些缓冲区和缓冲区溢出的相关知识
缓冲区是指一块可用于接受和存放数据的存储区域,缓冲区一旦分配,其大小也就固定了,比如C语言中 char meetsec[12];那么meetsec字符串的大小就固定为了12字节;
在内存中,每个进程在其内存堆栈段中都拥有自己的栈,EBP指向当前栈的底部,而ESP总是指向栈顶。
函数调用会有3个步骤
1、按照调用约定,首先需要将函数参数按照逆序入栈,从而对函数调用进行设置。
2、将EIP保存到栈上(EIP是指令寄存器,存放当前指令的下一条指令的地址),这样程序在调用函数返回后能够在之前中断的地方继续执行下去,所以EIP存放的地址被称为返回地址。
3、执行call命令,将该函数地址放入EIP寄存器进行执行。
EIP存放的地址被称为返回地址,程序在调用函数返回后能够在之前中断的地方继续执行下去靠的就是EIP,如果EIP被其它破坏了,程序肯定要崩溃,这就是经典的缓冲区溢出原理
这里我打一个比方吧:
有一架飞机,分成两个部分:驾驶舱和客舱,客舱大小是固定的,视为缓冲区,驾驶舱决定飞机飞往什么地方,视为下一条指令存放处EIP。那么一旦客舱的人数足够多,客舱装不下了,客舱的人就会挤到驾驶舱,如果挤到驾驶舱里的刚好有坏人,那么它就可以劫持飞机到处飞行,这就是缓冲区溢出导致命令执行。
第一次接触缓冲区溢出,摆上大佬链接http://47.98.146.200/index.php/archives/40/
PHP CGI Remote Code Execution
cgi:通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,
可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。
CGI描述了服务器和请求处理程序之间传输数据的一种标准。
php-cgi:是php的解释器,是中间件和后端语言php进行通讯的协议。
php-cgi提供两种cgi方式交互:其一是cgi方式,其二是fastcgi方式
fastcgi是cgi的升级版,提升了一定的性能和安全性
php-fpm则是php-cgi的管理器,服务器上运行着多个php-cgi子进程,有php-fpm进行解析
PHP 5.3.12 和 5.4.x - 5.4.2,只要配置了启用脚本php-cgi且交互方式选择cgi,那么可以通过querystring传入命令参数,毕竟脚本本来就可以传入参数执行命令的(由于RFC3875中规定:当querystring中不包含没有解码的=号的情况下,要将querystring作为cgi的参数传入)
那么querystring又是什么?其实非常简单,?后面的内容
比如对于url: https://www.meetsec.cn/admin.php?news=2
那么querystring就是?news=2
这个是谁定义的,自然是php-cgi,如果你选cgi方式就是cgi,如果选fastcgi就是fastcgi,总有一款为你解析
cgi方式下有哪些参数可以使用
-c 指定php.ini文件的位置
-n 不要加载php.ini文件
-d 指定配置项
-b 启动fastcgi进程
-s 显示文件源码
-T 执行指定次该文件
-h和-? 显示帮助
Unvalidated Redirects & Forwards (1)
修改url即可,另一题一样,修改return url